summaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2016-12-08 11:20:50 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-01-10 08:27:53 +0100
commit34e083ea640bd227be9c49f757032bb96b808c5e (patch)
tree3fc397f1c23ad570aacb445116cf5f4b7b53e224 /drivers/spi
parentdcb880cb8518b79f900106421510275b7a87a73c (diff)
downloadbarebox-34e083ea640bd227be9c49f757032bb96b808c5e.tar.gz
barebox-34e083ea640bd227be9c49f757032bb96b808c5e.tar.xz
spi: mvebu: use wait_on_timeout instead of a loop with udelay.
This looks nicer and reduces the time to transfer 40 MB at 50 MHz from 203 seconds to 87 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/spi')
-rw-r--r--drivers/spi/mvebu_spi.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/spi/mvebu_spi.c b/drivers/spi/mvebu_spi.c
index 35a0c002aa..6921cb8cd7 100644
--- a/drivers/spi/mvebu_spi.c
+++ b/drivers/spi/mvebu_spi.c
@@ -233,13 +233,11 @@ static int mvebu_spi_setup(struct spi_device *spi)
static inline int mvebu_spi_wait_for_read_ready(struct mvebu_spi *p)
{
- int timeout = 100;
- while ((readl(p->base + SPI_IF_CTRL) & IF_READ_READY) == 0 &&
- timeout--)
- udelay(1);
- if (timeout < 0)
- return -EIO;
- return 0;
+ int ret;
+
+ ret = wait_on_timeout(100 * USECOND,
+ readl(p->base + SPI_IF_CTRL) & IF_READ_READY);
+ return ret;
}
static int mvebu_spi_do_transfer(struct spi_device *spi,