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

2018-04-17 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 
---
 drivers/spi/spi-cadence.c |8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 5c9516a..4a00163 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
--
1.7.9.5



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

2018-04-17 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 
---
 drivers/spi/spi-cadence.c |8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 5c9516a..4a00163 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
--
1.7.9.5



[PATCH] 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 then caused
communication failure. once something wrong, spi controller did't work any more.

My test found this situation appear in both of read/write operation.
so when TX FIFO is full, add one byte delay before send data.

Signed-off-by: sxauwsk 
---
 drivers/spi/spi-cadence.c |8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 5c9516a..9694042 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_OFFSET) &
+   CDNS_SPI_IXR_TXFULL_MASK)
+   usleep_range(10, 20);
+
if (xspi->txbuf)
cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
else
--
1.7.9.5




[PATCH] 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 then caused
communication failure. once something wrong, spi controller did't work any more.

My test found this situation appear in both of read/write operation.
so when TX FIFO is full, add one byte delay before send data.

Signed-off-by: sxauwsk 
---
 drivers/spi/spi-cadence.c |8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 5c9516a..9694042 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_OFFSET) &
+   CDNS_SPI_IXR_TXFULL_MASK)
+   usleep_range(10, 20);
+
if (xspi->txbuf)
cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
else
--
1.7.9.5




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

2018-04-13 Thread Mark Brown
On Mon, Apr 09, 2018 at 07:16:50PM +0800, sxauwsk wrote:
> In case of xspi work in busy condition, may send bytes failed.
> Add one bytes delay

>   while ((trans_cnt < CDNS_SPI_FIFO_DEPTH) &&
>  (xspi->tx_bytes > 0)) {
> +
> + /* When xspi in busy condition, bytes may send failed,
> +  * caused communication failure so add one byte delay
> +  */
> + usleep_range(10, 20);
> +
>   if (xspi->txbuf)
>   cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);

This looks like it adds a byte of delay on every read/write - that
seems like a lot of overhead for something that sounds like it's
probably only an issue when the FIFO is full?  Do we need to do this for
every operation, and is it needed for read or is it just write?


signature.asc
Description: PGP signature


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

2018-04-13 Thread Mark Brown
On Mon, Apr 09, 2018 at 07:16:50PM +0800, sxauwsk wrote:
> In case of xspi work in busy condition, may send bytes failed.
> Add one bytes delay

>   while ((trans_cnt < CDNS_SPI_FIFO_DEPTH) &&
>  (xspi->tx_bytes > 0)) {
> +
> + /* When xspi in busy condition, bytes may send failed,
> +  * caused communication failure so add one byte delay
> +  */
> + usleep_range(10, 20);
> +
>   if (xspi->txbuf)
>   cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);

This looks like it adds a byte of delay on every read/write - that
seems like a lot of overhead for something that sounds like it's
probably only an issue when the FIFO is full?  Do we need to do this for
every operation, and is it needed for read or is it just write?


signature.asc
Description: PGP signature


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

2018-04-10 Thread sxauwsk
In case of xspi work in busy condition, may send bytes failed.
Add one bytes delay

Signed-off-by: sxauwsk 
Signed-off-by: guojian 
Signed-off-by: wangshikai 
---
 drivers/spi/spi-cadence.c |6 ++
 1 file changed, 6 insertions(+)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 5c9516a..66ae055 100644
--- a/drivers/spi/spi-cadence.c
+++ b/drivers/spi/spi-cadence.c
@@ -313,6 +313,12 @@ 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,
+* caused communication failure so add one byte delay
+*/
+   usleep_range(10, 20);
+
if (xspi->txbuf)
cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
else
-- 
1.7.9.5




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

2018-04-10 Thread sxauwsk
In case of xspi work in busy condition, may send bytes failed.
Add one bytes delay

Signed-off-by: sxauwsk 
Signed-off-by: guojian 
Signed-off-by: wangshikai 
---
 drivers/spi/spi-cadence.c |6 ++
 1 file changed, 6 insertions(+)

diff --git a/drivers/spi/spi-cadence.c b/drivers/spi/spi-cadence.c
index 5c9516a..66ae055 100644
--- a/drivers/spi/spi-cadence.c
+++ b/drivers/spi/spi-cadence.c
@@ -313,6 +313,12 @@ 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,
+* caused communication failure so add one byte delay
+*/
+   usleep_range(10, 20);
+
if (xspi->txbuf)
cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
else
-- 
1.7.9.5




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

2018-04-10 Thread Mark Brown
On Tue, Apr 10, 2018 at 09:12:32PM +0800, sxau...@163.com wrote:
> 
> 
> 
> 
> sxau...@163.com

Please submit patches in the format described in SubmittingPatches, my
mail program isn't seeing anything in the mail except what's quoted
above.


signature.asc
Description: PGP signature


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

2018-04-10 Thread Mark Brown
On Tue, Apr 10, 2018 at 09:12:32PM +0800, sxau...@163.com wrote:
> 
> 
> 
> 
> sxau...@163.com

Please submit patches in the format described in SubmittingPatches, my
mail program isn't seeing anything in the mail except what's quoted
above.


signature.asc
Description: PGP signature