From 832a0cefbdbb8c78f3779cefb315d17ea8e9ad1b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 3 Feb 2025 17:50:20 +0000 Subject: [PATCH] spi: dw: Wait for idle after TX If this is a DMA transfer, and if there is no simultaneous RX transfer, wait for the interface to go idle before reporting that TX is done. Link: https://forums.raspberrypi.com/viewtopic.php?t=383027 Signed-off-by: Phil Elwell --- drivers/spi/spi-dw-dma.c | 6 ++++++ 1 file changed, 6 insertions(+) --- a/drivers/spi/spi-dw-dma.c +++ b/drivers/spi/spi-dw-dma.c @@ -304,6 +304,12 @@ static int dw_spi_dma_wait_tx_done(struc return -EIO; } + if (!xfer->rx_buf) { + delay.value = dws->n_bytes * BITS_PER_BYTE; + while (dw_readl(dws, DW_SPI_SR) & DW_SPI_SR_BUSY) + spi_delay_exec(&delay, xfer); + } + return 0; }