diff options
Diffstat (limited to 'drivers/spi/sh_qspi.c')
-rw-r--r-- | drivers/spi/sh_qspi.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/spi/sh_qspi.c b/drivers/spi/sh_qspi.c index 8eaa6744cc..d7f558a541 100644 --- a/drivers/spi/sh_qspi.c +++ b/drivers/spi/sh_qspi.c @@ -11,6 +11,7 @@ #include <console.h> #include <malloc.h> #include <spi.h> +#include <wait_bit.h> #include <asm/arch/rmobile.h> #include <asm/io.h> @@ -236,23 +237,17 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, rdata = din; while (nbyte > 0) { - while (!(readb(&ss->regs->spsr) & SPSR_SPTEF)) { - if (ctrlc()) { - puts("abort\n"); - return 1; - } - udelay(10); - } + ret = wait_for_bit_8(&ss->regs->spsr, SPSR_SPTEF, + true, 1000, true); + if (ret) + return ret; writeb(*tdata, (u8 *)(&ss->regs->spdr)); - while (!(readb(&ss->regs->spsr) & SPSR_SPRFF)) { - if (ctrlc()) { - puts("abort\n"); - return 1; - } - udelay(10); - } + ret = wait_for_bit_8(&ss->regs->spsr, SPSR_SPRFF, + true, 1000, true); + if (ret) + return ret; *rdata = readb((u8 *)(&ss->regs->spdr)); |