ARM: OMAP: Fix DMA CLINK mask, clear spurious interrupt
authorGadiyar, Anand <gadiyar@ti.com>
Sat, 8 Mar 2008 13:49:13 +0000 (05:49 -0800)
committerTony Lindgren <tony@atomide.com>
Thu, 20 Mar 2008 14:57:54 +0000 (16:57 +0200)
Fix CLINK mask, clear spurious interrupt.

Signed-off-by: Gadiyar, Anand <gadiyar@ti.com>
Signed-off-by: Kevin Hilman <khilman@mvista.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/plat-omap/dma.c

index 06293bfcc831d4cb7fb76394039aaf5e0b1499ed..793740686be278e21b7fd7c683e39280ce84d67f 100644 (file)
@@ -1020,12 +1020,12 @@ static void create_dma_lch_chain(int lch_head, int lch_queue)
        }
 
        w = OMAP_DMA_CLNK_CTRL_REG(lch_head);
-       w &= ~(0x0f);
+       w &= ~(0x1f);
        w |= lch_queue;
        OMAP_DMA_CLNK_CTRL_REG(lch_head) = w;
 
        w = OMAP_DMA_CLNK_CTRL_REG(lch_queue);
-       w &= ~(0x0f);
+       w &= ~(0x1f);
        w |= (dma_chan[lch_queue].next_linked_ch);
        OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w;
 }
@@ -1663,6 +1663,7 @@ static int omap2_dma_handle_ch(int ch)
        if (!status) {
                if (printk_ratelimit())
                        printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch);
+               omap_writel(1 << ch, OMAP_DMA4_IRQSTATUS_L0);
                return 0;
        }
        if (unlikely(dma_chan[ch].dev_id == -1)) {