diff options
Diffstat (limited to 'drivers/spi/spi-cadence.c')
| -rw-r--r-- | drivers/spi/spi-cadence.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c index 5c9516ae4942..4a001634023e 100644 --- a/drivers/spi/spi-cadence.c +++ b/drivers/spi/spi-cadence.c @@ -313,6 +313,14 @@ static void cdns_spi_fill_tx_fifo(struct cdns_spi *xspi)  	while ((trans_cnt < CDNS_SPI_FIFO_DEPTH) &&  	       (xspi->tx_bytes > 0)) { + +		/* When xspi in busy condition, bytes may send failed, +		 * then spi control did't work thoroughly, add one byte delay +		 */ +		if (cdns_spi_read(xspi, CDNS_SPI_ISR) & +		    CDNS_SPI_IXR_TXFULL) +			usleep_range(10, 20); +  		if (xspi->txbuf)  			cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);  		else | 
