summaryrefslogtreecommitdiff
path: root/arch/arm/mach-pxa/dma.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-02-10 23:54:50 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2009-02-10 23:54:50 (GMT)
commit1385a7ae654264fb2d9d3c6c3c7a3df28d29ab53 (patch)
tree153944a51d888ca98ad35625d53e4df00f006316 /arch/arm/mach-pxa/dma.c
parent1db8508cf483dc1ecf66141f90a7c03659d69512 (diff)
parentf6f35bbe7c6494e66590cf519e21da2dd8d59e01 (diff)
downloadlinux-fsl-qoriq-1385a7ae654264fb2d9d3c6c3c7a3df28d29ab53.tar.xz
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] AACI: timeout will reach -1 [ARM] Storage class should be before const qualifier [ARM] pxa: stop and disable IRQ for each DMA channels at startup [ARM] pxa: make more SSCR0 bit definitions visible on multiple processors [ARM] pxa: fix missing of __REG() definition for ac97 registers access [ARM] pxa: fix NAND and MMC clock initialization for pxa3xx
Diffstat (limited to 'arch/arm/mach-pxa/dma.c')
-rw-r--r--arch/arm/mach-pxa/dma.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/arm/mach-pxa/dma.c b/arch/arm/mach-pxa/dma.c
index b1514fb..7de17fc 100644
--- a/arch/arm/mach-pxa/dma.c
+++ b/arch/arm/mach-pxa/dma.c
@@ -121,20 +121,22 @@ int __init pxa_init_dma(int num_ch)
if (dma_channels == NULL)
return -ENOMEM;
- ret = request_irq(IRQ_DMA, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
- if (ret) {
- printk (KERN_CRIT "Wow! Can't register IRQ for DMA\n");
- kfree(dma_channels);
- return ret;
- }
-
/* dma channel priorities on pxa2xx processors:
* ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
* ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
* ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
*/
- for (i = 0; i < num_ch; i++)
+ for (i = 0; i < num_ch; i++) {
+ DCSR(i) = 0;
dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
+ }
+
+ ret = request_irq(IRQ_DMA, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
+ if (ret) {
+ printk (KERN_CRIT "Wow! Can't register IRQ for DMA\n");
+ kfree(dma_channels);
+ return ret;
+ }
num_dma_channels = num_ch;
return 0;