Commit 693de831 authored by Russell King's avatar Russell King Committed by Linus Walleij

gpio: omap: remove irq_ack method

The irq_ack method does not fit our hardware requirements. Edge
interrupts must be cleared before we handle them, and level interrupts
must be cleared after handling them.

We handle the interrupt clearance in our interrupt handler for edge IRQs
and in the unmask method for level IRQs.

Replace the irq_ack method with the no-op method from the dummy irq
chip.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
Tested-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 395373c7
...@@ -852,14 +852,6 @@ static void gpio_irq_bus_sync_unlock(struct irq_data *data) ...@@ -852,14 +852,6 @@ static void gpio_irq_bus_sync_unlock(struct irq_data *data)
pm_runtime_put(bank->chip.parent); pm_runtime_put(bank->chip.parent);
} }
static void omap_gpio_ack_irq(struct irq_data *d)
{
struct gpio_bank *bank = omap_irq_data_get_bank(d);
unsigned offset = d->hwirq;
omap_clear_gpio_irqstatus(bank, offset);
}
static void omap_gpio_mask_irq(struct irq_data *d) static void omap_gpio_mask_irq(struct irq_data *d)
{ {
struct gpio_bank *bank = omap_irq_data_get_bank(d); struct gpio_bank *bank = omap_irq_data_get_bank(d);
...@@ -1181,11 +1173,8 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) ...@@ -1181,11 +1173,8 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)
#endif #endif
/* MPUIO is a bit different, reading IRQ status clears it */ /* MPUIO is a bit different, reading IRQ status clears it */
if (bank->is_mpuio) { if (bank->is_mpuio && !bank->regs->wkup_en)
irqc->irq_ack = dummy_irq_chip.irq_ack; irqc->irq_set_wake = NULL;
if (!bank->regs->wkup_en)
irqc->irq_set_wake = NULL;
}
irq = &bank->chip.irq; irq = &bank->chip.irq;
irq->chip = irqc; irq->chip = irqc;
...@@ -1531,7 +1520,7 @@ static int omap_gpio_probe(struct platform_device *pdev) ...@@ -1531,7 +1520,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
irqc->irq_startup = omap_gpio_irq_startup, irqc->irq_startup = omap_gpio_irq_startup,
irqc->irq_shutdown = omap_gpio_irq_shutdown, irqc->irq_shutdown = omap_gpio_irq_shutdown,
irqc->irq_ack = omap_gpio_ack_irq, irqc->irq_ack = dummy_irq_chip.irq_ack,
irqc->irq_mask = omap_gpio_mask_irq, irqc->irq_mask = omap_gpio_mask_irq,
irqc->irq_unmask = omap_gpio_unmask_irq, irqc->irq_unmask = omap_gpio_unmask_irq,
irqc->irq_set_type = omap_gpio_irq_type, irqc->irq_set_type = omap_gpio_irq_type,
......
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