Jelajahi Sumber

davinci: fixups for banked GPIO interrupt handling

This patch seems to get me much more reliable performance using the
GPIO banked interrupts on dm355 for the dm9000 driver.

Changes include:

- init GPIO handling along with normal GPIO init
- mask the level-sensitive bank IRQ during handling

Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Kevin Hilman 16 tahun lalu
induk
melakukan
dc75602628
1 mengubah file dengan 3 tambahan dan 1 penghapusan
  1. 3 1
      arch/arm/mach-davinci/gpio.c

+ 3 - 1
arch/arm/mach-davinci/gpio.c

@@ -45,6 +45,7 @@ static struct gpio_controller __iomem * __init gpio2controller(unsigned gpio)
 	return __gpio_to_controller(gpio);
 }
 
+static int __init davinci_gpio_irq_setup(void);
 
 /*--------------------------------------------------------------------------*/
 
@@ -157,6 +158,7 @@ static int __init davinci_gpio_setup(void)
 		gpiochip_add(&chips[i].chip);
 	}
 
+	davinci_gpio_irq_setup();
 	return 0;
 }
 pure_initcall(davinci_gpio_setup);
@@ -238,6 +240,7 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 		mask <<= 16;
 
 	/* temporarily mask (level sensitive) parent IRQ */
+	desc->chip->mask(irq);
 	desc->chip->ack(irq);
 	while (1) {
 		u32		status;
@@ -333,4 +336,3 @@ static int __init davinci_gpio_irq_setup(void)
 
 	return 0;
 }
-arch_initcall(davinci_gpio_irq_setup);