aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/irq.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r--include/linux/irq.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 7dc10036eff5..d278838908cb 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -303,6 +303,10 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d)
303 * @irq_pm_shutdown: function called from core code on shutdown once per chip 303 * @irq_pm_shutdown: function called from core code on shutdown once per chip
304 * @irq_calc_mask: Optional function to set irq_data.mask for special cases 304 * @irq_calc_mask: Optional function to set irq_data.mask for special cases
305 * @irq_print_chip: optional to print special chip info in show_interrupts 305 * @irq_print_chip: optional to print special chip info in show_interrupts
306 * @irq_request_resources: optional to request resources before calling
307 * any other callback related to this irq
308 * @irq_release_resources: optional to release resources acquired with
309 * irq_request_resources
306 * @flags: chip specific flags 310 * @flags: chip specific flags
307 */ 311 */
308struct irq_chip { 312struct irq_chip {
@@ -336,6 +340,8 @@ struct irq_chip {
336 void (*irq_calc_mask)(struct irq_data *data); 340 void (*irq_calc_mask)(struct irq_data *data);
337 341
338 void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); 342 void (*irq_print_chip)(struct irq_data *data, struct seq_file *p);
343 int (*irq_request_resources)(struct irq_data *data);
344 void (*irq_release_resources)(struct irq_data *data);
339 345
340 unsigned long flags; 346 unsigned long flags;
341}; 347};
@@ -349,6 +355,8 @@ struct irq_chip {
349 * IRQCHIP_ONOFFLINE_ENABLED: Only call irq_on/off_line callbacks 355 * IRQCHIP_ONOFFLINE_ENABLED: Only call irq_on/off_line callbacks
350 * when irq enabled 356 * when irq enabled
351 * IRQCHIP_SKIP_SET_WAKE: Skip chip.irq_set_wake(), for this irq chip 357 * IRQCHIP_SKIP_SET_WAKE: Skip chip.irq_set_wake(), for this irq chip
358 * IRQCHIP_ONESHOT_SAFE: One shot does not require mask/unmask
359 * IRQCHIP_EOI_THREADED: Chip requires eoi() on unmask in threaded mode
352 */ 360 */
353enum { 361enum {
354 IRQCHIP_SET_TYPE_MASKED = (1 << 0), 362 IRQCHIP_SET_TYPE_MASKED = (1 << 0),
@@ -357,6 +365,7 @@ enum {
357 IRQCHIP_ONOFFLINE_ENABLED = (1 << 3), 365 IRQCHIP_ONOFFLINE_ENABLED = (1 << 3),
358 IRQCHIP_SKIP_SET_WAKE = (1 << 4), 366 IRQCHIP_SKIP_SET_WAKE = (1 << 4),
359 IRQCHIP_ONESHOT_SAFE = (1 << 5), 367 IRQCHIP_ONESHOT_SAFE = (1 << 5),
368 IRQCHIP_EOI_THREADED = (1 << 6),
360}; 369};
361 370
362/* This include will go away once we isolated irq_desc usage to core code */ 371/* This include will go away once we isolated irq_desc usage to core code */