spi: davinci: Drop the preload of TX buffer before read/writes operations
A write to the TX buffer is performed before entering the loop to "avoid clock starvation". This sometimes results in subsequent writes in davinci_spi_xfer_data() to occur while the TXFULL bit is asserted, leading to write failures. Remove the preload of the TX buffer. Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
This commit is contained in:

committed by
Tom Rini

parent
7bc5f66f55
commit
983fd3d06d
@@ -129,9 +129,6 @@ static int davinci_spi_read(struct davinci_spi_slave *ds, unsigned int len,
|
||||
while (readl(&ds->regs->buf) & SPIBUF_TXFULL_MASK)
|
||||
;
|
||||
|
||||
/* preload the TX buffer to avoid clock starvation */
|
||||
writel(data1_reg_val, &ds->regs->dat1);
|
||||
|
||||
/* keep reading 1 byte until only 1 byte left */
|
||||
while ((len--) > 1)
|
||||
*rxp++ = davinci_spi_xfer_data(ds, data1_reg_val);
|
||||
@@ -159,12 +156,6 @@ static int davinci_spi_write(struct davinci_spi_slave *ds, unsigned int len,
|
||||
while (readl(&ds->regs->buf) & SPIBUF_TXFULL_MASK)
|
||||
;
|
||||
|
||||
/* preload the TX buffer to avoid clock starvation */
|
||||
if (len > 2) {
|
||||
writel(data1_reg_val | *txp++, &ds->regs->dat1);
|
||||
len--;
|
||||
}
|
||||
|
||||
/* keep writing 1 byte until only 1 byte left */
|
||||
while ((len--) > 1)
|
||||
davinci_spi_xfer_data(ds, data1_reg_val | *txp++);
|
||||
|
Reference in New Issue
Block a user