diff options
author | Paul Mackerras <paulus@samba.org> | 2006-02-28 00:35:24 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-02-28 00:35:24 -0500 |
commit | 6749c5507388f3fc3719f57a54b540ee83f6661a (patch) | |
tree | c069f990f86b020a14b50759d0c75475eedde186 /arch/arm/mach-at91rm9200/gpio.c | |
parent | 2cf82c0256b198ae28c465f2c4d7c12c836ea5ea (diff) | |
parent | 56ec6462af9cba56a04439154e5768672d6f390f (diff) |
Merge ../powerpc-merge
Diffstat (limited to 'arch/arm/mach-at91rm9200/gpio.c')
-rw-r--r-- | arch/arm/mach-at91rm9200/gpio.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c index a9f718bf8ba8..0e396feec468 100644 --- a/arch/arm/mach-at91rm9200/gpio.c +++ b/arch/arm/mach-at91rm9200/gpio.c | |||
@@ -274,8 +274,18 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs | |||
274 | gpio = &irq_desc[pin]; | 274 | gpio = &irq_desc[pin]; |
275 | 275 | ||
276 | while (isr) { | 276 | while (isr) { |
277 | if (isr & 1) | 277 | if (isr & 1) { |
278 | gpio->handle(pin, gpio, regs); | 278 | if (unlikely(gpio->disable_depth)) { |
279 | /* | ||
280 | * The core ARM interrupt handler lazily disables IRQs so | ||
281 | * another IRQ must be generated before it actually gets | ||
282 | * here to be disabled on the GPIO controller. | ||
283 | */ | ||
284 | gpio_irq_mask(pin); | ||
285 | } | ||
286 | else | ||
287 | gpio->handle(pin, gpio, regs); | ||
288 | } | ||
279 | pin++; | 289 | pin++; |
280 | gpio++; | 290 | gpio++; |
281 | isr >>= 1; | 291 | isr >>= 1; |