Re: [PATCH] [PATCH v1] spi: cadence: Add usleep_range() for cdns_spi_fill_tx_fifo()

2018-04-16 Thread Mark Brown
On Mon, Apr 16, 2018 at 02:46:40PM +0800, sxauwsk wrote:
> 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;

This looks sensible but doesn't seem to apply against current code,
please check and resend.  

>   /* When xspi in busy condition, bytes may send failed,
> -  * caused communication failure so add one byte delay
> +  * then spi control did't work thoroughly, add one byte delay
>*/
> - usleep_range(10, 20);
> + if (cdns_spi_read(xspi, CDNS_SPI_ISR_OFFSET) &
> + CDNS_SPI_IXR_TXFULL_MASK)
> + usleep_range(10, 20);

It looks like this may have been sent based on a previous version of
your patch, not against the driver as it is now.


signature.asc
Description: PGP signature


Re: [PATCH] [PATCH v1] spi: cadence: Add usleep_range() for cdns_spi_fill_tx_fifo()

2018-04-16 Thread Mark Brown
On Mon, Apr 16, 2018 at 02:46:40PM +0800, sxauwsk wrote:
> 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;

This looks sensible but doesn't seem to apply against current code,
please check and resend.  

>   /* When xspi in busy condition, bytes may send failed,
> -  * caused communication failure so add one byte delay
> +  * then spi control did't work thoroughly, add one byte delay
>*/
> - usleep_range(10, 20);
> + if (cdns_spi_read(xspi, CDNS_SPI_ISR_OFFSET) &
> + CDNS_SPI_IXR_TXFULL_MASK)
> + usleep_range(10, 20);

It looks like this may have been sent based on a previous version of
your patch, not against the driver as it is now.


signature.asc
Description: PGP signature


[PATCH] [PATCH v1] spi: cadence: Add usleep_range() for cdns_spi_fill_tx_fifo()

2018-04-16 Thread sxauwsk
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 
Signed-off-by: guojian 
Signed-off-by: wangshikai 
---
 drivers/spi/spi-cadence.c |6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 66ae055..9694042 100644
--- a/drivers/spi/spi-cadence.c
+++ b/drivers/spi/spi-cadence.c
@@ -315,9 +315,11 @@ static void cdns_spi_fill_tx_fifo(struct cdns_spi *xspi)
   (xspi->tx_bytes > 0)) {
 
/* When xspi in busy condition, bytes may send failed,
-* caused communication failure so add one byte delay
+* then spi control did't work thoroughly, add one byte delay
 */
-   usleep_range(10, 20);
+   if (cdns_spi_read(xspi, CDNS_SPI_ISR_OFFSET) &
+   CDNS_SPI_IXR_TXFULL_MASK)
+   usleep_range(10, 20);
 
if (xspi->txbuf)
cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
-- 
1.7.9.5




[PATCH] [PATCH v1] spi: cadence: Add usleep_range() for cdns_spi_fill_tx_fifo()

2018-04-16 Thread sxauwsk
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 
Signed-off-by: guojian 
Signed-off-by: wangshikai 
---
 drivers/spi/spi-cadence.c |6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 66ae055..9694042 100644
--- a/drivers/spi/spi-cadence.c
+++ b/drivers/spi/spi-cadence.c
@@ -315,9 +315,11 @@ static void cdns_spi_fill_tx_fifo(struct cdns_spi *xspi)
   (xspi->tx_bytes > 0)) {
 
/* When xspi in busy condition, bytes may send failed,
-* caused communication failure so add one byte delay
+* then spi control did't work thoroughly, add one byte delay
 */
-   usleep_range(10, 20);
+   if (cdns_spi_read(xspi, CDNS_SPI_ISR_OFFSET) &
+   CDNS_SPI_IXR_TXFULL_MASK)
+   usleep_range(10, 20);
 
if (xspi->txbuf)
cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
-- 
1.7.9.5