aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Hilman <khilman@mvista.com>2007-12-18 12:05:58 -0500
committerIngo Molnar <mingo@elte.hu>2007-12-18 12:05:58 -0500
commitb019e57321f3e006c0ec7a54f13efc377bcb6451 (patch)
tree9ed37924d702981a04f86db0300d9c3aff709ca9
parentcdc6f27d9e3c2f7ca1a3e19c6eabb1ad6a2add5d (diff)
genirq: add unlocked version of set_irq_handler()
Add unlocked version for use by irq_chip.set_type handlers which may wish to change handler to level or edge handler when IRQ type is changed. The normal set_irq_handler() call cannot be used because it tries to take irq_desc.lock which is already held when the irq_chip.set_type hook is called. Signed-off-by: Kevin Hilman <khilman@mvista.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--include/linux/irq.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h
index efc88538b2ba..4669be080617 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -339,6 +339,13 @@ extern void
339__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, 339__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
340 const char *name); 340 const char *name);
341 341
342/* caller has locked the irq_desc and both params are valid */
343static inline void __set_irq_handler_unlocked(int irq,
344 irq_flow_handler_t handler)
345{
346 irq_desc[irq].handle_irq = handler;
347}
348
342/* 349/*
343 * Set a highlevel flow handler for a given IRQ: 350 * Set a highlevel flow handler for a given IRQ:
344 */ 351 */