forked from mirrors/linux
		
	spi: cadence: Add usleep_range() for cdns_spi_fill_tx_fifo()
In case of xspi work in busy condition, may send bytes failed. once something wrong, spi controller did't work any more My test found this situation appear in both of read/write process. so when TX FIFO is full, add one byte delay before send data; Signed-off-by: sxauwsk <sxauwsk@163.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
		
							parent
							
								
									10b4640833
								
							
						
					
					
						commit
						49530e6411
					
				
					 1 changed files with 8 additions and 0 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 sxauwsk
						sxauwsk