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>
This commit is contained in:
parent
df4aab46a8
commit
dc75602628
1 changed files with 3 additions and 1 deletions
|
@ -45,6 +45,7 @@ static struct gpio_controller __iomem * __init gpio2controller(unsigned gpio)
|
||||||
return __gpio_to_controller(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);
|
gpiochip_add(&chips[i].chip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
davinci_gpio_irq_setup();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pure_initcall(davinci_gpio_setup);
|
pure_initcall(davinci_gpio_setup);
|
||||||
|
@ -238,6 +240,7 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc)
|
||||||
mask <<= 16;
|
mask <<= 16;
|
||||||
|
|
||||||
/* temporarily mask (level sensitive) parent IRQ */
|
/* temporarily mask (level sensitive) parent IRQ */
|
||||||
|
desc->chip->mask(irq);
|
||||||
desc->chip->ack(irq);
|
desc->chip->ack(irq);
|
||||||
while (1) {
|
while (1) {
|
||||||
u32 status;
|
u32 status;
|
||||||
|
@ -333,4 +336,3 @@ static int __init davinci_gpio_irq_setup(void)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
arch_initcall(davinci_gpio_irq_setup);
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue