[PATCH 1/2] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
Daniel Mack
zonque at gmail.com
Sun Aug 5 07:56:13 EDT 2012
On 05.08.2012 10:31, Igor Grinberg wrote:
> Hi Daniel,
>
> On 07/25/12 18:35, Daniel Mack wrote:
>> Simplify the code in gpio-pxa.c and make them based on irq_base.
>> When not probed from devicetree, initialize irq_base from
>> PXA_GPIO_TO_IRQ() or MMP_GPIO_TO_IRQ(), respectively, so the non-DT case
>> still works.
>>
>> Only tested on PXA3xx.
>>
>> Signed-off-by: Daniel Mack <zonque at gmail.com>
>> ---
>> drivers/gpio/gpio-pxa.c | 70 +++++++++++------------------------------------
>> 1 file changed, 16 insertions(+), 54 deletions(-)
>>
>> diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
>> index 58a6a63..6d0cb9d 100644
>> --- a/drivers/gpio/gpio-pxa.c
>> +++ b/drivers/gpio/gpio-pxa.c
>
> [...]
>
>> @@ -564,10 +516,20 @@ static int __devinit pxa_gpio_probe(struct platform_device *pdev)
>> int irq0 = 0, irq1 = 0, irq_mux, gpio_offset = 0;
>>
>> ret = pxa_gpio_probe_dt(pdev);
>> - if (ret < 0)
>> + if (ret < 0) {
>> pxa_last_gpio = pxa_gpio_nums();
>> - else
>> +#ifdef CONFIG_ARCH_PXA
>> + if (gpio_is_pxa_type(gpio_type))
>> + irq_base = PXA_GPIO_TO_IRQ(0);
>> +#endif
>> +#ifdef CONFIG_ARCH_MMP
>> + if (gpio_is_mmp_type(gpio_type))
>> + irq_base = MMP_GPIO_TO_IRQ(0);
>> +#endif
>
> The ifdes above do not look essential.
But they are. In case of !CONFIG_ARCH_MMP, MMP_GPIO_TO_IRQ is undefined.
Same problem for !CONFIG_ARC_PXA.
> Can't we drop them and just have else if ... else if?
We can't do that either, as we might have a hybrid kernel that works on
both PXA and MMP platforms, and then the condition is a runtime thing.
Daniel
More information about the linux-arm-kernel
mailing list