* [PATCH] mfd: arizona: Suppress needless calls to the primary IRQ
@ 2012-08-21 19:02 Mark Brown
2012-09-11 10:18 ` Samuel Ortiz
0 siblings, 1 reply; 2+ messages in thread
From: Mark Brown @ 2012-08-21 19:02 UTC (permalink / raw)
To: Samuel Ortiz; +Cc: linux-kernel, patches, Mark Brown
We can read back if the primary IRQ is asserted from the register map,
meaning that we can suppress polling of the interrupt status registers
when only the AoD IRQ domain is asserting.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
drivers/mfd/arizona-irq.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c
index 64940c6..a062153 100644
--- a/drivers/mfd/arizona-irq.c
+++ b/drivers/mfd/arizona-irq.c
@@ -94,6 +94,7 @@ static irqreturn_t arizona_ctrlif_err(int irq, void *data)
static irqreturn_t arizona_irq_thread(int irq, void *data)
{
struct arizona *arizona = data;
+ unsigned int val;
int i, ret;
ret = pm_runtime_get_sync(arizona->dev);
@@ -102,9 +103,20 @@ static irqreturn_t arizona_irq_thread(int irq, void *data)
return IRQ_NONE;
}
- /* Check both domains */
- for (i = 0; i < 2; i++)
- handle_nested_irq(irq_find_mapping(arizona->virq, i));
+ /* Always handle the AoD domain */
+ handle_nested_irq(irq_find_mapping(arizona->virq, 0));
+
+ /*
+ * Check if one of the main interrupts is asserted and only
+ * check that domain if it is.
+ */
+ ret = regmap_read(arizona->regmap, ARIZONA_IRQ_PIN_STATUS, &val);
+ if (ret == 0 && val & ARIZONA_IRQ1_STS) {
+ handle_nested_irq(irq_find_mapping(arizona->virq, 1));
+ } else if (ret != 0) {
+ dev_err(arizona->dev, "Failed to read main IRQ status: %d\n",
+ ret);
+ }
pm_runtime_mark_last_busy(arizona->dev);
pm_runtime_put_autosuspend(arizona->dev);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] mfd: arizona: Suppress needless calls to the primary IRQ
2012-08-21 19:02 [PATCH] mfd: arizona: Suppress needless calls to the primary IRQ Mark Brown
@ 2012-09-11 10:18 ` Samuel Ortiz
0 siblings, 0 replies; 2+ messages in thread
From: Samuel Ortiz @ 2012-09-11 10:18 UTC (permalink / raw)
To: Mark Brown; +Cc: linux-kernel, patches
Hi Mark,
On Tue, Aug 21, 2012 at 08:02:03PM +0100, Mark Brown wrote:
> We can read back if the primary IRQ is asserted from the register map,
> meaning that we can suppress polling of the interrupt status registers
> when only the AoD IRQ domain is asserting.
>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> drivers/mfd/arizona-irq.c | 18 +++++++++++++++---
> 1 file changed, 15 insertions(+), 3 deletions(-)
Applied, thanks a lot.
Cheers,
Samuel.
--
Intel Open Source Technology Centre
http://oss.intel.com/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-09-11 10:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-21 19:02 [PATCH] mfd: arizona: Suppress needless calls to the primary IRQ Mark Brown
2012-09-11 10:18 ` Samuel Ortiz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox