diff options
author | Axel Lin <axel.lin@ingics.com> | 2014-02-10 00:08:05 +0800 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-02-10 12:51:54 +0000 |
commit | 052eb2d49006fe53bc5f62a196dce23345d4a907 (patch) | |
tree | 462e6776c9b49a341f81a0804cd385f48e600dee /drivers/spi/spi.c | |
parent | 38dbfb59d1175ef458d006556061adeaa8751b72 (diff) | |
download | op-kernel-dev-052eb2d49006fe53bc5f62a196dce23345d4a907.zip op-kernel-dev-052eb2d49006fe53bc5f62a196dce23345d4a907.tar.gz |
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.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 23756b0..e727ddd 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); |