[PATCH v5 23/33] spi: dw: Properly set rx_end when not recieving
Sean Anderson
seanga2 at gmail.com
Fri Feb 28 22:05:41 CET 2020
The difference between rx and rx_end is used by tx_max when calculating how
much to write. If we aren't reading anything, this could cause us to let
the tx fifo bottom out.
Signed-off-by: Sean Anderson <seanga2 at gmail.com>
---
Changes in v5:
- New
drivers/spi/designware_spi.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
index 613eb0d0e6..b80e99ee7f 100644
--- a/drivers/spi/designware_spi.c
+++ b/drivers/spi/designware_spi.c
@@ -427,7 +427,8 @@ static int dw_spi_xfer(struct udevice *dev, unsigned int bitlen,
priv->tx = (void *)tx;
priv->tx_end = priv->tx + priv->len;
priv->rx = rx;
- priv->rx_end = priv->rx + priv->len;
+ /* If we aren't recieving, rx_end needs to be valid for tx_max() */
+ priv->rx_end = priv->rx + (rx ? priv->len : 0);
/* Disable controller before writing control registers */
spi_enable_chip(priv, 0);
--
2.25.0
More information about the U-Boot
mailing list