[PATCH 2/6] ARM: tegra: update GPIO chained IRQ handler to use entry/exit functions

Colin Cross ccross at google.com
Fri Apr 1 16:29:54 EDT 2011


On Fri, Apr 1, 2011 at 7:50 AM, Will Deacon <will.deacon at arm.com> wrote:
> This patch updates the Tegra gpio chained IRQ handler to use the chained
> IRQ enter/exit functions in order to function correctly on primary
> controllers with different methods of flow control.
>
> This is required for the GIC to move to fasteoi interrupt handling.
>
> Cc: Colin Cross <ccross at android.com>
> Signed-off-by: Will Deacon <will.deacon at arm.com>
> ---
>  arch/arm/mach-tegra/gpio.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/mach-tegra/gpio.c b/arch/arm/mach-tegra/gpio.c
> index 76a3f65..08c43dd 100644
> --- a/arch/arm/mach-tegra/gpio.c
> +++ b/arch/arm/mach-tegra/gpio.c
> @@ -221,8 +221,9 @@ static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
>        int port;
>        int pin;
>        int unmasked = 0;
> +       struct irq_chip chip = get_irq_desc_chip(desc);
Should be a pointer, and 35e857c changed get_irq_desc_chip to irq_desc_get_chip

> -       desc->irq_data.chip->irq_ack(&desc->irq_data);
> +       chained_irq_enter(chip, desc);
asm/mach/irq.h needs to be included to use this function

>        bank = irq_get_handler_data(irq);
>
> @@ -241,7 +242,7 @@ static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
>                         */
>                        if (lvl & (0x100 << pin)) {
>                                unmasked = 1;
> -                               desc->irq_data.chip->irq_unmask(&desc->irq_data);
> +                               chained_irq_exit(chip, desc);
>                        }
>
>                        generic_handle_irq(gpio_to_irq(gpio + pin));
> @@ -249,7 +250,7 @@ static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
>        }
>
>        if (!unmasked)
> -               desc->irq_data.chip->irq_unmask(&desc->irq_data);
> +               chained_irq_exit(chip, desc);
>
>  }
>
> --
> 1.7.0.4
>
>



More information about the linux-arm-kernel mailing list