mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
dmaengine: dw-edma: Clear stale requests on termination
terminate_all() can finish immediately when the channel is unconfigured,
paused, idle, or already stopped in hardware. A pending PAUSE request can
survive these paths and block issue_pending() even after termination.
Clear the request whenever termination leaves the channel idle. A running
channel keeps its STOP request until the interrupt handler consumes it.
Fixes: e63d79d1ff ("dmaengine: Add Synopsys eDMA IP core driver")
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Koichiro Den <den@valinux.co.jp>
Link: https://patch.msgid.link/20260717180639.2643243-7-den@valinux.co.jp
Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
f7d1619f3e
commit
c0d9c6275a
|
|
@ -292,6 +292,8 @@ static int dw_edma_device_terminate_all(struct dma_chan *dchan)
|
|||
} else {
|
||||
chan->request = EDMA_REQ_STOP;
|
||||
}
|
||||
if (chan->status == EDMA_ST_IDLE)
|
||||
chan->request = EDMA_REQ_NONE;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user