From bf0b4c41545269b4ff4443efde1b0cf584dcca9d Mon Sep 17 00:00:00 2001 From: Catalin Popescu Date: Tue, 17 Jan 2012 17:27:49 +0100 Subject: [PATCH] [PORT FROM R2]dma: wrong debug message and wrong masking of error interrupts BZ: 20940 oldBZ-20433 This patch fixes 2 issues : - In DMA tasklet, debug messages when handling error interrupts are the same as when handling TX complete interrupts. - In DMA ISR, if errors are detected at the same time on multiple channels, the ISR masks error interrupts for wrong channel. Signed-off-by: Catalin Popescu Change-Id: Idbad4352d3d6a38fe68bec7dbd03363f59983c6e Old-Change-Id: Id4755d5e85b9bb916569196d5c51a5c3830781d2 Reviewed-on: http://android.intel.com:8080/32590 Reviewed-by: M, Arulselvan Tested-by: M, Arulselvan Reviewed-by: Popescu, CatalinX Reviewed-by: buildbot Tested-by: buildbot --- drivers/dma/intel_mid_dma.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/dma/intel_mid_dma.c b/drivers/dma/intel_mid_dma.c index 70bf49d..2cb77d5 100644 --- a/drivers/dma/intel_mid_dma.c +++ b/drivers/dma/intel_mid_dma.c @@ -1028,15 +1028,15 @@ static void dma_tasklet(unsigned long data) /*err interrupt*/ i = get_ch_index(&status, mid->chan_base); if (i < 0) { - pr_err("ERR_MDMA:Invalid ch index %x\n", i); + pr_err("ERR_MDMA:Invalid ch index %x (raw err)\n", i); return; } midc = &mid->ch[i]; if (midc == NULL) { - pr_err("ERR_MDMA:Null param midc\n"); + pr_err("ERR_MDMA:Null param midc (raw err)\n"); return; } - pr_debug("MDMA:Tx complete interrupt %x, Ch No %d Index %d\n", + pr_debug("MDMA:raw err interrupt %x, Ch No %d Index %d\n", status, midc->ch_id, i); iowrite32((1 << midc->ch_id), mid->dma_base + CLEAR_ERR); @@ -1101,7 +1101,9 @@ static irqreturn_t intel_mid_dma_interrupt(int irq, void *data) } err_status &= mid->intr_mask; if (err_status) { - iowrite32(MASK_INTR_REG(err_status), mid->dma_base + MASK_ERR); + /* mask error interrupts for all channels in error */ + iowrite32((err_status << INT_MASK_WE), + mid->dma_base + MASK_ERR); call_tasklet = 1; } if (call_tasklet) -- 2.7.4