34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samin Guo <samin.guo@starfivetech.com>
|
|
Date: Wed, 17 Nov 2021 14:50:45 +0800
|
|
Subject: dmaengine: dw-axi-dmac: Handle xfer start while non-idle
|
|
|
|
Signed-off-by: Samin Guo <samin.guo@starfivetech.com>
|
|
Signed-off-by: Curry Zhang <curry.zhang@starfivetech.com>
|
|
---
|
|
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
|
index 152c5d98524d..a7b3ea6644ae 100644
|
|
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
|
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
|
|
@@ -1021,6 +1021,14 @@ static noinline void axi_chan_handle_err(struct axi_dma_chan *chan, u32 status)
|
|
axi_chan_name(chan));
|
|
goto out;
|
|
}
|
|
+ if (chan->is_err) {
|
|
+ struct axi_dma_desc *desc = vd_to_axi_desc(vd);
|
|
+
|
|
+ axi_chan_block_xfer_start(chan, desc);
|
|
+ chan->is_err = false;
|
|
+ goto out;
|
|
+ }
|
|
+
|
|
/* Remove the completed descriptor from issued list */
|
|
list_del(&vd->node);
|
|
|
|
--
|
|
Armbian
|
|
|