aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Fuzzey <mfuzzey@gmail.com>2009-03-26 17:21:16 -0400
committerSascha Hauer <s.hauer@pengutronix.de>2009-05-05 03:36:22 -0400
commitde0096d80980e26fab16ac3eff57f47fadad92cb (patch)
treef74178fc629402e98db36acfd8985226eb553c66
parentb4348f32dae3cb6eb4bc21c7ed8f76c0b11e9d6a (diff)
mxc : Clean up properly when imx_dma_free() used without imx_dma_disable()
The sequence imx_dma_request() imx_dma_enable() imx_dma_free() left the dma channel in_use mode and did not release the timer. Signed-off-by: Martin Fuzzey <mfuzzey@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/plat-mxc/dma-mx1-mx2.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/arch/arm/plat-mxc/dma-mx1-mx2.c b/arch/arm/plat-mxc/dma-mx1-mx2.c
index e364a5ed10f1..a9126ed7935a 100644
--- a/arch/arm/plat-mxc/dma-mx1-mx2.c
+++ b/arch/arm/plat-mxc/dma-mx1-mx2.c
@@ -737,10 +737,7 @@ void imx_dma_free(int channel)
737 737
738 local_irq_save(flags); 738 local_irq_save(flags);
739 /* Disable interrupts */ 739 /* Disable interrupts */
740 __raw_writel(__raw_readl(DMA_BASE + DMA_DIMR) | (1 << channel), 740 imx_dma_disable(channel);
741 DMA_BASE + DMA_DIMR);
742 __raw_writel(__raw_readl(DMA_BASE + DMA_CCR(channel)) & ~CCR_CEN,
743 DMA_BASE + DMA_CCR(channel));
744 imxdma->name = NULL; 741 imxdma->name = NULL;
745 742
746#ifdef CONFIG_ARCH_MX2 743#ifdef CONFIG_ARCH_MX2