In cyclic mode, there is no additional descriptor pushed to collect outstanding data on channel teardown. Therefore no need to wait for this descriptor to come back. Without this terminating aplay cmd outputs false error msg like: [ 116.402800] ti-bcdma 485c0100.dma-controller: chan1 teardown timeout! Signed-off-by: Vignesh Raghavendra <vigneshr@xxxxxx> --- drivers/dma/ti/k3-udma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index 9abb08d353ca0..c9a1b2f312603 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -3924,7 +3924,7 @@ static void udma_synchronize(struct dma_chan *chan) vchan_synchronize(&uc->vc); - if (uc->state == UDMA_CHAN_IS_TERMINATING) { + if (uc->state == UDMA_CHAN_IS_TERMINATING && !uc->cyclic) { timeout = wait_for_completion_timeout(&uc->teardown_completed, timeout); if (!timeout) { -- 2.35.1