From: Nicholas Graumann <[email protected]>

When polling for a stopped transfer in AXI DMA mode, in some cases the
status of the channel may indicate IDLE instead of HALTED if the
channel was reset due to an error.

Signed-off-by: Nicholas Graumann <[email protected]>
Signed-off-by: Radhey Shyam Pandey <[email protected]>
---
 drivers/dma/xilinx/xilinx_dma.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c
index b5dd62a..0896e07 100644
--- a/drivers/dma/xilinx/xilinx_dma.c
+++ b/drivers/dma/xilinx/xilinx_dma.c
@@ -1092,8 +1092,9 @@ static int xilinx_dma_stop_transfer(struct 
xilinx_dma_chan *chan)
 
        /* Wait for the hardware to halt */
        return xilinx_dma_poll_timeout(chan, XILINX_DMA_REG_DMASR, val,
-                                      val & XILINX_DMA_DMASR_HALTED, 0,
-                                      XILINX_DMA_LOOP_COUNT);
+                                      val | (XILINX_DMA_DMASR_IDLE |
+                                             XILINX_DMA_DMASR_HALTED),
+                                      0, XILINX_DMA_LOOP_COUNT);
 }
 
 /**
-- 
2.7.4

Reply via email to