]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
dmaengine: dma-axi-dmac: Gracefully terminate SW cyclic transfers
authorNuno Sá <nuno.sa@analog.com>
Tue, 3 Mar 2026 10:25:03 +0000 (10:25 +0000)
committerVinod Koul <vkoul@kernel.org>
Mon, 9 Mar 2026 07:28:21 +0000 (08:28 +0100)
commitca3bf200dea50fada92ec371e9e294b18a589676
treea59dfc9ddf195214fa3c8ff2c92db7497833d81a
parentc60990ba1fb2a6c1ff2789e610aa130f3047a2ff
dmaengine: dma-axi-dmac: Gracefully terminate SW cyclic transfers

As of now, to terminate a cyclic transfer, one pretty much needs to use
brute force and terminate all transfers with .device_terminate_all().
With this change, when a cyclic transfer terminates (and generates an
EOT interrupt), look at any new pending transfer with the DMA_PREP_LOAD_EOT
flag set. If there is one, the current cyclic transfer is terminated and
the next one is enqueued. If the flag is not set, that transfer is ignored.

Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Link: https://patch.msgid.link/20260303-axi-dac-cyclic-support-v2-4-0db27b4be95a@analog.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dma-axi-dmac.c