aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-omap2-mcspi.c
diff options
context:
space:
mode:
authorStefan Sørensen <stefan.sorensen@spectralink.com>2014-02-02 10:24:12 -0500
committerMark Brown <broonie@linaro.org>2014-02-03 13:25:48 -0500
commit2bd16e3e23d9df41592c6b257c59b6860a9cc3ea (patch)
tree17aac9813e1eefefe83a5b30038dd525f93fe1e1 /drivers/spi/spi-omap2-mcspi.c
parent38dbfb59d1175ef458d006556061adeaa8751b72 (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.c7
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) {