aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi.c
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2014-02-10 00:08:05 +0800
committerMark Brown <broonie@linaro.org>2014-02-10 12:51:54 +0000
commit052eb2d49006fe53bc5f62a196dce23345d4a907 (patch)
tree462e6776c9b49a341f81a0804cd385f48e600dee /drivers/spi/spi.c
parentLinus 3.14-rc1 (diff)
downloadlinux-dev-052eb2d49006fe53bc5f62a196dce23345d4a907.tar.xz
linux-dev-052eb2d49006fe53bc5f62a196dce23345d4a907.zip
spi: core: Set max_speed_hz of spi_device default to max_speed_hz of controller
In __spi_validate(), xfer->speed_hz is set to be spi->max_speed_hz if it is not set for this transfer. However, if spi->max_speed_hz is also not set, xfer->speed_hz is 0. Some drivers (e.g. au1550, tegra114, tegra20-sflash, tegra20-slink, etc.) then use below code to avoid setting xfer->speed_hz to 0. /* Set speed to the spi max fequency if spi device has not set */ spi->max_speed_hz = spi->max_speed_hz ? : tspi->spi_max_frequency; Let's handle it in spi core. If spi->max_speed_hz is not set, make it default to spi->master->max_speed_hz. So In __spi_validate() if both xfer->speed_hz and spi->max_speed_hz are not set, xfer->speed_hz will be set to spi->master->max_speed_hz. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/spi/spi.c')
-rw-r--r--drivers/spi/spi.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 23756b0f9036..e727ddda78bf 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1599,6 +1599,9 @@ int spi_setup(struct spi_device *spi)
if (!spi->bits_per_word)
spi->bits_per_word = 8;
+ if (!spi->max_speed_hz)
+ spi->max_speed_hz = spi->master->max_speed_hz;
+
if (spi->master->setup)
status = spi->master->setup(spi);