All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ASoC: Optimise WM8996 no interrupt path
@ 2011-08-20 18:33 Mark Brown
  2011-08-22 10:22 ` Liam Girdwood
  0 siblings, 1 reply; 2+ messages in thread
From: Mark Brown @ 2011-08-20 18:33 UTC (permalink / raw)
  To: Liam Girdwood; +Cc: alsa-devel, patches, Mark Brown

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>
---
 sound/soc/codecs/wm8996.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
index d3277d1..73a1588 100644
--- a/sound/soc/codecs/wm8996.c
+++ b/sound/soc/codecs/wm8996.c
@@ -2416,6 +2416,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)) {
@@ -2434,10 +2437,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)
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] ASoC: Optimise WM8996 no interrupt path
  2011-08-20 18:33 [PATCH] ASoC: Optimise WM8996 no interrupt path Mark Brown
@ 2011-08-22 10:22 ` Liam Girdwood
  0 siblings, 0 replies; 2+ messages in thread
From: Liam Girdwood @ 2011-08-22 10:22 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, patches

On 20/08/11 19:33, Mark Brown wrote:
> 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>
> ---
>  sound/soc/codecs/wm8996.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
> index d3277d1..73a1588 100644
> --- a/sound/soc/codecs/wm8996.c
> +++ b/sound/soc/codecs/wm8996.c
> @@ -2416,6 +2416,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)) {
> @@ -2434,10 +2437,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)

Acked-by: Liam Girdwood <lrg@ti.com>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-08-22 10:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-20 18:33 [PATCH] ASoC: Optimise WM8996 no interrupt path Mark Brown
2011-08-22 10:22 ` Liam Girdwood

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.