summaryrefslogtreecommitdiffstats
path: root/drivers/dma/dw_dmac.c
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2012-06-19 12:34:07 +0200
committerVinod Koul <vinod.koul@linux.intel.com>2012-06-21 04:35:37 +0200
commit236b106f1a66a272708e4960cde8cbcdd1611435 (patch)
tree7bcefe24f248fbdf4ac0dd5fe9da587aa5c1ad2c /drivers/dma/dw_dmac.c
parentdw_dmac: disable dma in optimal way in probe (diff)
downloadlinux-236b106f1a66a272708e4960cde8cbcdd1611435.tar.xz
linux-236b106f1a66a272708e4960cde8cbcdd1611435.zip
dw_dmac: disable BLOCK interrupts
Just to be sure we are in known state we disable the BLOCK interupts. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Viresh Kumar <viresh.linux@gmail.com> Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
Diffstat (limited to 'drivers/dma/dw_dmac.c')
-rw-r--r--drivers/dma/dw_dmac.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c
index 8a37f6d17b47..d3038a03503d 100644
--- a/drivers/dma/dw_dmac.c
+++ b/drivers/dma/dw_dmac.c
@@ -1437,6 +1437,9 @@ static int __init dw_probe(struct platform_device *pdev)
/* force dma off, just in case */
dw_dma_off(dw);
+ /* disable BLOCK interrupts as well */
+ channel_clear_bit(dw, MASK.BLOCK, dw->all_chan_mask);
+
err = request_irq(irq, dw_dma_interrupt, 0, "dw_dmac", dw);
if (err)
goto err_irq;
@@ -1476,6 +1479,7 @@ static int __init dw_probe(struct platform_device *pdev)
/* Clear all interrupts on all channels. */
dma_writel(dw, CLEAR.XFER, dw->all_chan_mask);
+ dma_writel(dw, CLEAR.BLOCK, dw->all_chan_mask);
dma_writel(dw, CLEAR.SRC_TRAN, dw->all_chan_mask);
dma_writel(dw, CLEAR.DST_TRAN, dw->all_chan_mask);
dma_writel(dw, CLEAR.ERROR, dw->all_chan_mask);