aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/irq.h66
1 files changed, 50 insertions, 16 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 002351d83c3f..0c83cbd2df4e 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -118,23 +118,38 @@ struct irq_data {
118 * struct irq_chip - hardware interrupt chip descriptor 118 * struct irq_chip - hardware interrupt chip descriptor
119 * 119 *
120 * @name: name for /proc/interrupts 120 * @name: name for /proc/interrupts
121 * @startup: start up the interrupt (defaults to ->enable if NULL) 121 * @startup: deprecated, replaced by irq_startup
122 * @shutdown: shut down the interrupt (defaults to ->disable if NULL) 122 * @shutdown: deprecated, replaced by irq_shutdown
123 * @enable: enable the interrupt (defaults to chip->unmask if NULL) 123 * @enable: deprecated, replaced by irq_enable
124 * @disable: disable the interrupt 124 * @disable: deprecated, replaced by irq_disable
125 * @ack: start of a new interrupt 125 * @ack: deprecated, replaced by irq_ack
126 * @mask: mask an interrupt source 126 * @mask: deprecated, replaced by irq_mask
127 * @mask_ack: ack and mask an interrupt source 127 * @mask_ack: deprecated, replaced by irq_mask_ack
128 * @unmask: unmask an interrupt source 128 * @unmask: deprecated, replaced by irq_unmask
129 * @eoi: end of interrupt - chip level 129 * @eoi: deprecated, replaced by irq_eoi
130 * @end: end of interrupt - flow level 130 * @end: deprecated, will go away with __do_IRQ()
131 * @set_affinity: set the CPU affinity on SMP machines 131 * @set_affinity: deprecated, replaced by irq_set_affinity
132 * @retrigger: resend an IRQ to the CPU 132 * @retrigger: deprecated, replaced by irq_retrigger
133 * @set_type: set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ 133 * @set_type: deprecated, replaced by irq_set_type
134 * @set_wake: enable/disable power-management wake-on of an IRQ 134 * @set_wake: deprecated, replaced by irq_wake
135 * @bus_lock: deprecated, replaced by irq_bus_lock
136 * @bus_sync_unlock: deprecated, replaced by irq_bus_sync_unlock
135 * 137 *
136 * @bus_lock: function to lock access to slow bus (i2c) chips 138 * @irq_startup: start up the interrupt (defaults to ->enable if NULL)
137 * @bus_sync_unlock: function to sync and unlock slow bus (i2c) chips 139 * @irq_shutdown: shut down the interrupt (defaults to ->disable if NULL)
140 * @irq_enable: enable the interrupt (defaults to chip->unmask if NULL)
141 * @irq_disable: disable the interrupt
142 * @irq_ack: start of a new interrupt
143 * @irq_mask: mask an interrupt source
144 * @irq_mask_ack: ack and mask an interrupt source
145 * @irq_unmask: unmask an interrupt source
146 * @irq_eoi: end of interrupt
147 * @irq_set_affinity: set the CPU affinity on SMP machines
148 * @irq_retrigger: resend an IRQ to the CPU
149 * @irq_set_type: set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
150 * @irq_set_wake: enable/disable power-management wake-on of an IRQ
151 * @irq_bus_lock: function to lock access to slow bus (i2c) chips
152 * @irq_bus_sync_unlock:function to sync and unlock slow bus (i2c) chips
138 * 153 *
139 * @release: release function solely used by UML 154 * @release: release function solely used by UML
140 */ 155 */
@@ -161,6 +176,25 @@ struct irq_chip {
161 void (*bus_lock)(unsigned int irq); 176 void (*bus_lock)(unsigned int irq);
162 void (*bus_sync_unlock)(unsigned int irq); 177 void (*bus_sync_unlock)(unsigned int irq);
163 178
179 unsigned int (*irq_startup)(struct irq_data *data);
180 void (*irq_shutdown)(struct irq_data *data);
181 void (*irq_enable)(struct irq_data *data);
182 void (*irq_disable)(struct irq_data *data);
183
184 void (*irq_ack)(struct irq_data *data);
185 void (*irq_mask)(struct irq_data *data);
186 void (*irq_mask_ack)(struct irq_data *data);
187 void (*irq_unmask)(struct irq_data *data);
188 void (*irq_eoi)(struct irq_data *data);
189
190 int (*irq_set_affinity)(struct irq_data *data, const struct cpumask *dest, bool force);
191 int (*irq_retrigger)(struct irq_data *data);
192 int (*irq_set_type)(struct irq_data *data, unsigned int flow_type);
193 int (*irq_set_wake)(struct irq_data *data, unsigned int on);
194
195 void (*irq_bus_lock)(struct irq_data *data);
196 void (*irq_bus_sync_unlock)(struct irq_data *data);
197
164 /* Currently used only by UML, might disappear one day.*/ 198 /* Currently used only by UML, might disappear one day.*/
165#ifdef CONFIG_IRQ_RELEASE_METHOD 199#ifdef CONFIG_IRQ_RELEASE_METHOD
166 void (*release)(unsigned int irq, void *dev_id); 200 void (*release)(unsigned int irq, void *dev_id);