Previously the stream_running() function didn't check if the DMA was halted. This caused hangs in recent versions of MicroBlaze u-boot. Correct stream_running() to check DMASR_HALTED as well as DMACR_RUNSTOP.
Signed-off-by: Alistair Francis <alistair.fran...@xilinx.com> Reviewed-by: Sai Pavan Boddu <saip...@xilinx.com> --- hw/dma/xilinx_axidma.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index d06002d..27fba40 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -154,7 +154,8 @@ static inline int stream_resetting(struct Stream *s) static inline int stream_running(struct Stream *s) { - return s->regs[R_DMACR] & DMACR_RUNSTOP; + return s->regs[R_DMACR] & DMACR_RUNSTOP && + !(s->regs[R_DMASR] & DMASR_HALTED); } static inline int stream_idle(struct Stream *s) -- 1.7.1