Skip to content

Commit

Permalink
ASoC: Optimise WM8996 no interrupt path
Browse files Browse the repository at this point in the history
This occurs frequently if we are in edge triggered mode as we must poll the
interrupt status register until we get no more interrupts so it's worth
the effort - it means we skip writing null acknowledgements to the chip.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
  • Loading branch information
Mark Brown committed Aug 22, 2011
1 parent 889c85c commit 2fde6e8
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions sound/soc/codecs/wm8996.c
Original file line number Diff line number Diff line change
Expand Up @@ -2408,6 +2408,9 @@ static irqreturn_t wm8996_irq(int irq, void *data)
}
irq_val &= ~snd_soc_read(codec, WM8996_INTERRUPT_STATUS_2_MASK);

if (!irq_val)
return IRQ_NONE;

snd_soc_write(codec, WM8996_INTERRUPT_STATUS_2, irq_val);

if (irq_val & (WM8996_DCS_DONE_01_EINT | WM8996_DCS_DONE_23_EINT)) {
Expand All @@ -2426,10 +2429,7 @@ static irqreturn_t wm8996_irq(int irq, void *data)
if (irq_val & WM8996_MICD_EINT)
wm8996_micd(codec);

if (irq_val)
return IRQ_HANDLED;
else
return IRQ_NONE;
return IRQ_HANDLED;
}

static irqreturn_t wm8996_edge_irq(int irq, void *data)
Expand Down

0 comments on commit 2fde6e8

Please sign in to comment.