forked from Minki/linux
powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO driver
Interrupt handler in MPC8xxx GPIO driver is missing the call to PIC EOI (end of interrupt) handler. As a result, at least on 85XX systems, GPIO interrupt is delivered only once. This patch adds the missing EOI call. Tested on custom P1022 board. Signed-off-by: Felix Radensky <felix@embedded-sol.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
15a5148c6f
commit
cfadd83852
@ -146,6 +146,7 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
|
|||||||
static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
|
static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
|
||||||
{
|
{
|
||||||
struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
|
struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc);
|
||||||
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
||||||
struct of_mm_gpio_chip *mm = &mpc8xxx_gc->mm_gc;
|
struct of_mm_gpio_chip *mm = &mpc8xxx_gc->mm_gc;
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
|
|
||||||
@ -153,6 +154,7 @@ static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc)
|
|||||||
if (mask)
|
if (mask)
|
||||||
generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq,
|
generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq,
|
||||||
32 - ffs(mask)));
|
32 - ffs(mask)));
|
||||||
|
chip->irq_eoi(&desc->irq_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mpc8xxx_irq_unmask(struct irq_data *d)
|
static void mpc8xxx_irq_unmask(struct irq_data *d)
|
||||||
|
Loading…
Reference in New Issue
Block a user