Message ID | 1469914104-13006-1-git-send-email-prabhakar.csengg@gmail.com |
---|---|
State | Accepted |
Commit | d2998286fc58e3ac6c75ed4d3a1e77b618bbf2ae |
Delegated to: | Jagannadha Sutradharudu Teki |
Headers | show |
On 31 July 2016 at 02:58, Lad Prabhakar <prabhakar.csengg@gmail.com> wrote: > From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com> > > During spi transfer, for example: > sspi 1:1.0 8 ff > > the rx_len values will be: > rx_len = 0 > rx_len = 4294967295 > > This caused a busy looping during xfer, this patch fixes it > by adding a check while reading the rx fifo > > Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> > Cc: Michal Simek <michal.simek@xilinx.com> > Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com> > Cc: Jagan Teki <jteki@openedev.com> Applied to u-boot-spi/master
diff --git a/drivers/spi/zynq_spi.c b/drivers/spi/zynq_spi.c index 09ae1be..dd3de27 100644 --- a/drivers/spi/zynq_spi.c +++ b/drivers/spi/zynq_spi.c @@ -230,7 +230,7 @@ static int zynq_spi_xfer(struct udevice *dev, unsigned int bitlen, /* Read the data from RX FIFO */ status = readl(®s->isr); - while (status & ZYNQ_SPI_IXR_RXNEMPTY_MASK) { + while ((status & ZYNQ_SPI_IXR_RXNEMPTY_MASK) && rx_len) { buf = readl(®s->rxdr); if (rx_buf) *rx_buf++ = buf;