[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231219055026.118695-1-bumyong.lee@samsung.com>
Date: Tue, 19 Dec 2023 14:50:26 +0900
From: Bumyong Lee <bumyong.lee@...sung.com>
To: vkoul@...nel.org, p.zabel@...gutronix.de
Cc: dmaengine@...r.kernel.org, linux-kernel@...r.kernel.org, Bumyong Lee
<bumyong.lee@...sung.com>
Subject: [PATCH] dmaengine: pl330: issue_pending waits until WFP state
According to DMA-330 errata notice[1] 71930, DMAKILL
cannot clear internal signal, named pipeline_req_active.
it makes that pl330 would wait forever in WFP state
although dma already send dma request if pl330 gets
dma request before entering WFP state.
The errata suggests that polling until entering WFP state
as workaround and then peripherals allows to issue dma request.
[1]: https://developer.arm.com/documentation/genc008428/latest
Signed-off-by: Bumyong Lee <bumyong.lee@...sung.com>
---
drivers/dma/pl330.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 3cf0b38387ae..c29744bfdf2c 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -1053,6 +1053,9 @@ static bool _trigger(struct pl330_thread *thrd)
thrd->req_running = idx;
+ if (desc->rqtype == DMA_MEM_TO_DEV || desc->rqtype == DMA_DEV_TO_MEM)
+ UNTIL(thrd, PL330_STATE_WFP);
+
return true;
}
--
2.43.0
Powered by blists - more mailing lists