From c9980d0387b41583cce95a493c36aa1ce204fb39 Mon Sep 17 00:00:00 2001 From: eric miao Date: Tue, 4 Mar 2008 11:12:14 +0800 Subject: [PATCH] --- yaml --- r: 91216 b: refs/heads/master c: a7bf4dbabac2a1ccd56527a56c82af720e7a00d1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-pxa/irq.c | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index dc3590018297..0498db668c15 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a26d3a33fd9adcbfd4fa2ca2d7e8a8272817935 +refs/heads/master: a7bf4dbabac2a1ccd56527a56c82af720e7a00d1 diff --git a/trunk/arch/arm/mach-pxa/irq.c b/trunk/arch/arm/mach-pxa/irq.c index 381fde66aeeb..ce150bf00bdd 100644 --- a/trunk/arch/arm/mach-pxa/irq.c +++ b/trunk/arch/arm/mach-pxa/irq.c @@ -166,11 +166,21 @@ static void pxa_ack_low_gpio(unsigned int irq) GEDR0 = (1 << (irq - IRQ_GPIO0)); } +static void pxa_mask_low_gpio(unsigned int irq) +{ + ICMR &= ~(1 << (irq - PXA_IRQ(0))); +} + +static void pxa_unmask_low_gpio(unsigned int irq) +{ + ICMR |= 1 << (irq - PXA_IRQ(0)); +} + static struct irq_chip pxa_low_gpio_chip = { .name = "GPIO-l", .ack = pxa_ack_low_gpio, - .mask = pxa_mask_low_irq, - .unmask = pxa_unmask_low_irq, + .mask = pxa_mask_low_gpio, + .unmask = pxa_unmask_low_gpio, .set_type = pxa_gpio_irq_type, }; @@ -267,20 +277,24 @@ void __init pxa_init_irq_gpio(int gpio_nr) } /* Install handler for GPIO>=2 edge detect interrupts */ - set_irq_chip(IRQ_GPIO_2_x, &pxa_internal_chip_low); set_irq_chained_handler(IRQ_GPIO_2_x, pxa_gpio_demux_handler); pxa_init_gpio(gpio_nr); } +void __init pxa_init_gpio_set_wake(int (*set_wake)(unsigned int, unsigned int)) +{ + pxa_low_gpio_chip.set_wake = set_wake; + pxa_muxed_gpio_chip.set_wake = set_wake; +} + void __init pxa_init_irq_set_wake(int (*set_wake)(unsigned int, unsigned int)) { pxa_internal_chip_low.set_wake = set_wake; #ifdef CONFIG_PXA27x pxa_internal_chip_high.set_wake = set_wake; #endif - pxa_low_gpio_chip.set_wake = set_wake; - pxa_muxed_gpio_chip.set_wake = set_wake; + pxa_init_gpio_set_wake(set_wake); } #ifdef CONFIG_PM