diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-25 01:00:36 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-25 01:00:36 +0100 |
commit | c946160e601c70a0ae0aa807461dd0232bcaf3a7 (patch) | |
tree | 0554732c1bb8ff38dac0ad143a6f455de11677f9 | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs-2.6 (diff) | |
parent | [ARM] 3348/1: Disable GPIO interrupts (diff) | |
download | linux-c946160e601c70a0ae0aa807461dd0232bcaf3a7.tar.xz linux-c946160e601c70a0ae0aa807461dd0232bcaf3a7.zip |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
-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 gpio = &irq_desc[pin]; while (isr) { - if (isr & 1) - gpio->handle(pin, gpio, regs); + if (isr & 1) { + if (unlikely(gpio->disable_depth)) { + /* + * The core ARM interrupt handler lazily disables IRQs so + * another IRQ must be generated before it actually gets + * here to be disabled on the GPIO controller. + */ + gpio_irq_mask(pin); + } + else + gpio->handle(pin, gpio, regs); + } pin++; gpio++; isr >>= 1; |