diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2016-12-08 10:39:22 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-01-10 08:27:53 +0100 |
commit | dcb880cb8518b79f900106421510275b7a87a73c (patch) | |
tree | 0904dfee14c38c0d928a5728b4eebe9d3bd0b516 /drivers | |
parent | 45791cc9db1f0d1b229748e4e332096c136083ea (diff) | |
download | barebox-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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/spi/mvebu_spi.c | 10 |
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; |