dmaengine: imx-sdma: restart cyclic channel if needed
authorTomasz Moń <tomasz.mon@camlingroup.com>
Mon, 17 Jan 2022 09:19:54 +0000 (10:19 +0100)
committerVinod Koul <vkoul@kernel.org>
Tue, 15 Feb 2022 05:41:06 +0000 (11:11 +0530)
commit5b215c28b923539a04587b6a3f78a449f967ae32
treefc8c6bc4bc185816f1577dd64468e758765e0335
parent4ae7094011bea9c1d5b2ea9d3d4d640b394e9630
dmaengine: imx-sdma: restart cyclic channel if needed

Under heavy load resulting in high interrupt latencies, it is possible
for imx UART requests to completely fill DMA buffer. When DMA channel
is triggered and no SDMA owned buffer is available, SDMA stops. Thanks
to the autoRTS feature, there is no data loss due to the SDMA stop if
the UART is using hardware flow control.

According to DMA Engine API Guide, DMA cyclic operation is performed
until explicitly stopped. Restart the buffer after handling channel loop
if the channel was stopped by SDMA.

Signed-off-by: Tomasz Moń <tomasz.mon@camlingroup.com>
Link: https://lore.kernel.org/r/20220117091955.1038937-1-tomasz.mon@camlingroup.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/imx-sdma.c