summaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorJun Nie <jun.nie@linaro.org>2015-08-05 13:23:27 +0800
committerVinod Koul <vinod.koul@intel.com>2015-08-05 11:03:23 +0530
commited9c87b33147e5b007e66a282b9c8c307fbf8bf9 (patch)
tree2f29cdbd77c858afe35126e39a203ba29e6c6f23 /drivers/dma
parent2092539b7735906deda8b1fca4b31b4c4eb65e0d (diff)
downloadop-kernel-dev-ed9c87b33147e5b007e66a282b9c8c307fbf8bf9.zip
op-kernel-dev-ed9c87b33147e5b007e66a282b9c8c307fbf8bf9.tar.gz
dmaengine: zxdma: Fix force stop bug
DMA will not stop when clearing enable bit till all transaction is done. The bug is exposed in audio playback because ring DMA chain never stop. Force hardware to stop with setting FORCE bit. Signed-off-by: Jun Nie <jun.nie@linaro.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/zx296702_dma.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/dma/zx296702_dma.c b/drivers/dma/zx296702_dma.c
index 103691c6..39915a6 100644
--- a/drivers/dma/zx296702_dma.c
+++ b/drivers/dma/zx296702_dma.c
@@ -144,6 +144,7 @@ static void zx_dma_terminate_chan(struct zx_dma_phy *phy, struct zx_dma_dev *d)
val = readl_relaxed(phy->base + REG_ZX_CTRL);
val &= ~ZX_CH_ENABLE;
+ val |= ZX_FORCE_CLOSE;
writel_relaxed(val, phy->base + REG_ZX_CTRL);
val = 0x1 << phy->idx;
OpenPOWER on IntegriCloud