aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel/irq.c')
-rw-r--r--arch/parisc/kernel/irq.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index efbcee5d2220..272c29a44f2a 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -151,7 +151,7 @@ static struct irq_chip cpu_interrupt_type = {
151 .enable = cpu_enable_irq, 151 .enable = cpu_enable_irq,
152 .disable = cpu_disable_irq, 152 .disable = cpu_disable_irq,
153 .ack = cpu_ack_irq, 153 .ack = cpu_ack_irq,
154 .end = cpu_end_irq, 154 .eoi = cpu_end_irq,
155#ifdef CONFIG_SMP 155#ifdef CONFIG_SMP
156 .set_affinity = cpu_set_affinity_irq, 156 .set_affinity = cpu_set_affinity_irq,
157#endif 157#endif
@@ -247,10 +247,11 @@ int cpu_claim_irq(unsigned int irq, struct irq_chip *type, void *data)
247 if (irq_desc[irq].chip != &cpu_interrupt_type) 247 if (irq_desc[irq].chip != &cpu_interrupt_type)
248 return -EBUSY; 248 return -EBUSY;
249 249
250 /* for iosapic interrupts */
250 if (type) { 251 if (type) {
251 irq_desc[irq].chip = type; 252 set_irq_chip_and_handler(irq, type, parisc_do_IRQ);
252 irq_desc[irq].chip_data = data; 253 set_irq_chip_data(irq, data);
253 cpu_interrupt_type.enable(irq); 254 cpu_enable_irq(irq);
254 } 255 }
255 return 0; 256 return 0;
256} 257}
@@ -368,7 +369,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
368 goto set_out; 369 goto set_out;
369 } 370 }
370#endif 371#endif
371 __do_IRQ(irq); 372 generic_handle_irq(irq);
372 373
373 out: 374 out:
374 irq_exit(); 375 irq_exit();
@@ -398,14 +399,14 @@ static void claim_cpu_irqs(void)
398{ 399{
399 int i; 400 int i;
400 for (i = CPU_IRQ_BASE; i <= CPU_IRQ_MAX; i++) { 401 for (i = CPU_IRQ_BASE; i <= CPU_IRQ_MAX; i++) {
401 irq_desc[i].chip = &cpu_interrupt_type; 402 set_irq_chip_and_handler(i, &cpu_interrupt_type, parisc_do_IRQ);
402 } 403 }
403 404
404 irq_desc[TIMER_IRQ].action = &timer_action; 405 set_irq_handler(TIMER_IRQ, handle_percpu_irq);
405 irq_desc[TIMER_IRQ].status = IRQ_PER_CPU; 406 setup_irq(TIMER_IRQ, &timer_action);
406#ifdef CONFIG_SMP 407#ifdef CONFIG_SMP
407 irq_desc[IPI_IRQ].action = &ipi_action; 408 set_irq_handler(IPI_IRQ, handle_percpu_irq);
408 irq_desc[IPI_IRQ].status = IRQ_PER_CPU; 409 setup_irq(IPI_IRQ, &ipi_action);
409#endif 410#endif
410} 411}
411 412
@@ -423,3 +424,8 @@ void __init init_IRQ(void)
423 set_eiem(cpu_eiem); /* EIEM : enable all external intr */ 424 set_eiem(cpu_eiem); /* EIEM : enable all external intr */
424 425
425} 426}
427
428void parisc_do_IRQ(unsigned int irq, struct irq_desc *desc)
429{
430 __do_IRQ(irq);
431}