aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-29 13:46:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-29 13:46:15 -0400
commitc86defc82c18b648193b5c6aabcc6204fd6bb373 (patch)
tree1ef70cfa56f5f9a123d0db6fefe4c434c12bd6c6 /include
parent1309d7afbed112f0e8e90be9af975550caa0076b (diff)
parent9ad198cba2a8177eea6a7f2f0202b910abdef96b (diff)
Merge branch 'irq-final-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'irq-final-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (111 commits) gpio: ab8500: Mark broken genirq: Remove move_*irq leftovers genirq: Remove compat code drivers: Final irq namespace conversion mn10300: Use generic show_interrupts() mn10300: Cleanup irq_desc access mn10300: Convert genirq namespace frv: Use generic show_interrupts() frv: Convert genirq namespace frv: Select GENERIC_HARDIRQS_NO_DEPRECATED frv: Convert cpu irq_chip to new functions frv: Convert mb93493 irq_chip to new functions frv: Convert mb93093 irq_chip to new function frv: Convert mb93091 irq_chip to new functions frv: Fix typo from __do_IRQ overhaul frv: Remove stale irq_chip.end m68k: Convert irq function namespace xen: Use new irq_move functions xen: Cleanup genirq namespace unicore32: Use generic show_interrupts() ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/irq.h121
-rw-r--r--include/linux/irqdesc.h60
2 files changed, 1 insertions, 180 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h
index b3741c83774c..2a375a72ce3c 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -92,18 +92,6 @@ enum {
92 IRQ_NO_BALANCING = (1 << 13), 92 IRQ_NO_BALANCING = (1 << 13),
93 IRQ_MOVE_PCNTXT = (1 << 14), 93 IRQ_MOVE_PCNTXT = (1 << 14),
94 IRQ_NESTED_THREAD = (1 << 15), 94 IRQ_NESTED_THREAD = (1 << 15),
95
96#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
97 IRQ_INPROGRESS = (1 << 16),
98 IRQ_REPLAY = (1 << 17),
99 IRQ_WAITING = (1 << 18),
100 IRQ_DISABLED = (1 << 19),
101 IRQ_PENDING = (1 << 20),
102 IRQ_MASKED = (1 << 21),
103 IRQ_MOVE_PENDING = (1 << 22),
104 IRQ_AFFINITY_SET = (1 << 23),
105 IRQ_WAKEUP = (1 << 24),
106#endif
107}; 95};
108 96
109#define IRQF_MODIFY_MASK \ 97#define IRQF_MODIFY_MASK \
@@ -321,28 +309,6 @@ static inline void irqd_clr_chained_irq_inprogress(struct irq_data *d)
321 */ 309 */
322struct irq_chip { 310struct irq_chip {
323 const char *name; 311 const char *name;
324#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
325 unsigned int (*startup)(unsigned int irq);
326 void (*shutdown)(unsigned int irq);
327 void (*enable)(unsigned int irq);
328 void (*disable)(unsigned int irq);
329
330 void (*ack)(unsigned int irq);
331 void (*mask)(unsigned int irq);
332 void (*mask_ack)(unsigned int irq);
333 void (*unmask)(unsigned int irq);
334 void (*eoi)(unsigned int irq);
335
336 void (*end)(unsigned int irq);
337 int (*set_affinity)(unsigned int irq,
338 const struct cpumask *dest);
339 int (*retrigger)(unsigned int irq);
340 int (*set_type)(unsigned int irq, unsigned int flow_type);
341 int (*set_wake)(unsigned int irq, unsigned int on);
342
343 void (*bus_lock)(unsigned int irq);
344 void (*bus_sync_unlock)(unsigned int irq);
345#endif
346 unsigned int (*irq_startup)(struct irq_data *data); 312 unsigned int (*irq_startup)(struct irq_data *data);
347 void (*irq_shutdown)(struct irq_data *data); 313 void (*irq_shutdown)(struct irq_data *data);
348 void (*irq_enable)(struct irq_data *data); 314 void (*irq_enable)(struct irq_data *data);
@@ -420,13 +386,9 @@ extern int __irq_set_affinity_locked(struct irq_data *data, const struct cpumas
420#ifdef CONFIG_GENERIC_HARDIRQS 386#ifdef CONFIG_GENERIC_HARDIRQS
421 387
422#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ) 388#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ)
423void move_native_irq(int irq);
424void move_masked_irq(int irq);
425void irq_move_irq(struct irq_data *data); 389void irq_move_irq(struct irq_data *data);
426void irq_move_masked_irq(struct irq_data *data); 390void irq_move_masked_irq(struct irq_data *data);
427#else 391#else
428static inline void move_native_irq(int irq) { }
429static inline void move_masked_irq(int irq) { }
430static inline void irq_move_irq(struct irq_data *data) { } 392static inline void irq_move_irq(struct irq_data *data) { }
431static inline void irq_move_masked_irq(struct irq_data *data) { } 393static inline void irq_move_masked_irq(struct irq_data *data) { }
432#endif 394#endif
@@ -589,89 +551,6 @@ static inline struct msi_desc *irq_data_get_msi(struct irq_data *d)
589 return d->msi_desc; 551 return d->msi_desc;
590} 552}
591 553
592#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
593/* Please do not use: Use the replacement functions instead */
594static inline int set_irq_chip(unsigned int irq, struct irq_chip *chip)
595{
596 return irq_set_chip(irq, chip);
597}
598static inline int set_irq_data(unsigned int irq, void *data)
599{
600 return irq_set_handler_data(irq, data);
601}
602static inline int set_irq_chip_data(unsigned int irq, void *data)
603{
604 return irq_set_chip_data(irq, data);
605}
606static inline int set_irq_type(unsigned int irq, unsigned int type)
607{
608 return irq_set_irq_type(irq, type);
609}
610static inline int set_irq_msi(unsigned int irq, struct msi_desc *entry)
611{
612 return irq_set_msi_desc(irq, entry);
613}
614static inline struct irq_chip *get_irq_chip(unsigned int irq)
615{
616 return irq_get_chip(irq);
617}
618static inline void *get_irq_chip_data(unsigned int irq)
619{
620 return irq_get_chip_data(irq);
621}
622static inline void *get_irq_data(unsigned int irq)
623{
624 return irq_get_handler_data(irq);
625}
626static inline void *irq_data_get_irq_data(struct irq_data *d)
627{
628 return irq_data_get_irq_handler_data(d);
629}
630static inline struct msi_desc *get_irq_msi(unsigned int irq)
631{
632 return irq_get_msi_desc(irq);
633}
634static inline void set_irq_noprobe(unsigned int irq)
635{
636 irq_set_noprobe(irq);
637}
638static inline void set_irq_probe(unsigned int irq)
639{
640 irq_set_probe(irq);
641}
642static inline void set_irq_nested_thread(unsigned int irq, int nest)
643{
644 irq_set_nested_thread(irq, nest);
645}
646static inline void
647set_irq_chip_and_handler_name(unsigned int irq, struct irq_chip *chip,
648 irq_flow_handler_t handle, const char *name)
649{
650 irq_set_chip_and_handler_name(irq, chip, handle, name);
651}
652static inline void
653set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
654 irq_flow_handler_t handle)
655{
656 irq_set_chip_and_handler(irq, chip, handle);
657}
658static inline void
659__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
660 const char *name)
661{
662 __irq_set_handler(irq, handle, is_chained, name);
663}
664static inline void set_irq_handler(unsigned int irq, irq_flow_handler_t handle)
665{
666 irq_set_handler(irq, handle);
667}
668static inline void
669set_irq_chained_handler(unsigned int irq, irq_flow_handler_t handle)
670{
671 irq_set_chained_handler(irq, handle);
672}
673#endif
674
675int irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node); 554int irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node);
676void irq_free_descs(unsigned int irq, unsigned int cnt); 555void irq_free_descs(unsigned int irq, unsigned int cnt);
677int irq_reserve_irqs(unsigned int from, unsigned int cnt); 556int irq_reserve_irqs(unsigned int from, unsigned int cnt);
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 15e6c3905f41..a082905b5ebe 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -35,32 +35,7 @@ struct timer_rand_state;
35 * @name: flow handler name for /proc/interrupts output 35 * @name: flow handler name for /proc/interrupts output
36 */ 36 */
37struct irq_desc { 37struct irq_desc {
38
39#ifdef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
40 struct irq_data irq_data; 38 struct irq_data irq_data;
41#else
42 /*
43 * This union will go away, once we fixed the direct access to
44 * irq_desc all over the place. The direct fields are a 1:1
45 * overlay of irq_data.
46 */
47 union {
48 struct irq_data irq_data;
49 struct {
50 unsigned int irq;
51 unsigned int node;
52 unsigned int pad_do_not_even_think_about_it;
53 struct irq_chip *chip;
54 void *handler_data;
55 void *chip_data;
56 struct msi_desc *msi_desc;
57#ifdef CONFIG_SMP
58 cpumask_var_t affinity;
59#endif
60 };
61 };
62#endif
63
64 struct timer_rand_state *timer_rand_state; 39 struct timer_rand_state *timer_rand_state;
65 unsigned int __percpu *kstat_irqs; 40 unsigned int __percpu *kstat_irqs;
66 irq_flow_handler_t handle_irq; 41 irq_flow_handler_t handle_irq;
@@ -68,11 +43,7 @@ struct irq_desc {
68 irq_preflow_handler_t preflow_handler; 43 irq_preflow_handler_t preflow_handler;
69#endif 44#endif
70 struct irqaction *action; /* IRQ action list */ 45 struct irqaction *action; /* IRQ action list */
71#ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
72 unsigned int status_use_accessors; 46 unsigned int status_use_accessors;
73#else
74 unsigned int status; /* IRQ status */
75#endif
76 unsigned int core_internal_state__do_not_mess_with_it; 47 unsigned int core_internal_state__do_not_mess_with_it;
77 unsigned int depth; /* nested irq disables */ 48 unsigned int depth; /* nested irq disables */
78 unsigned int wake_depth; /* nested wake enables */ 49 unsigned int wake_depth; /* nested wake enables */
@@ -127,27 +98,6 @@ static inline struct msi_desc *irq_desc_get_msi_desc(struct irq_desc *desc)
127 return desc->irq_data.msi_desc; 98 return desc->irq_data.msi_desc;
128} 99}
129 100
130#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
131static inline struct irq_chip *get_irq_desc_chip(struct irq_desc *desc)
132{
133 return irq_desc_get_chip(desc);
134}
135static inline void *get_irq_desc_data(struct irq_desc *desc)
136{
137 return irq_desc_get_handler_data(desc);
138}
139
140static inline void *get_irq_desc_chip_data(struct irq_desc *desc)
141{
142 return irq_desc_get_chip_data(desc);
143}
144
145static inline struct msi_desc *get_irq_desc_msi(struct irq_desc *desc)
146{
147 return irq_desc_get_msi_desc(desc);
148}
149#endif
150
151/* 101/*
152 * Architectures call this to let the generic IRQ layer 102 * Architectures call this to let the generic IRQ layer
153 * handle an interrupt. If the descriptor is attached to an 103 * handle an interrupt. If the descriptor is attached to an
@@ -194,21 +144,13 @@ __irq_set_chip_handler_name_locked(unsigned int irq, struct irq_chip *chip,
194 desc->name = name; 144 desc->name = name;
195} 145}
196 146
197#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
198static inline void __set_irq_handler_unlocked(int irq,
199 irq_flow_handler_t handler)
200{
201 __irq_set_handler_locked(irq, handler);
202}
203
204static inline int irq_balancing_disabled(unsigned int irq) 147static inline int irq_balancing_disabled(unsigned int irq)
205{ 148{
206 struct irq_desc *desc; 149 struct irq_desc *desc;
207 150
208 desc = irq_to_desc(irq); 151 desc = irq_to_desc(irq);
209 return desc->status & IRQ_NO_BALANCING_MASK; 152 return desc->status_use_accessors & IRQ_NO_BALANCING_MASK;
210} 153}
211#endif
212 154
213static inline void 155static inline void
214irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class) 156irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)