Commit 07d265dd authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Russell King

[ARM] 3683/2: ARM: Convert at91rm9200 to generic irq handling

Patch from Thomas Gleixner

From: Thomas Gleixner <tglx@linutronix.de>

Fixup the conversion to generic irq subsystem.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 698dfe2b
...@@ -10,12 +10,13 @@ ...@@ -10,12 +10,13 @@
*/ */
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/module.h> #include <linux/module.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/mach/irq.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
...@@ -340,7 +341,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs ...@@ -340,7 +341,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
void __iomem *pio; void __iomem *pio;
u32 isr; u32 isr;
pio = desc->base; pio = get_irq_chip_data(irq);
/* temporarily mask (level sensitive) parent IRQ */ /* temporarily mask (level sensitive) parent IRQ */
desc->chip->ack(irq); desc->chip->ack(irq);
...@@ -350,12 +351,12 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs ...@@ -350,12 +351,12 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
if (!isr) if (!isr)
break; break;
pin = (unsigned) desc->data; pin = (unsigned) get_irq_data(irq);
gpio = &irq_desc[pin]; gpio = &irq_desc[pin];
while (isr) { while (isr) {
if (isr & 1) { if (isr & 1) {
if (unlikely(gpio->disable_depth)) { if (unlikely(gpio->depth)) {
/* /*
* The core ARM interrupt handler lazily disables IRQs so * The core ARM interrupt handler lazily disables IRQs so
* another IRQ must be generated before it actually gets * another IRQ must be generated before it actually gets
...@@ -364,7 +365,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs ...@@ -364,7 +365,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
gpio_irq_mask(pin); gpio_irq_mask(pin);
} }
else else
gpio->handle(pin, gpio, regs); desc_handle_irq(pin, gpio, regs);
} }
pin++; pin++;
gpio++; gpio++;
......
...@@ -21,13 +21,13 @@ ...@@ -21,13 +21,13 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/time.h> #include <linux/time.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/irq.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
static unsigned long last_crtr; static unsigned long last_crtr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment