summaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorQiao Zhou <zhouqiao@marvell.com>2013-06-15 06:51:48 +0200
committerVinod Koul <vinod.koul@intel.com>2013-07-05 08:10:48 +0200
commit8e3c518fba4f2ddd192171cbd7b23ec26900bf6b (patch)
treeab00a783582820a11a5b2a7d2d73bb00d158ae4a /drivers/dma
parentdmaengine: PL08x: Avoid collisions with get_signal() macro (diff)
downloadlinux-8e3c518fba4f2ddd192171cbd7b23ec26900bf6b.tar.xz
linux-8e3c518fba4f2ddd192171cbd7b23ec26900bf6b.zip
dma: mmp_tdma: disable irq when disabling dma channel
mask dma irq when disabling dma channel, so that interrupt status will not be set and interrupt won't come again. Signed-off-by: Qiao Zhou <zhouqiao@marvell.com> Acked-by: Zhangfei Gao <zhangfei.gao@gmail.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/mmp_tdma.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c
index 43d5a6c33297..9b9366537d73 100644
--- a/drivers/dma/mmp_tdma.c
+++ b/drivers/dma/mmp_tdma.c
@@ -154,6 +154,10 @@ static void mmp_tdma_disable_chan(struct mmp_tdma_chan *tdmac)
{
writel(readl(tdmac->reg_base + TDCR) & ~TDCR_CHANEN,
tdmac->reg_base + TDCR);
+
+ /* disable irq */
+ writel(0, tdmac->reg_base + TDIMR);
+
tdmac->status = DMA_SUCCESS;
}