diff options
author | 2011-04-12 18:39:39 +0800 | |
---|---|---|
committer | 2011-04-13 09:30:40 +0800 | |
commit | 7db6a7fa09884b34d2a5d4e6e4ed58664a5f0cf8 (patch) | |
tree | fba3439bafcfaa4640a9f943be6746580203134e /arch/arm/mach-pxa/include/mach/gpio.h | |
parent | ARM: mmp: align NR_BUILTIN_GPIO with gpio interrupt number (diff) | |
download | linux-dev-7db6a7fa09884b34d2a5d4e6e4ed58664a5f0cf8.tar.xz linux-dev-7db6a7fa09884b34d2a5d4e6e4ed58664a5f0cf8.zip |
ARM: pxa: convert incorrect IRQ_TO_IRQ() to irq_to_gpio()
This fixes the failure to register the IRQ_RTCAlrm alarm as a wakeup
event. It is misinterpreted as a gpio irq not a PWER bitmask. Fixed
this by converting the incorrect IRQ_TO_IRQ() to a correct version of
irq_to_gpio().
Reported-by: Nick Bane <nickbane1@gmail.com>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
Diffstat (limited to 'arch/arm/mach-pxa/include/mach/gpio.h')
-rw-r--r-- | arch/arm/mach-pxa/include/mach/gpio.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-pxa/include/mach/gpio.h b/arch/arm/mach-pxa/include/mach/gpio.h index 48ef925ffb3b..c4639502efca 100644 --- a/arch/arm/mach-pxa/include/mach/gpio.h +++ b/arch/arm/mach-pxa/include/mach/gpio.h @@ -103,7 +103,20 @@ #define gpio_to_bank(gpio) ((gpio) >> 5) #define gpio_to_irq(gpio) IRQ_GPIO(gpio) -#define irq_to_gpio(irq) IRQ_TO_GPIO(irq) + +static inline int irq_to_gpio(unsigned int irq) +{ + int gpio; + + if (irq == IRQ_GPIO0 || irq == IRQ_GPIO1) + return irq - IRQ_GPIO0; + + gpio = irq - PXA_GPIO_IRQ_BASE; + if (gpio >= 2 && gpio < NR_BUILTIN_GPIO) + return gpio; + + return -1; +} #ifdef CONFIG_CPU_PXA26x /* GPIO86/87/88/89 on PXA26x have their direction bits in GPDR2 inverted, |