diff options
Diffstat (limited to 'include/linux/interrupt.h')
-rw-r--r-- | include/linux/interrupt.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 9127f6b51a39..c68bffd182bb 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -61,6 +61,17 @@ | |||
61 | 61 | ||
62 | typedef irqreturn_t (*irq_handler_t)(int, void *); | 62 | typedef irqreturn_t (*irq_handler_t)(int, void *); |
63 | 63 | ||
64 | /** | ||
65 | * struct irqaction - per interrupt action descriptor | ||
66 | * @handler: interrupt handler function | ||
67 | * @flags: flags (see IRQF_* above) | ||
68 | * @mask: no comment as it is useless and about to be removed | ||
69 | * @name: name of the device | ||
70 | * @dev_id: cookie to identify the device | ||
71 | * @next: pointer to the next irqaction for shared interrupts | ||
72 | * @irq: interrupt number | ||
73 | * @dir: pointer to the proc/irq/NN/name entry | ||
74 | */ | ||
64 | struct irqaction { | 75 | struct irqaction { |
65 | irq_handler_t handler; | 76 | irq_handler_t handler; |
66 | unsigned long flags; | 77 | unsigned long flags; |
@@ -106,6 +117,15 @@ extern void disable_irq_nosync(unsigned int irq); | |||
106 | extern void disable_irq(unsigned int irq); | 117 | extern void disable_irq(unsigned int irq); |
107 | extern void enable_irq(unsigned int irq); | 118 | extern void enable_irq(unsigned int irq); |
108 | 119 | ||
120 | /* The following three functions are for the core kernel use only. */ | ||
121 | extern void suspend_device_irqs(void); | ||
122 | extern void resume_device_irqs(void); | ||
123 | #ifdef CONFIG_PM_SLEEP | ||
124 | extern int check_wakeup_irqs(void); | ||
125 | #else | ||
126 | static inline int check_wakeup_irqs(void) { return 0; } | ||
127 | #endif | ||
128 | |||
109 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) | 129 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) |
110 | 130 | ||
111 | extern cpumask_var_t irq_default_affinity; | 131 | extern cpumask_var_t irq_default_affinity; |
@@ -462,11 +482,18 @@ static inline void init_irq_proc(void) | |||
462 | } | 482 | } |
463 | #endif | 483 | #endif |
464 | 484 | ||
485 | #if defined(CONFIG_GENERIC_HARDIRQS) && defined(CONFIG_DEBUG_SHIRQ) | ||
486 | extern void debug_poll_all_shared_irqs(void); | ||
487 | #else | ||
488 | static inline void debug_poll_all_shared_irqs(void) { } | ||
489 | #endif | ||
490 | |||
465 | int show_interrupts(struct seq_file *p, void *v); | 491 | int show_interrupts(struct seq_file *p, void *v); |
466 | 492 | ||
467 | struct irq_desc; | 493 | struct irq_desc; |
468 | 494 | ||
469 | extern int early_irq_init(void); | 495 | extern int early_irq_init(void); |
496 | extern int arch_probe_nr_irqs(void); | ||
470 | extern int arch_early_irq_init(void); | 497 | extern int arch_early_irq_init(void); |
471 | extern int arch_init_chip_data(struct irq_desc *desc, int cpu); | 498 | extern int arch_init_chip_data(struct irq_desc *desc, int cpu); |
472 | 499 | ||