diff options
author | Martin Fuzzey <mfuzzey@gmail.com> | 2009-03-26 17:21:16 -0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-05-05 03:36:22 -0400 |
commit | de0096d80980e26fab16ac3eff57f47fadad92cb (patch) | |
tree | f74178fc629402e98db36acfd8985226eb553c66 | |
parent | b4348f32dae3cb6eb4bc21c7ed8f76c0b11e9d6a (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.c | 5 |
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 |