diff options
| -rw-r--r-- | arch/arm/plat-omap/dma.c | 7 | 
1 files changed, 3 insertions, 4 deletions
| diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index c4b2b478b1a5..85363084cc1a 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -53,7 +53,7 @@ enum { DMA_CHAIN_STARTED, DMA_CHAIN_NOTSTARTED };  #endif  #define OMAP_DMA_ACTIVE			0x01 -#define OMAP2_DMA_CSR_CLEAR_MASK	0xffe +#define OMAP2_DMA_CSR_CLEAR_MASK	0xffffffff  #define OMAP_FUNC_MUX_ARM_BASE		(0xfffe1000 + 0xec) @@ -1873,7 +1873,7 @@ static int omap2_dma_handle_ch(int ch)  		printk(KERN_INFO "DMA misaligned error with device %d\n",  		       dma_chan[ch].dev_id); -	p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, ch); +	p->dma_write(status, CSR, ch);  	p->dma_write(1 << ch, IRQSTATUS_L0, ch);  	/* read back the register to flush the write */  	p->dma_read(IRQSTATUS_L0, ch); @@ -1893,10 +1893,9 @@ static int omap2_dma_handle_ch(int ch)  			OMAP_DMA_CHAIN_INCQHEAD(chain_id);  		status = p->dma_read(CSR, ch); +		p->dma_write(status, CSR, ch);  	} -	p->dma_write(status, CSR, ch); -  	if (likely(dma_chan[ch].callback != NULL))  		dma_chan[ch].callback(ch, status, dma_chan[ch].data); | 
