]> git.ipfire.org Git - thirdparty/linux.git/commit
dmaengine: dw-axi-dmac: fix PM for system sleep and channel alloc
authorTze Yee Ng <tze.yee.ng@altera.com>
Mon, 25 May 2026 07:10:22 +0000 (00:10 -0700)
committerVinod Koul <vkoul@kernel.org>
Thu, 11 Jun 2026 05:28:42 +0000 (10:58 +0530)
commitdf0c2dc68770cf43f15df40b184df030b850ea05
tree3262cb5a9a9a556a6814000108ab8ec4aefa8682
parentdc6d681e1571c89cd38145926fb2513d70a633e1
dmaengine: dw-axi-dmac: fix PM for system sleep and channel alloc

The driver only had runtime PM callbacks. If a channel stayed allocated
across system suspend/resume, the runtime usage count could remain
non-zero while hardware state (DMAC_CFG, clocks) was lost, and
axi_dma_runtime_resume() would not run to restore it.

Add system-sleep PM ops that use pm_runtime_force_suspend() and
pm_runtime_force_resume() so suspend/resume reuses the existing
axi_dma_suspend() and axi_dma_resume() paths.

Replace pm_runtime_get() with pm_runtime_resume_and_get() in
dma_chan_alloc_chan_resources() so clocks are enabled before a client
can immediately submit a transfer and touch MMIO.

Signed-off-by: Tze Yee Ng <tze.yee.ng@altera.com>
Link: https://patch.msgid.link/18bf778a3a1cc2f377ef8eb0d1508d8ac6371896.1779688569.git.tze.yee.ng@altera.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c