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

