From 3e1acca6b68364fa5d7e2b7a72125de1bc4bedb6 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Tue, 2 Jun 2020 16:44:04 +0800 Subject: [PATCH] dmaengine: pl330: Fix dmac register write error This is a workaround for dmac register write error by read once before write to make paddr is stable, which was caused by asynchronous between dmac_aclk and pclk. Signed-off-by: Sugar Zhang Change-Id: I32e03204d6399db4fe4f40479050cc45e04ddb1f --- drivers/dma/pl330.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index e52f0f58c74b..034a3c301b9d 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -37,6 +37,16 @@ #define PL330_QUIRK_BROKEN_NO_FLUSHP BIT(0) +#ifdef CONFIG_CPU_RV1126 +#undef writel +#define writel(v, c) \ + do { \ + readl_relaxed(c); \ + __iowmb(); \ + writel_relaxed(v, c); \ + } while (0) +#endif + enum pl330_cachectrl { CCTRL0, /* Noncacheable and nonbufferable */ CCTRL1, /* Bufferable only */