diff options
-rw-r--r-- | arch/arm/mach-davinci/dma.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c index 53137387aee1..0bf290befa23 100644 --- a/arch/arm/mach-davinci/dma.c +++ b/arch/arm/mach-davinci/dma.c | |||
@@ -359,9 +359,11 @@ static irqreturn_t dma_irq_handler(int irq, void *data) | |||
359 | 359 | ||
360 | while (1) { | 360 | while (1) { |
361 | int j; | 361 | int j; |
362 | if (edma_shadow0_read_array(ctlr, SH_IPR, 0)) | 362 | if (edma_shadow0_read_array(ctlr, SH_IPR, 0) & |
363 | edma_shadow0_read_array(ctlr, SH_IER, 0)) | ||
363 | j = 0; | 364 | j = 0; |
364 | else if (edma_shadow0_read_array(ctlr, SH_IPR, 1)) | 365 | else if (edma_shadow0_read_array(ctlr, SH_IPR, 1) & |
366 | edma_shadow0_read_array(ctlr, SH_IER, 1)) | ||
365 | j = 1; | 367 | j = 1; |
366 | else | 368 | else |
367 | break; | 369 | break; |
@@ -369,8 +371,9 @@ static irqreturn_t dma_irq_handler(int irq, void *data) | |||
369 | edma_shadow0_read_array(ctlr, SH_IPR, j)); | 371 | edma_shadow0_read_array(ctlr, SH_IPR, j)); |
370 | for (i = 0; i < 32; i++) { | 372 | for (i = 0; i < 32; i++) { |
371 | int k = (j << 5) + i; | 373 | int k = (j << 5) + i; |
372 | if (edma_shadow0_read_array(ctlr, SH_IPR, j) & | 374 | if ((edma_shadow0_read_array(ctlr, SH_IPR, j) & BIT(i)) |
373 | (1 << i)) { | 375 | && (edma_shadow0_read_array(ctlr, |
376 | SH_IER, j) & BIT(i))) { | ||
374 | /* Clear the corresponding IPR bits */ | 377 | /* Clear the corresponding IPR bits */ |
375 | edma_shadow0_write_array(ctlr, SH_ICR, j, | 378 | edma_shadow0_write_array(ctlr, SH_ICR, j, |
376 | (1 << i)); | 379 | (1 << i)); |