Эх сурвалжийг харах

ARM: OMAP: Fix DMA CLINK mask, clear spurious interrupt

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>
Gadiyar, Anand 17 жил өмнө
parent
commit
026a6fef55

+ 3 - 2
arch/arm/plat-omap/dma.c

@@ -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 = OMAP_DMA_CLNK_CTRL_REG(lch_head);
-	w &= ~(0x0f);
+	w &= ~(0x1f);
 	w |= lch_queue;
 	w |= lch_queue;
 	OMAP_DMA_CLNK_CTRL_REG(lch_head) = w;
 	OMAP_DMA_CLNK_CTRL_REG(lch_head) = w;
 
 
 	w = OMAP_DMA_CLNK_CTRL_REG(lch_queue);
 	w = OMAP_DMA_CLNK_CTRL_REG(lch_queue);
-	w &= ~(0x0f);
+	w &= ~(0x1f);
 	w |= (dma_chan[lch_queue].next_linked_ch);
 	w |= (dma_chan[lch_queue].next_linked_ch);
 	OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w;
 	OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w;
 }
 }
@@ -1663,6 +1663,7 @@ static int omap2_dma_handle_ch(int ch)
 	if (!status) {
 	if (!status) {
 		if (printk_ratelimit())
 		if (printk_ratelimit())
 			printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch);
 			printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch);
+		omap_writel(1 << ch, OMAP_DMA4_IRQSTATUS_L0);
 		return 0;
 		return 0;
 	}
 	}
 	if (unlikely(dma_chan[ch].dev_id == -1)) {
 	if (unlikely(dma_chan[ch].dev_id == -1)) {