aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gleixner <[email protected]>2011-06-06 11:51:43 +0200
committerSekhar Nori <[email protected]>2011-06-08 14:33:52 +0530
commit7416401661fad5c7ee9edb17cb54e7bff7a74dfe (patch)
tree598260d3ccbdeb7bb8b93c0ee6ec79fda48bbf28
parent59c5f46fbe01a00eedf54a23789634438bb80603 (diff)
arm: davinci: Fix fallout from generic irq chip conversion
The code which does the chained handler setup was overwriting chip_data. Signed-off-by: Thomas Gleixner <[email protected]> Tested-by: Holger Hans Peter Freyther <[email protected]> Signed-off-by: Kevin Hilman <[email protected]> Signed-off-by: Sekhar Nori <[email protected]>
-rw-r--r--arch/arm/mach-davinci/gpio.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/mach-davinci/gpio.c b/arch/arm/mach-davinci/gpio.c
index a0b838894ac9..e7221398e5af 100644
--- a/arch/arm/mach-davinci/gpio.c
+++ b/arch/arm/mach-davinci/gpio.c
@@ -252,9 +252,11 @@ static struct irq_chip gpio_irqchip = {
static void
gpio_irq_handler(unsigned irq, struct irq_desc *desc)
{
- struct davinci_gpio_regs __iomem *g = irq2regs(irq);
+ struct davinci_gpio_regs __iomem *g;
u32 mask = 0xffff;
+ g = (__force struct davinci_gpio_regs __iomem *) irq_desc_get_handler_data(desc);
+
/* we only care about one bank */
if (irq & 1)
mask <<= 16;
@@ -422,8 +424,7 @@ static int __init davinci_gpio_irq_setup(void)
/* set up all irqs in this bank */
irq_set_chained_handler(bank_irq, gpio_irq_handler);
- irq_set_chip_data(bank_irq, (__force void *)g);
- irq_set_handler_data(bank_irq, (void *)irq);
+ irq_set_handler_data(bank_irq, (__force void *)g);
for (i = 0; i < 16 && gpio < ngpio; i++, irq++, gpio++) {
irq_set_chip(irq, &gpio_irqchip);