aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/philips
diff options
context:
space:
mode:
authorAtsushi Nemoto <anemo@mba.ocn.ne.jp>2006-11-13 11:13:18 -0500
committerRalf Baechle <ralf@linux-mips.org>2006-11-29 20:14:46 -0500
commit1417836e81c0ab8f5a0bfeafa90d3eaa41b2a067 (patch)
tree0274893cb78ca2e1bb85c3eee0c07a85e0b83d04 /arch/mips/philips
parent1603b5aca4f15b34848fb5594d0c7b6333b99144 (diff)
[MIPS] use generic_handle_irq, handle_level_irq, handle_percpu_irq
Further incorporation of generic irq framework. Replacing __do_IRQ() by proper flow handler would make the irq handling path a bit simpler and faster. * use generic_handle_irq() instead of __do_IRQ(). * use handle_level_irq for obvious level-type irq chips. * use handle_percpu_irq for irqs marked as IRQ_PER_CPU. * setup .eoi routine for irq chips possibly used with handle_percpu_irq. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/philips')
-rw-r--r--arch/mips/philips/pnx8550/common/int.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c
index e4bf494dd435..0dc23930edbd 100644
--- a/arch/mips/philips/pnx8550/common/int.c
+++ b/arch/mips/philips/pnx8550/common/int.c
@@ -192,7 +192,7 @@ void __init arch_init_irq(void)
192 int configPR; 192 int configPR;
193 193
194 for (i = 0; i < PNX8550_INT_CP0_TOTINT; i++) { 194 for (i = 0; i < PNX8550_INT_CP0_TOTINT; i++) {
195 set_irq_chip(i, &level_irq_type); 195 set_irq_chip_and_handler(i, &level_irq_type, handle_level_irq);
196 mask_irq(i); /* mask the irq just in case */ 196 mask_irq(i); /* mask the irq just in case */
197 } 197 }
198 198
@@ -229,7 +229,7 @@ void __init arch_init_irq(void)
229 /* mask/priority is still 0 so we will not get any 229 /* mask/priority is still 0 so we will not get any
230 * interrupts until it is unmasked */ 230 * interrupts until it is unmasked */
231 231
232 set_irq_chip(i, &level_irq_type); 232 set_irq_chip_and_handler(i, &level_irq_type, handle_level_irq);
233 } 233 }
234 234
235 /* Priority level 0 */ 235 /* Priority level 0 */
@@ -238,19 +238,21 @@ void __init arch_init_irq(void)
238 /* Set int vector table address */ 238 /* Set int vector table address */
239 PNX8550_GIC_VECTOR_0 = PNX8550_GIC_VECTOR_1 = 0; 239 PNX8550_GIC_VECTOR_0 = PNX8550_GIC_VECTOR_1 = 0;
240 240
241 set_irq_chip(MIPS_CPU_GIC_IRQ, &level_irq_type); 241 set_irq_chip_and_handler(MIPS_CPU_GIC_IRQ, &level_irq_type,
242 handle_level_irq);
242 setup_irq(MIPS_CPU_GIC_IRQ, &gic_action); 243 setup_irq(MIPS_CPU_GIC_IRQ, &gic_action);
243 244
244 /* init of Timer interrupts */ 245 /* init of Timer interrupts */
245 for (i = PNX8550_INT_TIMER_MIN; i <= PNX8550_INT_TIMER_MAX; i++) 246 for (i = PNX8550_INT_TIMER_MIN; i <= PNX8550_INT_TIMER_MAX; i++)
246 set_irq_chip(i, &level_irq_type); 247 set_irq_chip_and_handler(i, &level_irq_type, handle_level_irq);
247 248
248 /* Stop Timer 1-3 */ 249 /* Stop Timer 1-3 */
249 configPR = read_c0_config7(); 250 configPR = read_c0_config7();
250 configPR |= 0x00000038; 251 configPR |= 0x00000038;
251 write_c0_config7(configPR); 252 write_c0_config7(configPR);
252 253
253 set_irq_chip(MIPS_CPU_TIMER_IRQ, &level_irq_type); 254 set_irq_chip_and_handler(MIPS_CPU_TIMER_IRQ, &level_irq_type,
255 handle_level_irq);
254 setup_irq(MIPS_CPU_TIMER_IRQ, &timer_action); 256 setup_irq(MIPS_CPU_TIMER_IRQ, &timer_action);
255} 257}
256 258