Avoid the whole lazy disable dance in the demux handler by providing a
irq_disable() callback.
Use the proper accessor functions and tidy up gpio_irq_handler()
[...]Signed-off-by: Thomas Gleixner<tglx@xxxxxxxxxxxxx>
[...]Index: linux-2.6-tip/arch/arm/mach-at91/gpio.c
===================================================================
--- linux-2.6-tip.orig/arch/arm/mach-at91/gpio.c
+++ linux-2.6-tip/arch/arm/mach-at91/gpio.c
@@ -384,16 +385,14 @@ static struct irq_chip gpio_irqchip = {
static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
{
unsigned pin;
- struct irq_desc *gpio;
- struct at91_gpio_chip *at91_gpio;
- void __iomem *pio;
+ struct irq_data *idata = irq_desc_get_irq_data(desc);
+ struct irq_chip *chip = irq_data_get_chip(data);
+ struct at91_gpio_chip *at91_gpio = irq_data_get_chip_data(data);
Sorry, needs to be
+ struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(data);
Will fix and resend.