You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
From 78948302252dcffa18716390f784ba03e4320c67 Mon Sep 17 00:00:00 2001
|
|
From: Kamal Mostafa <kamal@whence.com>
|
|
Date: Mon, 22 Oct 2012 15:52:44 -0700
|
|
Subject: [PATCH 046/196] spi/spi-bcm2708: respect per-transfer SPI clock
|
|
speed_hz value
|
|
|
|
The bcm2708 SPI driver's bcm2708_process_transfer() was ignoring the
|
|
per-transfer speed_hz value even when it was provided (it always just
|
|
used the spi device's max_speed_hz value). Now, per-transfer speed_hz
|
|
values are respected.
|
|
|
|
Also added debug print to bcm2708_setup_state() to help keep an eye on
|
|
the configured SPI parameters.
|
|
|
|
Signed-off-by: Kamal Mostafa <kamal@whence.com>
|
|
---
|
|
drivers/spi/spi-bcm2708.c | 7 ++++++-
|
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
|
|
index 8513704..b74aa32 100644
|
|
--- a/drivers/spi/spi-bcm2708.c
|
|
+++ b/drivers/spi/spi-bcm2708.c
|
|
@@ -259,6 +259,10 @@ static int bcm2708_setup_state(struct spi_master *master,
|
|
if (state) {
|
|
state->cs = cs;
|
|
state->cdiv = cdiv;
|
|
+ dev_dbg(dev, "setup: want %d Hz; "
|
|
+ "bus_hz=%lu / cdiv=%u == %lu Hz; "
|
|
+ "mode %u: cs 0x%08X\n",
|
|
+ hz, bus_hz, cdiv, bus_hz/cdiv, mode, cs);
|
|
}
|
|
|
|
return 0;
|
|
@@ -277,7 +281,8 @@ static int bcm2708_process_transfer(struct bcm2708_spi *bs,
|
|
|
|
if (xfer->bits_per_word || xfer->speed_hz) {
|
|
ret = bcm2708_setup_state(spi->master, &spi->dev, &state,
|
|
- spi->max_speed_hz, spi->chip_select, spi->mode,
|
|
+ xfer->speed_hz ? xfer->speed_hz : spi->max_speed_hz,
|
|
+ spi->chip_select, spi->mode,
|
|
spi->bits_per_word);
|
|
if (ret)
|
|
return ret;
|
|
--
|
|
1.9.1
|
|
|
|
|