summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2016-12-08 10:39:22 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-01-10 08:27:53 +0100
commitdcb880cb8518b79f900106421510275b7a87a73c (patch)
tree0904dfee14c38c0d928a5728b4eebe9d3bd0b516
parent45791cc9db1f0d1b229748e4e332096c136083ea (diff)
downloadbarebox-dcb880cb8518b79f900106421510275b7a87a73c.tar.gz
barebox-dcb880cb8518b79f900106421510275b7a87a73c.tar.xz
spi: mvebu: only read from bus when data is needed
This optimization reduced the time to transfer 40 MB at 50 MHz from 214 seconds to 203 seconds. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/spi/mvebu_spi.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/spi/mvebu_spi.c b/drivers/spi/mvebu_spi.c
index 63d8083b2d..35a0c002aa 100644
--- a/drivers/spi/mvebu_spi.c
+++ b/drivers/spi/mvebu_spi.c
@@ -278,12 +278,12 @@ static int mvebu_spi_do_transfer(struct spi_device *spi,
return ret;
}
- data = readl(priv->base + SPI_DATA_IN);
-
- if (rxdata)
+ if (rxdata) {
+ data = readl(priv->base + SPI_DATA_IN);
*rxdata++ = (data & 0xff);
- if (rxdata && priv->data16)
- *rxdata++ = (data >> 8) & 0xff;
+ if (priv->data16)
+ *rxdata++ = (data >> 8) & 0xff;
+ }
}
return 0;