mfd: Use the AB8500's IRQ domain to convert hwirq to virq
authorLee Jones <lee.jones@linaro.org>
Thu, 9 Aug 2012 15:53:54 +0000 (16:53 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 18 Sep 2012 12:35:17 +0000 (14:35 +0200)
Before the AB8500 had its own IRQ domain, the IRQ handler would take
the fired local IRQ (hwirq) and add it to the irq_base to convert it
to an IRQ number which Linux would understand (virq). However, the
IRQ base is not always used anymore since we can make use of Linear
domains. It's better to use the AB8500 hwirq -> virq mapping helper
function to convert them instead. That's what we do here.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/ab8500-core.c

index dd91951c68f065513f2587b74616c8459804af0f..a3aceffb60fe719ba9910196dc607f0a917cc0d0 100644 (file)
@@ -517,8 +517,9 @@ static irqreturn_t ab8500_irq(int irq, void *dev)
                do {
                        int bit = __ffs(value);
                        int line = i * 8 + bit;
+                       int virq = ab8500_irq_get_virq(ab8500, line);
 
-                       handle_nested_irq(ab8500->irq_base + line);
+                       handle_nested_irq(virq);
                        value &= ~(1 << bit);
 
                } while (value);