Skip to content

Commit

Permalink
dmaengine: dw: return immediately from IRQ when DMA isn't in use
Browse files Browse the repository at this point in the history
There is no need to bother the hardware when all channels are idle. We have not
to get any interrupts.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Andy Shevchenko authored and Rafael J. Wysocki committed Jan 7, 2016
1 parent 3214658 commit 02a21b7
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/dma/dw/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,12 +622,17 @@ static void dw_dma_tasklet(unsigned long data)
static irqreturn_t dw_dma_interrupt(int irq, void *dev_id)
{
struct dw_dma *dw = dev_id;
u32 status = dma_readl(dw, STATUS_INT);
u32 status;

/* Check if we have any interrupt from the DMAC which is not in use */
if (!dw->in_use)
return IRQ_NONE;

status = dma_readl(dw, STATUS_INT);
dev_vdbg(dw->dma.dev, "%s: status=0x%x\n", __func__, status);

/* Check if we have any interrupt from the DMAC */
if (!status || !dw->in_use)
if (!status)
return IRQ_NONE;

/*
Expand Down

0 comments on commit 02a21b7

Please sign in to comment.