diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2012-02-08 11:57:52 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-29 16:34:29 -0800 |
commit | fd844dabebb45631b2e99a02ee6601ca136f10bd (patch) | |
tree | c3248a0de08819d0ab23ec217936a307b35d91f1 /kernel/irq/internals.h | |
parent | b7f0787da3657100fe8fc8b3f0565b0bee341510 (diff) | |
download | kernel_samsung_crespo-fd844dabebb45631b2e99a02ee6601ca136f10bd.zip kernel_samsung_crespo-fd844dabebb45631b2e99a02ee6601ca136f10bd.tar.gz kernel_samsung_crespo-fd844dabebb45631b2e99a02ee6601ca136f10bd.tar.bz2 |
genirq: Handle pending irqs in irq_startup()
commit b4bc724e82e80478cba5fe9825b62e71ddf78757 upstream.
An interrupt might be pending when irq_startup() is called, but the
startup code does not invoke the resend logic. In some cases this
prevents the device from issuing another interrupt which renders the
device non functional.
Call the resend function in irq_startup() to keep things going.
Reported-and-tested-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/irq/internals.h')
-rw-r--r-- | kernel/irq/internals.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h index 6546431..62efdc4 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h @@ -67,7 +67,7 @@ extern int __irq_set_trigger(struct irq_desc *desc, unsigned int irq, extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp); extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume); -extern int irq_startup(struct irq_desc *desc); +extern int irq_startup(struct irq_desc *desc, bool resend); extern void irq_shutdown(struct irq_desc *desc); extern void irq_enable(struct irq_desc *desc); extern void irq_disable(struct irq_desc *desc); |