Hi Vignesh, On 15/02/2022 06:41, Vignesh Raghavendra wrote: > 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! are you sure it is aplay? It is MEM_TO_DEV, we only use the flush descriptor for DEV_TO_MEM. MEM_TO_DEV can 'disconnect' from the peripheral to flush out the FIFO. I have not seen this on am654, j721e. I can not recall seeing this on the capture side either. The cyclic TR should be able to drain the DEV_TO_MEM by itself and the TR should terminate. > 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) { -- Péter