[PATCH v5 03/11] ARM: pxa: rename gpio_to_irq and irq_to_gpio

Haojian Zhuang haojian.zhuang at gmail.com
Mon Nov 7 02:14:36 EST 2011


On Thu, Oct 27, 2011 at 5:17 PM, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Mon, Oct 17, 2011 at 09:35:09PM +0800, Haojian Zhuang wrote:
>> Avoid to define gpio_to_irq() and irq_to_gpio() for potential name
>> confliction since multiple architecture will be built together.
>>
>> Signed-off-by: Haojian Zhuang <haojian.zhuang at marvell.com>
>
> I think this patch is partly wrong.
>
>> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
>> index 06b5ad7..fb7dfc1 100644
>> --- a/arch/arm/mach-mmp/aspenite.c
>> +++ b/arch/arm/mach-mmp/aspenite.c
>> @@ -120,8 +120,8 @@ static struct resource smc91x_resources[] = {
>>               .flags  = IORESOURCE_MEM,
>>       },
>>       [1] = {
>> -             .start  = gpio_to_irq(27),
>> -             .end    = gpio_to_irq(27),
>> +             .start  = MMP_GPIO_TO_IRQ(27),
>> +             .end    = MMP_GPIO_TO_IRQ(27),
>
> These are fine, because they're fixing static initializers which can't
> call out to functions.
>
>> diff --git a/arch/arm/mach-mmp/include/mach/gpio-pxa.h b/arch/arm/mach-mmp/include/mach/gpio-pxa.h
>> index c017a98..f7bcc30 100644
>> --- a/arch/arm/mach-mmp/include/mach/gpio-pxa.h
>> +++ b/arch/arm/mach-mmp/include/mach/gpio-pxa.h
>> @@ -2,6 +2,7 @@
>>  #define __ASM_MACH_GPIO_PXA_H
>>
>>  #include <mach/addr-map.h>
>> +#include <mach/cputype.h>
>>  #include <mach/irqs.h>
>>
>>  #define GPIO_REGS_VIRT       (APB_VIRT_BASE + 0x19000)
>
> This looks like an unrelated change.
>
>> diff --git a/arch/arm/mach-mmp/include/mach/gpio.h b/arch/arm/mach-mmp/include/mach/gpio.h
>> index 6812623..32b684a 100644
>> --- a/arch/arm/mach-mmp/include/mach/gpio.h
>> +++ b/arch/arm/mach-mmp/include/mach/gpio.h
>> @@ -3,9 +3,6 @@
>>
>>  #include <asm-generic/gpio.h>
>>
>> -#define gpio_to_irq(gpio)    (IRQ_GPIO_START + (gpio))
>> -#define irq_to_gpio(irq)     ((irq) - IRQ_GPIO_START)
>> -
>
> Doesn't this leave MMP without any definition for gpio_to_irq() ?  This
> is part of the gpiolib API and really should be implemented.  If you're
> not providing your own special version, it should be defined to
> __gpio_to_irq() instead.  (Same comment for PXA.)
>
Excuse me for response so late.

gpio_to_irq() was provided to share between arch-pxa and arch-mmp.
Now it became the obstacle of building arch-pxa and arch-mmp together.

__gpio_to_irq() is defined in drivers/gpio/gpiolib.c. It makes use of
gpio_chip->to_irq(). So I prefer to use __gpio_to_irq() as common interface.

Since some macro may use gpio_to_irq() in legacy pxa code, I define
PXA_GPIO_TO_IRQ() and MMP_GPIO_TO_IRQ() to handle this.

>> diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c
>> index 6bf479d..dd8443f 100644
>> --- a/arch/arm/mach-pxa/cm-x2xx-pci.c
>> +++ b/arch/arm/mach-pxa/cm-x2xx-pci.c
>> @@ -43,9 +43,9 @@ void __cmx2xx_pci_init_irq(int irq_gpio)
>>
>>       cmx2xx_it8152_irq_gpio = irq_gpio;
>>
>> -     irq_set_irq_type(gpio_to_irq(irq_gpio), IRQ_TYPE_EDGE_RISING);
>> +     irq_set_irq_type(PXA_GPIO_TO_IRQ(irq_gpio), IRQ_TYPE_EDGE_RISING);
>>
>> -     irq_set_chained_handler(gpio_to_irq(irq_gpio),
>> +     irq_set_chained_handler(PXA_GPIO_TO_IRQ(irq_gpio),
>>                               cmx2xx_it8152_irq_demux);
>
> This isn't a static data initializer, which means the standard gpiolib
> gpio_to_irq() function _should_ work here if properly implemented.
>
>> diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
>> index 3358f4d..e71c395 100644
>> --- a/arch/arm/mach-pxa/em-x270.c
>> +++ b/arch/arm/mach-pxa/em-x270.c
>> @@ -558,7 +558,7 @@ static int em_x270_mci_init(struct device *dev,
>>               return PTR_ERR(em_x270_sdio_ldo);
>>       }
>>
>> -     err = request_irq(gpio_to_irq(mmc_cd), em_x270_detect_int,
>> +     err = request_irq(PXA_GPIO_TO_IRQ(mmc_cd), em_x270_detect_int,
>
> Ditto.
>
>>                             IRQF_DISABLED | IRQF_TRIGGER_RISING |
>>                             IRQF_TRIGGER_FALLING,
>>                             "MMC card detect", data);
>> @@ -588,7 +588,7 @@ static int em_x270_mci_init(struct device *dev,
>>       return 0;
>>
>>  err_gpio_wp:
>> -     free_irq(gpio_to_irq(mmc_cd), data);
>> +     free_irq(PXA_GPIO_TO_IRQ(mmc_cd), data);
>
> Ditto.
>
>>  err_irq:
>>       regulator_put(em_x270_sdio_ldo);
>>
>> @@ -611,7 +611,7 @@ static void em_x270_mci_setpower(struct device *dev, unsigned int vdd)
>>
>>  static void em_x270_mci_exit(struct device *dev, void *data)
>>  {
>> -     free_irq(gpio_to_irq(mmc_cd), data);
>> +     free_irq(PXA_GPIO_TO_IRQ(mmc_cd), data);
>
> Ditto.
>
>>       regulator_put(em_x270_sdio_ldo);
>>
>>       if (machine_is_em_x270())
> ...
>> diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
>> index b938fc2..1144def 100644
>> --- a/arch/arm/mach-pxa/mioa701.c
>> +++ b/arch/arm/mach-pxa/mioa701.c
>> @@ -314,7 +314,7 @@ static int __init gsm_init(void)
>>       rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios));
>>       if (rc)
>>               goto err_gpio;
>> -     rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq,
>> +     rc = request_irq(PXA_GPIO_TO_IRQ(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq,
>
> Ditto. (etc)
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>



More information about the linux-arm-kernel mailing list