diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/include/asm/irq.h | 3 | ||||
-rw-r--r-- | arch/alpha/kernel/irq.c | 6 | ||||
-rw-r--r-- | arch/alpha/kernel/irq_alpha.c | 16 | ||||
-rw-r--r-- | arch/alpha/kernel/irq_i8259.c | 26 | ||||
-rw-r--r-- | arch/alpha/kernel/irq_pyxis.c | 26 | ||||
-rw-r--r-- | arch/alpha/kernel/irq_srm.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_alcor.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_cabriolet.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_dp264.c | 48 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_eb64p.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_eiger.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_jensen.c | 47 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_marvel.c | 44 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_mikasa.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_noritake.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_rawhide.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_rx164.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_sable.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_takara.c | 25 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_titan.c | 29 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_wildfire.c | 34 |
21 files changed, 94 insertions, 460 deletions
diff --git a/arch/alpha/include/asm/irq.h b/arch/alpha/include/asm/irq.h index 4126441c8ef1..06377400dc09 100644 --- a/arch/alpha/include/asm/irq.h +++ b/arch/alpha/include/asm/irq.h | |||
@@ -88,7 +88,4 @@ static __inline__ int irq_canonicalize(int irq) | |||
88 | struct pt_regs; | 88 | struct pt_regs; |
89 | extern void (*perf_irq)(unsigned long, struct pt_regs *); | 89 | extern void (*perf_irq)(unsigned long, struct pt_regs *); |
90 | 90 | ||
91 | struct irq_desc; | ||
92 | extern void alpha_do_IRQ(unsigned int irq, struct irq_desc *desc); | ||
93 | |||
94 | #endif /* _ALPHA_IRQ_H */ | 91 | #endif /* _ALPHA_IRQ_H */ |
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index cea8913e74be..5912900a42eb 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -162,7 +162,7 @@ handle_irq(int irq) | |||
162 | 162 | ||
163 | irq_enter(); | 163 | irq_enter(); |
164 | /* | 164 | /* |
165 | * __do_IRQ() must be called with IPL_MAX. Note that we do not | 165 | * handle_irq() must be called with IPL_MAX. Note that we do not |
166 | * explicitly enable interrupts afterwards - some MILO PALcode | 166 | * explicitly enable interrupts afterwards - some MILO PALcode |
167 | * (namely LX164 one) seems to have severe problems with RTI | 167 | * (namely LX164 one) seems to have severe problems with RTI |
168 | * at IPL 0. | 168 | * at IPL 0. |
@@ -172,7 +172,3 @@ handle_irq(int irq) | |||
172 | irq_exit(); | 172 | irq_exit(); |
173 | } | 173 | } |
174 | 174 | ||
175 | void alpha_do_IRQ(unsigned int irq, struct irq_desc *desc) | ||
176 | { | ||
177 | __do_IRQ(irq); | ||
178 | } | ||
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c index 1b2c8bb81460..2d0679b60939 100644 --- a/arch/alpha/kernel/irq_alpha.c +++ b/arch/alpha/kernel/irq_alpha.c | |||
@@ -219,25 +219,12 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr, | |||
219 | * processed by PALcode, and comes in via entInt vector 1. | 219 | * processed by PALcode, and comes in via entInt vector 1. |
220 | */ | 220 | */ |
221 | 221 | ||
222 | static void rtc_enable_disable(unsigned int irq) { } | ||
223 | static unsigned int rtc_startup(unsigned int irq) { return 0; } | ||
224 | |||
225 | struct irqaction timer_irqaction = { | 222 | struct irqaction timer_irqaction = { |
226 | .handler = timer_interrupt, | 223 | .handler = timer_interrupt, |
227 | .flags = IRQF_DISABLED, | 224 | .flags = IRQF_DISABLED, |
228 | .name = "timer", | 225 | .name = "timer", |
229 | }; | 226 | }; |
230 | 227 | ||
231 | static struct irq_chip rtc_irq_type = { | ||
232 | .name = "RTC", | ||
233 | .startup = rtc_startup, | ||
234 | .shutdown = rtc_enable_disable, | ||
235 | .enable = rtc_enable_disable, | ||
236 | .disable = rtc_enable_disable, | ||
237 | .ack = rtc_enable_disable, | ||
238 | .end = rtc_enable_disable, | ||
239 | }; | ||
240 | |||
241 | void __init | 228 | void __init |
242 | init_rtc_irq(void) | 229 | init_rtc_irq(void) |
243 | { | 230 | { |
@@ -245,7 +232,8 @@ init_rtc_irq(void) | |||
245 | 232 | ||
246 | if (desc) { | 233 | if (desc) { |
247 | desc->status |= IRQ_DISABLED; | 234 | desc->status |= IRQ_DISABLED; |
248 | set_irq_chip(RTC_IRQ, &rtc_irq_type); | 235 | set_irq_chip_and_handler_name(RTC_IRQ, &no_irq_chip, |
236 | handle_simple_irq, "RTC"); | ||
249 | setup_irq(RTC_IRQ, &timer_irqaction); | 237 | setup_irq(RTC_IRQ, &timer_irqaction); |
250 | } | 238 | } |
251 | } | 239 | } |
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c index 9e493958895d..956ea0ed1694 100644 --- a/arch/alpha/kernel/irq_i8259.c +++ b/arch/alpha/kernel/irq_i8259.c | |||
@@ -69,29 +69,11 @@ i8259a_mask_and_ack_irq(unsigned int irq) | |||
69 | spin_unlock(&i8259_irq_lock); | 69 | spin_unlock(&i8259_irq_lock); |
70 | } | 70 | } |
71 | 71 | ||
72 | unsigned int | ||
73 | i8259a_startup_irq(unsigned int irq) | ||
74 | { | ||
75 | i8259a_enable_irq(irq); | ||
76 | return 0; /* never anything pending */ | ||
77 | } | ||
78 | |||
79 | void | ||
80 | i8259a_end_irq(unsigned int irq) | ||
81 | { | ||
82 | struct irq_desc *desc = irq_to_desc(irq); | ||
83 | if (desc || !(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
84 | i8259a_enable_irq(irq); | ||
85 | } | ||
86 | |||
87 | struct irq_chip i8259a_irq_type = { | 72 | struct irq_chip i8259a_irq_type = { |
88 | .name = "XT-PIC", | 73 | .name = "XT-PIC", |
89 | .startup = i8259a_startup_irq, | 74 | .unmask = i8259a_enable_irq, |
90 | .shutdown = i8259a_disable_irq, | 75 | .mask = i8259a_disable_irq, |
91 | .enable = i8259a_enable_irq, | 76 | .mask_ack = i8259a_mask_and_ack_irq, |
92 | .disable = i8259a_disable_irq, | ||
93 | .ack = i8259a_mask_and_ack_irq, | ||
94 | .end = i8259a_end_irq, | ||
95 | }; | 77 | }; |
96 | 78 | ||
97 | void __init | 79 | void __init |
@@ -108,7 +90,7 @@ init_i8259a_irqs(void) | |||
108 | outb(0xff, 0xA1); /* mask all of 8259A-2 */ | 90 | outb(0xff, 0xA1); /* mask all of 8259A-2 */ |
109 | 91 | ||
110 | for (i = 0; i < 16; i++) { | 92 | for (i = 0; i < 16; i++) { |
111 | set_irq_chip_and_handler(i, &i8259a_irq_type, alpha_do_IRQ); | 93 | set_irq_chip_and_handler(i, &i8259a_irq_type, handle_level_irq); |
112 | } | 94 | } |
113 | 95 | ||
114 | setup_irq(2, &cascade); | 96 | setup_irq(2, &cascade); |
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c index 9f603cfd440a..2863458c853e 100644 --- a/arch/alpha/kernel/irq_pyxis.c +++ b/arch/alpha/kernel/irq_pyxis.c | |||
@@ -40,21 +40,6 @@ pyxis_disable_irq(unsigned int irq) | |||
40 | pyxis_update_irq_hw(cached_irq_mask &= ~(1UL << (irq - 16))); | 40 | pyxis_update_irq_hw(cached_irq_mask &= ~(1UL << (irq - 16))); |
41 | } | 41 | } |
42 | 42 | ||
43 | static unsigned int | ||
44 | pyxis_startup_irq(unsigned int irq) | ||
45 | { | ||
46 | pyxis_enable_irq(irq); | ||
47 | return 0; | ||
48 | } | ||
49 | |||
50 | static void | ||
51 | pyxis_end_irq(unsigned int irq) | ||
52 | { | ||
53 | struct irq_desc *desc = irq_to_desc(irq); | ||
54 | if (desc || !(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
55 | pyxis_enable_irq(irq); | ||
56 | } | ||
57 | |||
58 | static void | 43 | static void |
59 | pyxis_mask_and_ack_irq(unsigned int irq) | 44 | pyxis_mask_and_ack_irq(unsigned int irq) |
60 | { | 45 | { |
@@ -73,12 +58,9 @@ pyxis_mask_and_ack_irq(unsigned int irq) | |||
73 | 58 | ||
74 | static struct irq_chip pyxis_irq_type = { | 59 | static struct irq_chip pyxis_irq_type = { |
75 | .name = "PYXIS", | 60 | .name = "PYXIS", |
76 | .startup = pyxis_startup_irq, | 61 | .mask_ack = pyxis_mask_and_ack_irq, |
77 | .shutdown = pyxis_disable_irq, | 62 | .mask = pyxis_disable_irq, |
78 | .enable = pyxis_enable_irq, | 63 | .unmask = pyxis_enable_irq, |
79 | .disable = pyxis_disable_irq, | ||
80 | .ack = pyxis_mask_and_ack_irq, | ||
81 | .end = pyxis_end_irq, | ||
82 | }; | 64 | }; |
83 | 65 | ||
84 | void | 66 | void |
@@ -120,7 +102,7 @@ init_pyxis_irqs(unsigned long ignore_mask) | |||
120 | for (i = 16; i < 48; ++i) { | 102 | for (i = 16; i < 48; ++i) { |
121 | if ((ignore_mask >> i) & 1) | 103 | if ((ignore_mask >> i) & 1) |
122 | continue; | 104 | continue; |
123 | set_irq_chip_and_handler(i, &pyxis_irq_type, alpha_do_IRQ); | 105 | set_irq_chip_and_handler(i, &pyxis_irq_type, handle_level_irq); |
124 | irq_to_desc(i)->status |= IRQ_LEVEL; | 106 | irq_to_desc(i)->status |= IRQ_LEVEL; |
125 | } | 107 | } |
126 | 108 | ||
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c index ea790069dfbb..0e57e828b413 100644 --- a/arch/alpha/kernel/irq_srm.c +++ b/arch/alpha/kernel/irq_srm.c | |||
@@ -33,29 +33,12 @@ srm_disable_irq(unsigned int irq) | |||
33 | spin_unlock(&srm_irq_lock); | 33 | spin_unlock(&srm_irq_lock); |
34 | } | 34 | } |
35 | 35 | ||
36 | static unsigned int | ||
37 | srm_startup_irq(unsigned int irq) | ||
38 | { | ||
39 | srm_enable_irq(irq); | ||
40 | return 0; | ||
41 | } | ||
42 | |||
43 | static void | ||
44 | srm_end_irq(unsigned int irq) | ||
45 | { | ||
46 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
47 | srm_enable_irq(irq); | ||
48 | } | ||
49 | |||
50 | /* Handle interrupts from the SRM, assuming no additional weirdness. */ | 36 | /* Handle interrupts from the SRM, assuming no additional weirdness. */ |
51 | static struct irq_chip srm_irq_type = { | 37 | static struct irq_chip srm_irq_type = { |
52 | .name = "SRM", | 38 | .name = "SRM", |
53 | .startup = srm_startup_irq, | 39 | .unmask = srm_enable_irq, |
54 | .shutdown = srm_disable_irq, | 40 | .mask = srm_disable_irq, |
55 | .enable = srm_enable_irq, | 41 | .mask_ack = srm_disable_irq, |
56 | .disable = srm_disable_irq, | ||
57 | .ack = srm_disable_irq, | ||
58 | .end = srm_end_irq, | ||
59 | }; | 42 | }; |
60 | 43 | ||
61 | void __init | 44 | void __init |
@@ -68,7 +51,7 @@ init_srm_irqs(long max, unsigned long ignore_mask) | |||
68 | for (i = 16; i < max; ++i) { | 51 | for (i = 16; i < max; ++i) { |
69 | if (i < 64 && ((ignore_mask >> i) & 1)) | 52 | if (i < 64 && ((ignore_mask >> i) & 1)) |
70 | continue; | 53 | continue; |
71 | set_irq_chip_and_handler(i, &srm_irq_type, alpha_do_IRQ); | 54 | set_irq_chip_and_handler(i, &srm_irq_type, handle_level_irq); |
72 | irq_to_desc(i)->status |= IRQ_LEVEL; | 55 | irq_to_desc(i)->status |= IRQ_LEVEL; |
73 | } | 56 | } |
74 | } | 57 | } |
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c index 138cc155299c..7bef61768236 100644 --- a/arch/alpha/kernel/sys_alcor.c +++ b/arch/alpha/kernel/sys_alcor.c | |||
@@ -65,13 +65,6 @@ alcor_mask_and_ack_irq(unsigned int irq) | |||
65 | *(vuip)GRU_INT_CLEAR = 0; mb(); | 65 | *(vuip)GRU_INT_CLEAR = 0; mb(); |
66 | } | 66 | } |
67 | 67 | ||
68 | static unsigned int | ||
69 | alcor_startup_irq(unsigned int irq) | ||
70 | { | ||
71 | alcor_enable_irq(irq); | ||
72 | return 0; | ||
73 | } | ||
74 | |||
75 | static void | 68 | static void |
76 | alcor_isa_mask_and_ack_irq(unsigned int irq) | 69 | alcor_isa_mask_and_ack_irq(unsigned int irq) |
77 | { | 70 | { |
@@ -82,21 +75,11 @@ alcor_isa_mask_and_ack_irq(unsigned int irq) | |||
82 | *(vuip)GRU_INT_CLEAR = 0; mb(); | 75 | *(vuip)GRU_INT_CLEAR = 0; mb(); |
83 | } | 76 | } |
84 | 77 | ||
85 | static void | ||
86 | alcor_end_irq(unsigned int irq) | ||
87 | { | ||
88 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
89 | alcor_enable_irq(irq); | ||
90 | } | ||
91 | |||
92 | static struct irq_chip alcor_irq_type = { | 78 | static struct irq_chip alcor_irq_type = { |
93 | .name = "ALCOR", | 79 | .name = "ALCOR", |
94 | .startup = alcor_startup_irq, | 80 | .unmask = alcor_enable_irq, |
95 | .shutdown = alcor_disable_irq, | 81 | .mask = alcor_disable_irq, |
96 | .enable = alcor_enable_irq, | 82 | .mask_ack = alcor_mask_and_ack_irq, |
97 | .disable = alcor_disable_irq, | ||
98 | .ack = alcor_mask_and_ack_irq, | ||
99 | .end = alcor_end_irq, | ||
100 | }; | 83 | }; |
101 | 84 | ||
102 | static void | 85 | static void |
@@ -142,7 +125,7 @@ alcor_init_irq(void) | |||
142 | on while IRQ probing. */ | 125 | on while IRQ probing. */ |
143 | if (i >= 16+20 && i <= 16+30) | 126 | if (i >= 16+20 && i <= 16+30) |
144 | continue; | 127 | continue; |
145 | set_irq_chip_and_handler(i, &alcor_irq_type, alpha_do_IRQ); | 128 | set_irq_chip_and_handler(i, &alcor_irq_type, handle_level_irq); |
146 | irq_to_desc(i)->status |= IRQ_LEVEL; | 129 | irq_to_desc(i)->status |= IRQ_LEVEL; |
147 | } | 130 | } |
148 | i8259a_irq_type.ack = alcor_isa_mask_and_ack_irq; | 131 | i8259a_irq_type.ack = alcor_isa_mask_and_ack_irq; |
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c index 01a932b74de6..b0c916493aea 100644 --- a/arch/alpha/kernel/sys_cabriolet.c +++ b/arch/alpha/kernel/sys_cabriolet.c | |||
@@ -57,28 +57,11 @@ cabriolet_disable_irq(unsigned int irq) | |||
57 | cabriolet_update_irq_hw(irq, cached_irq_mask |= 1UL << irq); | 57 | cabriolet_update_irq_hw(irq, cached_irq_mask |= 1UL << irq); |
58 | } | 58 | } |
59 | 59 | ||
60 | static unsigned int | ||
61 | cabriolet_startup_irq(unsigned int irq) | ||
62 | { | ||
63 | cabriolet_enable_irq(irq); | ||
64 | return 0; /* never anything pending */ | ||
65 | } | ||
66 | |||
67 | static void | ||
68 | cabriolet_end_irq(unsigned int irq) | ||
69 | { | ||
70 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
71 | cabriolet_enable_irq(irq); | ||
72 | } | ||
73 | |||
74 | static struct irq_chip cabriolet_irq_type = { | 60 | static struct irq_chip cabriolet_irq_type = { |
75 | .name = "CABRIOLET", | 61 | .name = "CABRIOLET", |
76 | .startup = cabriolet_startup_irq, | 62 | .unmask = cabriolet_enable_irq, |
77 | .shutdown = cabriolet_disable_irq, | 63 | .mask = cabriolet_disable_irq, |
78 | .enable = cabriolet_enable_irq, | 64 | .mask_ack = cabriolet_disable_irq, |
79 | .disable = cabriolet_disable_irq, | ||
80 | .ack = cabriolet_disable_irq, | ||
81 | .end = cabriolet_end_irq, | ||
82 | }; | 65 | }; |
83 | 66 | ||
84 | static void | 67 | static void |
@@ -123,7 +106,7 @@ common_init_irq(void (*srm_dev_int)(unsigned long v)) | |||
123 | 106 | ||
124 | for (i = 16; i < 35; ++i) { | 107 | for (i = 16; i < 35; ++i) { |
125 | set_irq_chip_and_handler(i, &cabriolet_irq_type, | 108 | set_irq_chip_and_handler(i, &cabriolet_irq_type, |
126 | alpha_do_IRQ); | 109 | handle_level_irq); |
127 | irq_to_desc(i)->status |= IRQ_LEVEL; | 110 | irq_to_desc(i)->status |= IRQ_LEVEL; |
128 | } | 111 | } |
129 | } | 112 | } |
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index 34abb5cffa3a..edad5f759ccd 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c | |||
@@ -115,20 +115,6 @@ dp264_disable_irq(unsigned int irq) | |||
115 | spin_unlock(&dp264_irq_lock); | 115 | spin_unlock(&dp264_irq_lock); |
116 | } | 116 | } |
117 | 117 | ||
118 | static unsigned int | ||
119 | dp264_startup_irq(unsigned int irq) | ||
120 | { | ||
121 | dp264_enable_irq(irq); | ||
122 | return 0; /* never anything pending */ | ||
123 | } | ||
124 | |||
125 | static void | ||
126 | dp264_end_irq(unsigned int irq) | ||
127 | { | ||
128 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
129 | dp264_enable_irq(irq); | ||
130 | } | ||
131 | |||
132 | static void | 118 | static void |
133 | clipper_enable_irq(unsigned int irq) | 119 | clipper_enable_irq(unsigned int irq) |
134 | { | 120 | { |
@@ -147,20 +133,6 @@ clipper_disable_irq(unsigned int irq) | |||
147 | spin_unlock(&dp264_irq_lock); | 133 | spin_unlock(&dp264_irq_lock); |
148 | } | 134 | } |
149 | 135 | ||
150 | static unsigned int | ||
151 | clipper_startup_irq(unsigned int irq) | ||
152 | { | ||
153 | clipper_enable_irq(irq); | ||
154 | return 0; /* never anything pending */ | ||
155 | } | ||
156 | |||
157 | static void | ||
158 | clipper_end_irq(unsigned int irq) | ||
159 | { | ||
160 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
161 | clipper_enable_irq(irq); | ||
162 | } | ||
163 | |||
164 | static void | 136 | static void |
165 | cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) | 137 | cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) |
166 | { | 138 | { |
@@ -200,23 +172,17 @@ clipper_set_affinity(unsigned int irq, const struct cpumask *affinity) | |||
200 | 172 | ||
201 | static struct irq_chip dp264_irq_type = { | 173 | static struct irq_chip dp264_irq_type = { |
202 | .name = "DP264", | 174 | .name = "DP264", |
203 | .startup = dp264_startup_irq, | 175 | .unmask = dp264_enable_irq, |
204 | .shutdown = dp264_disable_irq, | 176 | .mask = dp264_disable_irq, |
205 | .enable = dp264_enable_irq, | 177 | .mask_ack = dp264_disable_irq, |
206 | .disable = dp264_disable_irq, | ||
207 | .ack = dp264_disable_irq, | ||
208 | .end = dp264_end_irq, | ||
209 | .set_affinity = dp264_set_affinity, | 178 | .set_affinity = dp264_set_affinity, |
210 | }; | 179 | }; |
211 | 180 | ||
212 | static struct irq_chip clipper_irq_type = { | 181 | static struct irq_chip clipper_irq_type = { |
213 | .name = "CLIPPER", | 182 | .name = "CLIPPER", |
214 | .startup = clipper_startup_irq, | 183 | .unmask = clipper_enable_irq, |
215 | .shutdown = clipper_disable_irq, | 184 | .mask = clipper_disable_irq, |
216 | .enable = clipper_enable_irq, | 185 | .mask_ack = clipper_disable_irq, |
217 | .disable = clipper_disable_irq, | ||
218 | .ack = clipper_disable_irq, | ||
219 | .end = clipper_end_irq, | ||
220 | .set_affinity = clipper_set_affinity, | 186 | .set_affinity = clipper_set_affinity, |
221 | }; | 187 | }; |
222 | 188 | ||
@@ -303,7 +269,7 @@ init_tsunami_irqs(struct irq_chip * ops, int imin, int imax) | |||
303 | long i; | 269 | long i; |
304 | for (i = imin; i <= imax; ++i) { | 270 | for (i = imin; i <= imax; ++i) { |
305 | irq_to_desc(i)->status |= IRQ_LEVEL; | 271 | irq_to_desc(i)->status |= IRQ_LEVEL; |
306 | set_irq_chip_and_handler(i, ops, alpha_do_IRQ); | 272 | set_irq_chip_and_handler(i, ops, handle_level_irq); |
307 | } | 273 | } |
308 | } | 274 | } |
309 | 275 | ||
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c index f7a957a5575f..ae5f29d127b0 100644 --- a/arch/alpha/kernel/sys_eb64p.c +++ b/arch/alpha/kernel/sys_eb64p.c | |||
@@ -55,28 +55,11 @@ eb64p_disable_irq(unsigned int irq) | |||
55 | eb64p_update_irq_hw(irq, cached_irq_mask |= 1 << irq); | 55 | eb64p_update_irq_hw(irq, cached_irq_mask |= 1 << irq); |
56 | } | 56 | } |
57 | 57 | ||
58 | static unsigned int | ||
59 | eb64p_startup_irq(unsigned int irq) | ||
60 | { | ||
61 | eb64p_enable_irq(irq); | ||
62 | return 0; /* never anything pending */ | ||
63 | } | ||
64 | |||
65 | static void | ||
66 | eb64p_end_irq(unsigned int irq) | ||
67 | { | ||
68 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
69 | eb64p_enable_irq(irq); | ||
70 | } | ||
71 | |||
72 | static struct irq_chip eb64p_irq_type = { | 58 | static struct irq_chip eb64p_irq_type = { |
73 | .name = "EB64P", | 59 | .name = "EB64P", |
74 | .startup = eb64p_startup_irq, | 60 | .unmask = eb64p_enable_irq, |
75 | .shutdown = eb64p_disable_irq, | 61 | .mask = eb64p_disable_irq, |
76 | .enable = eb64p_enable_irq, | 62 | .mask_ack = eb64p_disable_irq, |
77 | .disable = eb64p_disable_irq, | ||
78 | .ack = eb64p_disable_irq, | ||
79 | .end = eb64p_end_irq, | ||
80 | }; | 63 | }; |
81 | 64 | ||
82 | static void | 65 | static void |
@@ -136,7 +119,7 @@ eb64p_init_irq(void) | |||
136 | 119 | ||
137 | for (i = 16; i < 32; ++i) { | 120 | for (i = 16; i < 32; ++i) { |
138 | irq_to_desc(i)->status |= IRQ_LEVEL; | 121 | irq_to_desc(i)->status |= IRQ_LEVEL; |
139 | set_irq_chip_and_handler(i, &eb64p_irq_type, alpha_do_IRQ); | 122 | set_irq_chip_and_handler(i, &eb64p_irq_type, handle_level_irq); |
140 | } | 123 | } |
141 | 124 | ||
142 | common_init_isa_dma(); | 125 | common_init_isa_dma(); |
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c index 4f3596e248c6..1121bc5c6c6c 100644 --- a/arch/alpha/kernel/sys_eiger.c +++ b/arch/alpha/kernel/sys_eiger.c | |||
@@ -66,28 +66,11 @@ eiger_disable_irq(unsigned int irq) | |||
66 | eiger_update_irq_hw(irq, mask); | 66 | eiger_update_irq_hw(irq, mask); |
67 | } | 67 | } |
68 | 68 | ||
69 | static unsigned int | ||
70 | eiger_startup_irq(unsigned int irq) | ||
71 | { | ||
72 | eiger_enable_irq(irq); | ||
73 | return 0; /* never anything pending */ | ||
74 | } | ||
75 | |||
76 | static void | ||
77 | eiger_end_irq(unsigned int irq) | ||
78 | { | ||
79 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
80 | eiger_enable_irq(irq); | ||
81 | } | ||
82 | |||
83 | static struct irq_chip eiger_irq_type = { | 69 | static struct irq_chip eiger_irq_type = { |
84 | .name = "EIGER", | 70 | .name = "EIGER", |
85 | .startup = eiger_startup_irq, | 71 | .unmask = eiger_enable_irq, |
86 | .shutdown = eiger_disable_irq, | 72 | .mask = eiger_disable_irq, |
87 | .enable = eiger_enable_irq, | 73 | .mask_ack = eiger_disable_irq, |
88 | .disable = eiger_disable_irq, | ||
89 | .ack = eiger_disable_irq, | ||
90 | .end = eiger_end_irq, | ||
91 | }; | 74 | }; |
92 | 75 | ||
93 | static void | 76 | static void |
@@ -154,7 +137,7 @@ eiger_init_irq(void) | |||
154 | 137 | ||
155 | for (i = 16; i < 128; ++i) { | 138 | for (i = 16; i < 128; ++i) { |
156 | irq_to_desc(i)->status |= IRQ_LEVEL; | 139 | irq_to_desc(i)->status |= IRQ_LEVEL; |
157 | set_irq_chip_and_handler(i, &eiger_irq_type, alpha_do_IRQ); | 140 | set_irq_chip_and_handler(i, &eiger_irq_type, handle_level_irq); |
158 | } | 141 | } |
159 | } | 142 | } |
160 | 143 | ||
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 460d82b5bc44..34f55e03d331 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c | |||
@@ -62,24 +62,6 @@ | |||
62 | * world. | 62 | * world. |
63 | */ | 63 | */ |
64 | 64 | ||
65 | static unsigned int | ||
66 | jensen_local_startup(unsigned int irq) | ||
67 | { | ||
68 | /* the parport is really hw IRQ 1, silly Jensen. */ | ||
69 | if (irq == 7) | ||
70 | i8259a_startup_irq(1); | ||
71 | |||
72 | return 0; | ||
73 | } | ||
74 | |||
75 | static void | ||
76 | jensen_local_shutdown(unsigned int irq) | ||
77 | { | ||
78 | /* the parport is really hw IRQ 1, silly Jensen. */ | ||
79 | if (irq == 7) | ||
80 | i8259a_disable_irq(1); | ||
81 | } | ||
82 | |||
83 | static void | 65 | static void |
84 | jensen_local_enable(unsigned int irq) | 66 | jensen_local_enable(unsigned int irq) |
85 | { | 67 | { |
@@ -97,29 +79,18 @@ jensen_local_disable(unsigned int irq) | |||
97 | } | 79 | } |
98 | 80 | ||
99 | static void | 81 | static void |
100 | jensen_local_ack(unsigned int irq) | 82 | jensen_local_mask_ack(unsigned int irq) |
101 | { | 83 | { |
102 | /* the parport is really hw IRQ 1, silly Jensen. */ | 84 | /* the parport is really hw IRQ 1, silly Jensen. */ |
103 | if (irq == 7) | 85 | if (irq == 7) |
104 | i8259a_mask_and_ack_irq(1); | 86 | i8259a_mask_and_ack_irq(1); |
105 | } | 87 | } |
106 | 88 | ||
107 | static void | ||
108 | jensen_local_end(unsigned int irq) | ||
109 | { | ||
110 | /* the parport is really hw IRQ 1, silly Jensen. */ | ||
111 | if (irq == 7) | ||
112 | i8259a_end_irq(1); | ||
113 | } | ||
114 | |||
115 | static struct irq_chip jensen_local_irq_type = { | 89 | static struct irq_chip jensen_local_irq_type = { |
116 | .name = "LOCAL", | 90 | .name = "LOCAL", |
117 | .startup = jensen_local_startup, | 91 | .unmask = jensen_local_enable, |
118 | .shutdown = jensen_local_shutdown, | 92 | .mask = jensen_local_disable, |
119 | .enable = jensen_local_enable, | 93 | .mask_ack = jensen_local_mask_ack, |
120 | .disable = jensen_local_disable, | ||
121 | .ack = jensen_local_ack, | ||
122 | .end = jensen_local_end, | ||
123 | }; | 94 | }; |
124 | 95 | ||
125 | static void | 96 | static void |
@@ -200,11 +171,11 @@ jensen_init_irq(void) | |||
200 | { | 171 | { |
201 | init_i8259a_irqs(); | 172 | init_i8259a_irqs(); |
202 | 173 | ||
203 | set_irq_chip_and_handler(1, &jensen_local_irq_type, alpha_do_IRQ); | 174 | set_irq_chip_and_handler(1, &jensen_local_irq_type, handle_level_irq); |
204 | set_irq_chip_and_handler(4, &jensen_local_irq_type, alpha_do_IRQ); | 175 | set_irq_chip_and_handler(4, &jensen_local_irq_type, handle_level_irq); |
205 | set_irq_chip_and_handler(3, &jensen_local_irq_type, alpha_do_IRQ); | 176 | set_irq_chip_and_handler(3, &jensen_local_irq_type, handle_level_irq); |
206 | set_irq_chip_and_handler(7, &jensen_local_irq_type, alpha_do_IRQ); | 177 | set_irq_chip_and_handler(7, &jensen_local_irq_type, handle_level_irq); |
207 | set_irq_chip_and_handler(9, &jensen_local_irq_type, alpha_do_IRQ); | 178 | set_irq_chip_and_handler(9, &jensen_local_irq_type, handle_level_irq); |
208 | 179 | ||
209 | common_init_isa_dma(); | 180 | common_init_isa_dma(); |
210 | } | 181 | } |
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c index a5095e09b805..2bfc9f1b1ddc 100644 --- a/arch/alpha/kernel/sys_marvel.c +++ b/arch/alpha/kernel/sys_marvel.c | |||
@@ -143,20 +143,6 @@ io7_disable_irq(unsigned int irq) | |||
143 | spin_unlock(&io7->irq_lock); | 143 | spin_unlock(&io7->irq_lock); |
144 | } | 144 | } |
145 | 145 | ||
146 | static unsigned int | ||
147 | io7_startup_irq(unsigned int irq) | ||
148 | { | ||
149 | io7_enable_irq(irq); | ||
150 | return 0; /* never anything pending */ | ||
151 | } | ||
152 | |||
153 | static void | ||
154 | io7_end_irq(unsigned int irq) | ||
155 | { | ||
156 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
157 | io7_enable_irq(irq); | ||
158 | } | ||
159 | |||
160 | static void | 146 | static void |
161 | marvel_irq_noop(unsigned int irq) | 147 | marvel_irq_noop(unsigned int irq) |
162 | { | 148 | { |
@@ -171,32 +157,22 @@ marvel_irq_noop_return(unsigned int irq) | |||
171 | 157 | ||
172 | static struct irq_chip marvel_legacy_irq_type = { | 158 | static struct irq_chip marvel_legacy_irq_type = { |
173 | .name = "LEGACY", | 159 | .name = "LEGACY", |
174 | .startup = marvel_irq_noop_return, | 160 | .mask = marvel_irq_noop, |
175 | .shutdown = marvel_irq_noop, | 161 | .unmask = marvel_irq_noop, |
176 | .enable = marvel_irq_noop, | ||
177 | .disable = marvel_irq_noop, | ||
178 | .ack = marvel_irq_noop, | ||
179 | .end = marvel_irq_noop, | ||
180 | }; | 162 | }; |
181 | 163 | ||
182 | static struct irq_chip io7_lsi_irq_type = { | 164 | static struct irq_chip io7_lsi_irq_type = { |
183 | .name = "LSI", | 165 | .name = "LSI", |
184 | .startup = io7_startup_irq, | 166 | .unmask = io7_enable_irq, |
185 | .shutdown = io7_disable_irq, | 167 | .mask = io7_disable_irq, |
186 | .enable = io7_enable_irq, | 168 | .mask_ack = io7_disable_irq, |
187 | .disable = io7_disable_irq, | ||
188 | .ack = io7_disable_irq, | ||
189 | .end = io7_end_irq, | ||
190 | }; | 169 | }; |
191 | 170 | ||
192 | static struct irq_chip io7_msi_irq_type = { | 171 | static struct irq_chip io7_msi_irq_type = { |
193 | .name = "MSI", | 172 | .name = "MSI", |
194 | .startup = io7_startup_irq, | 173 | .unmask = io7_enable_irq, |
195 | .shutdown = io7_disable_irq, | 174 | .mask = io7_disable_irq, |
196 | .enable = io7_enable_irq, | ||
197 | .disable = io7_disable_irq, | ||
198 | .ack = marvel_irq_noop, | 175 | .ack = marvel_irq_noop, |
199 | .end = io7_end_irq, | ||
200 | }; | 176 | }; |
201 | 177 | ||
202 | static void | 178 | static void |
@@ -305,7 +281,7 @@ init_io7_irqs(struct io7 *io7, | |||
305 | /* Set up the lsi irqs. */ | 281 | /* Set up the lsi irqs. */ |
306 | for (i = 0; i < 128; ++i) { | 282 | for (i = 0; i < 128; ++i) { |
307 | irq_to_desc(base + i)->status |= IRQ_LEVEL; | 283 | irq_to_desc(base + i)->status |= IRQ_LEVEL; |
308 | set_irq_chip_and_handler(base + i, lsi_ops, alpha_do_IRQ); | 284 | set_irq_chip_and_handler(base + i, lsi_ops, handle_level_irq); |
309 | } | 285 | } |
310 | 286 | ||
311 | /* Disable the implemented irqs in hardware. */ | 287 | /* Disable the implemented irqs in hardware. */ |
@@ -319,7 +295,7 @@ init_io7_irqs(struct io7 *io7, | |||
319 | /* Set up the msi irqs. */ | 295 | /* Set up the msi irqs. */ |
320 | for (i = 128; i < (128 + 512); ++i) { | 296 | for (i = 128; i < (128 + 512); ++i) { |
321 | irq_to_desc(base + i)->status |= IRQ_LEVEL; | 297 | irq_to_desc(base + i)->status |= IRQ_LEVEL; |
322 | set_irq_chip_and_handler(base + i, msi_ops, alpha_do_IRQ); | 298 | set_irq_chip_and_handler(base + i, msi_ops, handle_level_irq); |
323 | } | 299 | } |
324 | 300 | ||
325 | for (i = 0; i < 16; ++i) | 301 | for (i = 0; i < 16; ++i) |
@@ -337,7 +313,7 @@ marvel_init_irq(void) | |||
337 | /* Reserve the legacy irqs. */ | 313 | /* Reserve the legacy irqs. */ |
338 | for (i = 0; i < 16; ++i) { | 314 | for (i = 0; i < 16; ++i) { |
339 | set_irq_chip_and_handler(i, &marvel_legacy_irq_type, | 315 | set_irq_chip_and_handler(i, &marvel_legacy_irq_type, |
340 | alpha_do_IRQ); | 316 | handle_level_irq); |
341 | } | 317 | } |
342 | 318 | ||
343 | /* Init the io7 irqs. */ | 319 | /* Init the io7 irqs. */ |
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c index 37e5c6578c89..bcc1639e8efb 100644 --- a/arch/alpha/kernel/sys_mikasa.c +++ b/arch/alpha/kernel/sys_mikasa.c | |||
@@ -54,28 +54,11 @@ mikasa_disable_irq(unsigned int irq) | |||
54 | mikasa_update_irq_hw(cached_irq_mask &= ~(1 << (irq - 16))); | 54 | mikasa_update_irq_hw(cached_irq_mask &= ~(1 << (irq - 16))); |
55 | } | 55 | } |
56 | 56 | ||
57 | static unsigned int | ||
58 | mikasa_startup_irq(unsigned int irq) | ||
59 | { | ||
60 | mikasa_enable_irq(irq); | ||
61 | return 0; | ||
62 | } | ||
63 | |||
64 | static void | ||
65 | mikasa_end_irq(unsigned int irq) | ||
66 | { | ||
67 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
68 | mikasa_enable_irq(irq); | ||
69 | } | ||
70 | |||
71 | static struct irq_chip mikasa_irq_type = { | 57 | static struct irq_chip mikasa_irq_type = { |
72 | .name = "MIKASA", | 58 | .name = "MIKASA", |
73 | .startup = mikasa_startup_irq, | 59 | .unmask = mikasa_enable_irq, |
74 | .shutdown = mikasa_disable_irq, | 60 | .mask = mikasa_disable_irq, |
75 | .enable = mikasa_enable_irq, | 61 | .mask_ack = mikasa_disable_irq, |
76 | .disable = mikasa_disable_irq, | ||
77 | .ack = mikasa_disable_irq, | ||
78 | .end = mikasa_end_irq, | ||
79 | }; | 62 | }; |
80 | 63 | ||
81 | static void | 64 | static void |
@@ -116,7 +99,7 @@ mikasa_init_irq(void) | |||
116 | 99 | ||
117 | for (i = 16; i < 32; ++i) { | 100 | for (i = 16; i < 32; ++i) { |
118 | irq_to_desc(i)->status |= IRQ_LEVEL; | 101 | irq_to_desc(i)->status |= IRQ_LEVEL; |
119 | set_irq_chip_and_handler(i, &mikasa_irq_type, alpha_do_IRQ); | 102 | set_irq_chip_and_handler(i, &mikasa_irq_type, handle_level_irq); |
120 | } | 103 | } |
121 | 104 | ||
122 | init_i8259a_irqs(); | 105 | init_i8259a_irqs(); |
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c index 004f8ec10572..e88f4ae1260e 100644 --- a/arch/alpha/kernel/sys_noritake.c +++ b/arch/alpha/kernel/sys_noritake.c | |||
@@ -59,28 +59,11 @@ noritake_disable_irq(unsigned int irq) | |||
59 | noritake_update_irq_hw(irq, cached_irq_mask &= ~(1 << (irq - 16))); | 59 | noritake_update_irq_hw(irq, cached_irq_mask &= ~(1 << (irq - 16))); |
60 | } | 60 | } |
61 | 61 | ||
62 | static unsigned int | ||
63 | noritake_startup_irq(unsigned int irq) | ||
64 | { | ||
65 | noritake_enable_irq(irq); | ||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | static void | ||
70 | noritake_end_irq(unsigned int irq) | ||
71 | { | ||
72 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
73 | noritake_enable_irq(irq); | ||
74 | } | ||
75 | |||
76 | static struct irq_chip noritake_irq_type = { | 62 | static struct irq_chip noritake_irq_type = { |
77 | .name = "NORITAKE", | 63 | .name = "NORITAKE", |
78 | .startup = noritake_startup_irq, | 64 | .unmask = noritake_enable_irq, |
79 | .shutdown = noritake_disable_irq, | 65 | .mask = noritake_disable_irq, |
80 | .enable = noritake_enable_irq, | 66 | .mask_ack = noritake_disable_irq, |
81 | .disable = noritake_disable_irq, | ||
82 | .ack = noritake_disable_irq, | ||
83 | .end = noritake_end_irq, | ||
84 | }; | 67 | }; |
85 | 68 | ||
86 | static void | 69 | static void |
@@ -145,7 +128,7 @@ noritake_init_irq(void) | |||
145 | 128 | ||
146 | for (i = 16; i < 48; ++i) { | 129 | for (i = 16; i < 48; ++i) { |
147 | irq_to_desc(i)->status |= IRQ_LEVEL; | 130 | irq_to_desc(i)->status |= IRQ_LEVEL; |
148 | set_irq_chip_and_handler(i, &noritake_irq_type, alpha_do_IRQ); | 131 | set_irq_chip_and_handler(i, &noritake_irq_type, handle_level_irq); |
149 | } | 132 | } |
150 | 133 | ||
151 | init_i8259a_irqs(); | 134 | init_i8259a_irqs(); |
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c index 60d152a4b453..6a51364dd1cc 100644 --- a/arch/alpha/kernel/sys_rawhide.c +++ b/arch/alpha/kernel/sys_rawhide.c | |||
@@ -121,28 +121,11 @@ rawhide_mask_and_ack_irq(unsigned int irq) | |||
121 | spin_unlock(&rawhide_irq_lock); | 121 | spin_unlock(&rawhide_irq_lock); |
122 | } | 122 | } |
123 | 123 | ||
124 | static unsigned int | ||
125 | rawhide_startup_irq(unsigned int irq) | ||
126 | { | ||
127 | rawhide_enable_irq(irq); | ||
128 | return 0; | ||
129 | } | ||
130 | |||
131 | static void | ||
132 | rawhide_end_irq(unsigned int irq) | ||
133 | { | ||
134 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
135 | rawhide_enable_irq(irq); | ||
136 | } | ||
137 | |||
138 | static struct irq_chip rawhide_irq_type = { | 124 | static struct irq_chip rawhide_irq_type = { |
139 | .name = "RAWHIDE", | 125 | .name = "RAWHIDE", |
140 | .startup = rawhide_startup_irq, | 126 | .unmask = rawhide_enable_irq, |
141 | .shutdown = rawhide_disable_irq, | 127 | .mask = rawhide_disable_irq, |
142 | .enable = rawhide_enable_irq, | 128 | .mask_ack = rawhide_mask_and_ack_irq, |
143 | .disable = rawhide_disable_irq, | ||
144 | .ack = rawhide_mask_and_ack_irq, | ||
145 | .end = rawhide_end_irq, | ||
146 | }; | 129 | }; |
147 | 130 | ||
148 | static void | 131 | static void |
@@ -195,7 +178,7 @@ rawhide_init_irq(void) | |||
195 | 178 | ||
196 | for (i = 16; i < 128; ++i) { | 179 | for (i = 16; i < 128; ++i) { |
197 | irq_to_desc(i)->status |= IRQ_LEVEL; | 180 | irq_to_desc(i)->status |= IRQ_LEVEL; |
198 | set_irq_chip_and_handler(i, &rawhide_irq_type, alpha_do_IRQ); | 181 | set_irq_chip_and_handler(i, &rawhide_irq_type, handle_level_irq); |
199 | } | 182 | } |
200 | 183 | ||
201 | init_i8259a_irqs(); | 184 | init_i8259a_irqs(); |
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c index 8a029a913014..89e7e37ec84c 100644 --- a/arch/alpha/kernel/sys_rx164.c +++ b/arch/alpha/kernel/sys_rx164.c | |||
@@ -58,28 +58,11 @@ rx164_disable_irq(unsigned int irq) | |||
58 | rx164_update_irq_hw(cached_irq_mask &= ~(1UL << (irq - 16))); | 58 | rx164_update_irq_hw(cached_irq_mask &= ~(1UL << (irq - 16))); |
59 | } | 59 | } |
60 | 60 | ||
61 | static unsigned int | ||
62 | rx164_startup_irq(unsigned int irq) | ||
63 | { | ||
64 | rx164_enable_irq(irq); | ||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | static void | ||
69 | rx164_end_irq(unsigned int irq) | ||
70 | { | ||
71 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
72 | rx164_enable_irq(irq); | ||
73 | } | ||
74 | |||
75 | static struct irq_chip rx164_irq_type = { | 61 | static struct irq_chip rx164_irq_type = { |
76 | .name = "RX164", | 62 | .name = "RX164", |
77 | .startup = rx164_startup_irq, | 63 | .unmask = rx164_enable_irq, |
78 | .shutdown = rx164_disable_irq, | 64 | .mask = rx164_disable_irq, |
79 | .enable = rx164_enable_irq, | 65 | .mask_ack = rx164_disable_irq, |
80 | .disable = rx164_disable_irq, | ||
81 | .ack = rx164_disable_irq, | ||
82 | .end = rx164_end_irq, | ||
83 | }; | 66 | }; |
84 | 67 | ||
85 | static void | 68 | static void |
@@ -117,7 +100,7 @@ rx164_init_irq(void) | |||
117 | rx164_update_irq_hw(0); | 100 | rx164_update_irq_hw(0); |
118 | for (i = 16; i < 40; ++i) { | 101 | for (i = 16; i < 40; ++i) { |
119 | irq_to_desc(i)->status |= IRQ_LEVEL; | 102 | irq_to_desc(i)->status |= IRQ_LEVEL; |
120 | set_irq_chip_and_handler(i, &rx164_irq_type, alpha_do_IRQ); | 103 | set_irq_chip_and_handler(i, &rx164_irq_type, handle_level_irq); |
121 | } | 104 | } |
122 | 105 | ||
123 | init_i8259a_irqs(); | 106 | init_i8259a_irqs(); |
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c index ed8831567500..5c4423d1b06c 100644 --- a/arch/alpha/kernel/sys_sable.c +++ b/arch/alpha/kernel/sys_sable.c | |||
@@ -474,20 +474,6 @@ sable_lynx_disable_irq(unsigned int irq) | |||
474 | #endif | 474 | #endif |
475 | } | 475 | } |
476 | 476 | ||
477 | static unsigned int | ||
478 | sable_lynx_startup_irq(unsigned int irq) | ||
479 | { | ||
480 | sable_lynx_enable_irq(irq); | ||
481 | return 0; | ||
482 | } | ||
483 | |||
484 | static void | ||
485 | sable_lynx_end_irq(unsigned int irq) | ||
486 | { | ||
487 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
488 | sable_lynx_enable_irq(irq); | ||
489 | } | ||
490 | |||
491 | static void | 477 | static void |
492 | sable_lynx_mask_and_ack_irq(unsigned int irq) | 478 | sable_lynx_mask_and_ack_irq(unsigned int irq) |
493 | { | 479 | { |
@@ -503,12 +489,9 @@ sable_lynx_mask_and_ack_irq(unsigned int irq) | |||
503 | 489 | ||
504 | static struct irq_chip sable_lynx_irq_type = { | 490 | static struct irq_chip sable_lynx_irq_type = { |
505 | .name = "SABLE/LYNX", | 491 | .name = "SABLE/LYNX", |
506 | .startup = sable_lynx_startup_irq, | 492 | .unmask = sable_lynx_enable_irq, |
507 | .shutdown = sable_lynx_disable_irq, | 493 | .mask = sable_lynx_disable_irq, |
508 | .enable = sable_lynx_enable_irq, | 494 | .mask_ack = sable_lynx_mask_and_ack_irq, |
509 | .disable = sable_lynx_disable_irq, | ||
510 | .ack = sable_lynx_mask_and_ack_irq, | ||
511 | .end = sable_lynx_end_irq, | ||
512 | }; | 495 | }; |
513 | 496 | ||
514 | static void | 497 | static void |
@@ -537,7 +520,7 @@ sable_lynx_init_irq(int nr_of_irqs) | |||
537 | for (i = 0; i < nr_of_irqs; ++i) { | 520 | for (i = 0; i < nr_of_irqs; ++i) { |
538 | irq_to_desc(i)->status |= IRQ_LEVEL; | 521 | irq_to_desc(i)->status |= IRQ_LEVEL; |
539 | set_irq_chip_and_handler(i, &sable_lynx_irq_type, | 522 | set_irq_chip_and_handler(i, &sable_lynx_irq_type, |
540 | alpha_do_IRQ); | 523 | handle_level_irq); |
541 | } | 524 | } |
542 | 525 | ||
543 | common_init_isa_dma(); | 526 | common_init_isa_dma(); |
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c index dc3c23265eff..f8a1e8a862fb 100644 --- a/arch/alpha/kernel/sys_takara.c +++ b/arch/alpha/kernel/sys_takara.c | |||
@@ -60,28 +60,11 @@ takara_disable_irq(unsigned int irq) | |||
60 | takara_update_irq_hw(irq, mask); | 60 | takara_update_irq_hw(irq, mask); |
61 | } | 61 | } |
62 | 62 | ||
63 | static unsigned int | ||
64 | takara_startup_irq(unsigned int irq) | ||
65 | { | ||
66 | takara_enable_irq(irq); | ||
67 | return 0; /* never anything pending */ | ||
68 | } | ||
69 | |||
70 | static void | ||
71 | takara_end_irq(unsigned int irq) | ||
72 | { | ||
73 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
74 | takara_enable_irq(irq); | ||
75 | } | ||
76 | |||
77 | static struct irq_chip takara_irq_type = { | 63 | static struct irq_chip takara_irq_type = { |
78 | .name = "TAKARA", | 64 | .name = "TAKARA", |
79 | .startup = takara_startup_irq, | 65 | .unmask = takara_enable_irq, |
80 | .shutdown = takara_disable_irq, | 66 | .mask = takara_disable_irq, |
81 | .enable = takara_enable_irq, | 67 | .mask_ack = takara_disable_irq, |
82 | .disable = takara_disable_irq, | ||
83 | .ack = takara_disable_irq, | ||
84 | .end = takara_end_irq, | ||
85 | }; | 68 | }; |
86 | 69 | ||
87 | static void | 70 | static void |
@@ -154,7 +137,7 @@ takara_init_irq(void) | |||
154 | 137 | ||
155 | for (i = 16; i < 128; ++i) { | 138 | for (i = 16; i < 128; ++i) { |
156 | irq_to_desc(i)->status |= IRQ_LEVEL; | 139 | irq_to_desc(i)->status |= IRQ_LEVEL; |
157 | set_irq_chip_and_handler(i, &takara_irq_type, alpha_do_IRQ); | 140 | set_irq_chip_and_handler(i, &takara_irq_type, handle_level_irq); |
158 | } | 141 | } |
159 | 142 | ||
160 | common_init_isa_dma(); | 143 | common_init_isa_dma(); |
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index 9870f3daa73f..e02494bf5ef3 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c | |||
@@ -129,20 +129,6 @@ titan_disable_irq(unsigned int irq) | |||
129 | spin_unlock(&titan_irq_lock); | 129 | spin_unlock(&titan_irq_lock); |
130 | } | 130 | } |
131 | 131 | ||
132 | static unsigned int | ||
133 | titan_startup_irq(unsigned int irq) | ||
134 | { | ||
135 | titan_enable_irq(irq); | ||
136 | return 0; /* never anything pending */ | ||
137 | } | ||
138 | |||
139 | static void | ||
140 | titan_end_irq(unsigned int irq) | ||
141 | { | ||
142 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
143 | titan_enable_irq(irq); | ||
144 | } | ||
145 | |||
146 | static void | 132 | static void |
147 | titan_cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) | 133 | titan_cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) |
148 | { | 134 | { |
@@ -190,19 +176,16 @@ init_titan_irqs(struct irq_chip * ops, int imin, int imax) | |||
190 | long i; | 176 | long i; |
191 | for (i = imin; i <= imax; ++i) { | 177 | for (i = imin; i <= imax; ++i) { |
192 | irq_to_desc(i)->status |= IRQ_LEVEL; | 178 | irq_to_desc(i)->status |= IRQ_LEVEL; |
193 | set_irq_chip_and_handler(i, ops, alpha_do_IRQ); | 179 | set_irq_chip_and_handler(i, ops, handle_level_irq); |
194 | } | 180 | } |
195 | } | 181 | } |
196 | 182 | ||
197 | static struct irq_chip titan_irq_type = { | 183 | static struct irq_chip titan_irq_type = { |
198 | .name = "TITAN", | 184 | .name = "TITAN", |
199 | .startup = titan_startup_irq, | 185 | .unmask = titan_enable_irq, |
200 | .shutdown = titan_disable_irq, | 186 | .mask = titan_disable_irq, |
201 | .enable = titan_enable_irq, | 187 | .mask_ack = titan_disable_irq, |
202 | .disable = titan_disable_irq, | 188 | .set_affinity = titan_set_irq_affinity, |
203 | .ack = titan_disable_irq, | ||
204 | .end = titan_end_irq, | ||
205 | .set_affinity = titan_set_irq_affinity, | ||
206 | }; | 189 | }; |
207 | 190 | ||
208 | static irqreturn_t | 191 | static irqreturn_t |
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c index f6004f05f502..eec52594d410 100644 --- a/arch/alpha/kernel/sys_wildfire.c +++ b/arch/alpha/kernel/sys_wildfire.c | |||
@@ -139,32 +139,11 @@ wildfire_mask_and_ack_irq(unsigned int irq) | |||
139 | spin_unlock(&wildfire_irq_lock); | 139 | spin_unlock(&wildfire_irq_lock); |
140 | } | 140 | } |
141 | 141 | ||
142 | static unsigned int | ||
143 | wildfire_startup_irq(unsigned int irq) | ||
144 | { | ||
145 | wildfire_enable_irq(irq); | ||
146 | return 0; /* never anything pending */ | ||
147 | } | ||
148 | |||
149 | static void | ||
150 | wildfire_end_irq(unsigned int irq) | ||
151 | { | ||
152 | #if 0 | ||
153 | if (!irq_has_action(irq)) | ||
154 | printk("got irq %d\n", irq); | ||
155 | #endif | ||
156 | if (!(irq_to_desc(irq)->status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
157 | wildfire_enable_irq(irq); | ||
158 | } | ||
159 | |||
160 | static struct irq_chip wildfire_irq_type = { | 142 | static struct irq_chip wildfire_irq_type = { |
161 | .name = "WILDFIRE", | 143 | .name = "WILDFIRE", |
162 | .startup = wildfire_startup_irq, | 144 | .unmask = wildfire_enable_irq, |
163 | .shutdown = wildfire_disable_irq, | 145 | .mask = wildfire_disable_irq, |
164 | .enable = wildfire_enable_irq, | 146 | .mask_ack = wildfire_mask_and_ack_irq, |
165 | .disable = wildfire_disable_irq, | ||
166 | .ack = wildfire_mask_and_ack_irq, | ||
167 | .end = wildfire_end_irq, | ||
168 | }; | 147 | }; |
169 | 148 | ||
170 | static void __init | 149 | static void __init |
@@ -200,15 +179,16 @@ wildfire_init_irq_per_pca(int qbbno, int pcano) | |||
200 | continue; | 179 | continue; |
201 | irq_to_desc(i+irq_bias)->status |= IRQ_LEVEL; | 180 | irq_to_desc(i+irq_bias)->status |= IRQ_LEVEL; |
202 | set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type, | 181 | set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type, |
203 | alpha_do_IRQ); | 182 | handle_level_irq); |
204 | } | 183 | } |
205 | 184 | ||
206 | irq_to_desc(36+irq_bias)->status |= IRQ_LEVEL; | 185 | irq_to_desc(36+irq_bias)->status |= IRQ_LEVEL; |
207 | set_irq_chip_and_handler(36+irq_bias, &wildfire_irq_type, alpha_do_IRQ); | 186 | set_irq_chip_and_handler(36+irq_bias, &wildfire_irq_type, |
187 | handle_level_irq); | ||
208 | for (i = 40; i < 64; ++i) { | 188 | for (i = 40; i < 64; ++i) { |
209 | irq_to_desc(i+irq_bias)->status |= IRQ_LEVEL; | 189 | irq_to_desc(i+irq_bias)->status |= IRQ_LEVEL; |
210 | set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type, | 190 | set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type, |
211 | alpha_do_IRQ); | 191 | handle_level_irq); |
212 | } | 192 | } |
213 | 193 | ||
214 | setup_irq(32+irq_bias, &isa_enable); | 194 | setup_irq(32+irq_bias, &isa_enable); |