diff options
author | Stefan Sørensen <stefan.sorensen@spectralink.com> | 2014-02-02 10:24:12 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-02-03 13:25:48 -0500 |
commit | 2bd16e3e23d9df41592c6b257c59b6860a9cc3ea (patch) | |
tree | 17aac9813e1eefefe83a5b30038dd525f93fe1e1 /drivers/spi/spi-omap2-mcspi.c | |
parent | 38dbfb59d1175ef458d006556061adeaa8751b72 (diff) |
spi: omap2-mcspi: Do not configure the controller on each transfer unless needed
spi_transfer->speed_hz and spi_transfer->bits_per_word used to only be set when
not using the default settings but are not set on every transfer, causing
omap2_mcspi_setup_transfer to be called on each transfer. This patch changes
the check to only call omap2_mcspi_setup_transfer if the settings needs to be
changed.
Signed-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/spi/spi-omap2-mcspi.c')
-rw-r--r-- | drivers/spi/spi-omap2-mcspi.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index a72127f08e39..965539b0dbfb 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c | |||
@@ -1057,12 +1057,15 @@ static void omap2_mcspi_work(struct omap2_mcspi *mcspi, struct spi_message *m) | |||
1057 | status = -EINVAL; | 1057 | status = -EINVAL; |
1058 | break; | 1058 | break; |
1059 | } | 1059 | } |
1060 | if (par_override || t->speed_hz || t->bits_per_word) { | 1060 | if (par_override || |
1061 | (t->speed_hz != spi->max_speed_hz) || | ||
1062 | (t->bits_per_word != spi->bits_per_word)) { | ||
1061 | par_override = 1; | 1063 | par_override = 1; |
1062 | status = omap2_mcspi_setup_transfer(spi, t); | 1064 | status = omap2_mcspi_setup_transfer(spi, t); |
1063 | if (status < 0) | 1065 | if (status < 0) |
1064 | break; | 1066 | break; |
1065 | if (!t->speed_hz && !t->bits_per_word) | 1067 | if (t->speed_hz == spi->max_speed_hz && |
1068 | t->bits_per_word == spi->bits_per_word) | ||
1066 | par_override = 0; | 1069 | par_override = 0; |
1067 | } | 1070 | } |
1068 | if (cd && cd->cs_per_word) { | 1071 | if (cd && cd->cs_per_word) { |