]> git.hungrycats.org Git - linux/commitdiff
[ARM PATCH] 2496/1: i.MX DMA fix
authorSascha Hauer <sascha@de.rmk.(none)>
Mon, 28 Feb 2005 18:24:24 +0000 (18:24 +0000)
committerRussell King <rmk@flint.arm.linux.org.uk>
Mon, 28 Feb 2005 18:24:24 +0000 (18:24 +0000)
Patch from Sascha Hauer

This patch fixes the handling of the dma interrupt acknowledge register (DISR).
A DMA interrupt is acknowledged by setting the corresponding bit in
DISR. So we are not allowed to use |= on this register because we could
lose interrupts.
Sascha Hauer

Signed-off-by: Sascha Hauer
Signed-off-by: Russell King
arch/arm/mach-imx/dma.c

index 7387ccbd8720fd098a337f1bc9c9375e50a72706..2a44d53d2847861d4e44c7cf81aa4f8063bfc384 100644 (file)
@@ -136,7 +136,7 @@ dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
                               i, channel->name);
                        DBOSR |= (1 << i);
                }
-               DISR |= (1 << i);
+               DISR = (1 << i);
        }
        return IRQ_HANDLED;
 }
@@ -158,10 +158,10 @@ dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
                                 */
                                printk(KERN_WARNING
                                       "spurious IRQ for DMA channel %d\n", i);
-                               DISR |= (1 << i);
                        }
                }
        }
+       DISR = disr;
        return IRQ_HANDLED;
 }