[PATCH 7/8] mfd: Use the AB8500's IRQ domain to convert hwirq to virq

Linus Walleij linus.walleij at linaro.org
Tue Aug 14 04:25:59 EDT 2012


On Thu, Aug 9, 2012 at 5:53 PM, Lee Jones <lee.jones at linaro.org> wrote:

> 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.
>
> CC: Samuel Ortiz <sameo at linux.intel.com>
> Signed-off-by: Lee Jones <lee.jones at linaro.org>

This looks better that what was in there before so
Acked-by: Linus Walleij <linus.walleij at linaro.org>

However:

> @@ -501,8 +501,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);

Still this ab8500_irq_get_virq() business. But is this a static local function
in the ab8500-core.c now? Then it's fine, it's the kernel-wide interface
that is the problem.

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list