]> git.karo-electronics.de Git - linux-beck.git/commitdiff
dmaengine: zxdma: Fix force stop bug
authorJun Nie <jun.nie@linaro.org>
Wed, 5 Aug 2015 05:23:27 +0000 (13:23 +0800)
committerVinod Koul <vinod.koul@intel.com>
Wed, 5 Aug 2015 05:33:23 +0000 (11:03 +0530)
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>
drivers/dma/zx296702_dma.c

index 103691c616134bf103ef11bebed64338b77765a2..39915a6b7986e2fba00d285370f57f27ed3eeb9a 100644 (file)
@@ -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;