[PATCH v2 02/10] gpio: pxa: avoid to use global irq base
Linus Walleij
linus.walleij at linaro.org
Thu Feb 14 07:19:13 EST 2013
On Thu, Feb 14, 2013 at 10:27 AM, Igor Grinberg <grinberg at compulab.co.il> wrote:
> It looks like I've figured this out...
> For em-x270 as an example, if I move the IRQ resource assignment to runtime:
>
> diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
> index 1b64114..178cc0b 100644
> --- a/arch/arm/mach-pxa/em-x270.c
> +++ b/arch/arm/mach-pxa/em-x270.c
> @@ -210,8 +210,6 @@ static struct resource em_x270_dm9000_resource[] = {
> .flags = IORESOURCE_MEM,
> },
> [2] = {
> - .start = EM_X270_ETHIRQ,
> - .end = EM_X270_ETHIRQ,
> .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
> }
> };
> @@ -232,6 +230,9 @@ static struct platform_device em_x270_dm9000 = {
>
> static void __init em_x270_init_dm9000(void)
> {
> + em_x270_dm9000_resource[2].start = gpio_to_irq(GPIO41_ETHIRQ);
> + em_x270_dm9000_resource[2].end = gpio_to_irq(GPIO41_ETHIRQ);
> +
> em_x270_dm9000_platdata.flags |= dm9000_flags;
> platform_device_register(&em_x270_dm9000);
> }
>
> The Ethernet is alive and NFS root works fine.
>
> So my conclusion, is that we still need to have some work done
> before we can switch to using IRQ_DOMAIN.
> As you can see from above patch, we at least must deal with the
> PXA_GPIO_TO_IRQ macros and alike that have compile time assumptions
> which obviously get broken once you switch to the IRQ_DOMAIN.
>
> What do you think?
I think it seems like you should review all the IRQ assignments in that
former GPIO range. Statically encoding IRQ numbers for GPIO things
is usually not a good idea, it's better to always use gpio_to_irq()
on these and only keep hard-coded GPIO numbers around (atleast
just *one* problem to worry about).
Your,
Linus Walleij
More information about the linux-arm-kernel
mailing list