diff mbox series

[4/7] dmaengine: mmp_tdma: Reset channel error on release

Message ID 20200419164912.670973-5-lkundrak@v3.sk (mailing list archive)
State Accepted
Headers show
Series dmaengine: mmp_tdma: Make the driver actually work | expand

Commit Message

Lubomir Rintel April 19, 2020, 4:49 p.m. UTC
When a channel configuration fails, the status of the channel is set to
DEV_ERROR so that an attempt to submit it fails. However, this status
sticks until the heat end of the universe, making it impossible to
recover from the error.

Let's reset it when the channel is released so that further use of the
channel with correct configuration is not impacted.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
---
 drivers/dma/mmp_tdma.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Vinod Koul April 23, 2020, 7:14 a.m. UTC | #1
On 19-04-20, 18:49, Lubomir Rintel wrote:
> When a channel configuration fails, the status of the channel is set to
> DEV_ERROR so that an attempt to submit it fails. However, this status
> sticks until the heat end of the universe, making it impossible to
> recover from the error.
> 
> Let's reset it when the channel is released so that further use of the
> channel with correct configuration is not impacted.

Applied to fixes, thanks
diff mbox series

Patch

diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c
index d574641791598..0b1aa6eab1801 100644
--- a/drivers/dma/mmp_tdma.c
+++ b/drivers/dma/mmp_tdma.c
@@ -370,6 +370,8 @@  static void mmp_tdma_free_descriptor(struct mmp_tdma_chan *tdmac)
 		gen_pool_free(gpool, (unsigned long)tdmac->desc_arr,
 				size);
 	tdmac->desc_arr = NULL;
+	if (tdmac->status == DMA_ERROR)
+		tdmac->status = DMA_COMPLETE;
 
 	return;
 }