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.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 2ba2f1216790..8b4538446636 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -280,6 +280,9 @@ static inline void irqd_clr_chained_irq_inprogress(struct irq_data *d)
280 * @irq_bus_sync_unlock:function to sync and unlock slow bus (i2c) chips 280 * @irq_bus_sync_unlock:function to sync and unlock slow bus (i2c) chips
281 * @irq_cpu_online: configure an interrupt source for a secondary CPU 281 * @irq_cpu_online: configure an interrupt source for a secondary CPU
282 * @irq_cpu_offline: un-configure an interrupt source for a secondary CPU 282 * @irq_cpu_offline: un-configure an interrupt source for a secondary CPU
283 * @irq_suspend: function called from core code on suspend once per chip
284 * @irq_resume: function called from core code on resume once per chip
285 * @irq_pm_shutdown: function called from core code on shutdown once per chip
283 * @irq_print_chip: optional to print special chip info in show_interrupts 286 * @irq_print_chip: optional to print special chip info in show_interrupts
284 * @flags: chip specific flags 287 * @flags: chip specific flags
285 * 288 *
@@ -309,6 +312,10 @@ struct irq_chip {
309 void (*irq_cpu_online)(struct irq_data *data); 312 void (*irq_cpu_online)(struct irq_data *data);
310 void (*irq_cpu_offline)(struct irq_data *data); 313 void (*irq_cpu_offline)(struct irq_data *data);
311 314
315 void (*irq_suspend)(struct irq_data *data);
316 void (*irq_resume)(struct irq_data *data);
317 void (*irq_pm_shutdown)(struct irq_data *data);
318
312 void (*irq_print_chip)(struct irq_data *data, struct seq_file *p); 319 void (*irq_print_chip)(struct irq_data *data, struct seq_file *p);
313 320
314 unsigned long flags; 321 unsigned long flags;
@@ -626,6 +633,7 @@ struct irq_chip_type {
626 * @wake_active: Interrupt is marked as an wakeup from suspend source 633 * @wake_active: Interrupt is marked as an wakeup from suspend source
627 * @num_ct: Number of available irq_chip_type instances (usually 1) 634 * @num_ct: Number of available irq_chip_type instances (usually 1)
628 * @private: Private data for non generic chip callbacks 635 * @private: Private data for non generic chip callbacks
636 * @list: List head for keeping track of instances
629 * @chip_types: Array of interrupt irq_chip_types 637 * @chip_types: Array of interrupt irq_chip_types
630 * 638 *
631 * Note, that irq_chip_generic can have multiple irq_chip_type 639 * Note, that irq_chip_generic can have multiple irq_chip_type
@@ -646,6 +654,7 @@ struct irq_chip_generic {
646 u32 wake_active; 654 u32 wake_active;
647 unsigned int num_ct; 655 unsigned int num_ct;
648 void *private; 656 void *private;
657 struct list_head list;
649 struct irq_chip_type chip_types[0]; 658 struct irq_chip_type chip_types[0];
650}; 659};
651 660
@@ -680,6 +689,8 @@ void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk,
680 enum irq_gc_flags flags, unsigned int clr, 689 enum irq_gc_flags flags, unsigned int clr,
681 unsigned int set); 690 unsigned int set);
682int irq_setup_alt_chip(struct irq_data *d, unsigned int type); 691int irq_setup_alt_chip(struct irq_data *d, unsigned int type);
692void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk,
693 unsigned int clr, unsigned int set);
683 694
684static inline struct irq_chip_type *irq_data_get_chip_type(struct irq_data *d) 695static inline struct irq_chip_type *irq_data_get_chip_type(struct irq_data *d)
685{ 696{