diff options
author | Shunsuke Mie <mie@igel.co.jp> | 2023-04-11 12:17:58 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2023-04-12 19:14:49 +0200 |
commit | 970b17dfe264a9085ba4e593730ecfd496b950ab (patch) | |
tree | c505c41e0d5771012161ce56bbcec2296c6ddf27 /drivers/dma/dw-edma | |
parent | dmaengine: dw-edma: Fix to change for continuous transfer (diff) | |
download | linux-970b17dfe264a9085ba4e593730ecfd496b950ab.tar.xz linux-970b17dfe264a9085ba4e593730ecfd496b950ab.zip |
dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing
The issue_pending request is ignored while driver is processing a DMA
request. Fix to issue the pending requests on any dma channel status.
Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver")
Signed-off-by: Shunsuke Mie <mie@igel.co.jp>
Link: https://lore.kernel.org/r/20230411101758.438472-2-mie@igel.co.jp
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/dw-edma')
-rw-r--r-- | drivers/dma/dw-edma/dw-edma-core.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c index 26a395d02f5d..7d2b73ef0872 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -308,9 +308,12 @@ static void dw_edma_device_issue_pending(struct dma_chan *dchan) struct dw_edma_chan *chan = dchan2dw_edma_chan(dchan); unsigned long flags; + if (!chan->configured) + return; + spin_lock_irqsave(&chan->vc.lock, flags); - if (chan->configured && chan->request == EDMA_REQ_NONE && - chan->status == EDMA_ST_IDLE && vchan_issue_pending(&chan->vc)) { + if (vchan_issue_pending(&chan->vc) && chan->request == EDMA_REQ_NONE && + chan->status == EDMA_ST_IDLE) { chan->status = EDMA_ST_BUSY; dw_edma_start_transfer(chan); } |