aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/sibyte/bcm1480/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/sibyte/bcm1480/irq.c')
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index 29d3bbb5847d..ed325f0ab28a 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -83,7 +83,7 @@ extern char sb1250_duart_present[];
83#endif 83#endif
84#endif 84#endif
85 85
86static struct hw_interrupt_type bcm1480_irq_type = { 86static struct irq_chip bcm1480_irq_type = {
87 .typename = "BCM1480-IMR", 87 .typename = "BCM1480-IMR",
88 .startup = startup_bcm1480_irq, 88 .startup = startup_bcm1480_irq,
89 .shutdown = shutdown_bcm1480_irq, 89 .shutdown = shutdown_bcm1480_irq,
@@ -140,7 +140,7 @@ static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask)
140{ 140{
141 int i = 0, old_cpu, cpu, int_on, k; 141 int i = 0, old_cpu, cpu, int_on, k;
142 u64 cur_ints; 142 u64 cur_ints;
143 irq_desc_t *desc = irq_desc + irq; 143 struct irq_desc *desc = irq_desc + irq;
144 unsigned long flags; 144 unsigned long flags;
145 unsigned int irq_dirty; 145 unsigned int irq_dirty;
146 146
@@ -278,7 +278,7 @@ void __init init_bcm1480_irqs(void)
278 irq_desc[i].chip = &bcm1480_irq_type; 278 irq_desc[i].chip = &bcm1480_irq_type;
279 bcm1480_irq_owner[i] = 0; 279 bcm1480_irq_owner[i] = 0;
280 } else { 280 } else {
281 irq_desc[i].chip = &no_irq_type; 281 irq_desc[i].chip = &no_irq_chip;
282 } 282 }
283 } 283 }
284} 284}
@@ -301,7 +301,7 @@ static struct irqaction bcm1480_dummy_action = {
301 301
302int bcm1480_steal_irq(int irq) 302int bcm1480_steal_irq(int irq)
303{ 303{
304 irq_desc_t *desc = irq_desc + irq; 304 struct irq_desc *desc = irq_desc + irq;
305 unsigned long flags; 305 unsigned long flags;
306 int retval = 0; 306 int retval = 0;
307 307
@@ -502,22 +502,23 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
502#ifdef CONFIG_SIBYTE_BCM1480_PROF 502#ifdef CONFIG_SIBYTE_BCM1480_PROF
503 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ 503 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
504 sbprof_cpu_intr(exception_epc(regs)); 504 sbprof_cpu_intr(exception_epc(regs));
505 else
505#endif 506#endif
506 507
507 if (pending & CAUSEF_IP4) 508 if (pending & CAUSEF_IP4)
508 bcm1480_timer_interrupt(regs); 509 bcm1480_timer_interrupt(regs);
509 510
510#ifdef CONFIG_SMP 511#ifdef CONFIG_SMP
511 if (pending & CAUSEF_IP3) 512 else if (pending & CAUSEF_IP3)
512 bcm1480_mailbox_interrupt(regs); 513 bcm1480_mailbox_interrupt(regs);
513#endif 514#endif
514 515
515#ifdef CONFIG_KGDB 516#ifdef CONFIG_KGDB
516 if (pending & CAUSEF_IP6) 517 else if (pending & CAUSEF_IP6)
517 bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ 518 bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */
518#endif 519#endif
519 520
520 if (pending & CAUSEF_IP2) { 521 else if (pending & CAUSEF_IP2) {
521 unsigned long long mask_h, mask_l; 522 unsigned long long mask_h, mask_l;
522 unsigned long base; 523 unsigned long base;
523 524
@@ -533,7 +534,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
533 mask_l = __raw_readq( 534 mask_l = __raw_readq(
534 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L)); 535 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L));
535 536
536 if (!mask_h) { 537 if (mask_h) {
537 if (mask_h ^ 1) 538 if (mask_h ^ 1)
538 do_IRQ(63 - dclz(mask_h), regs); 539 do_IRQ(63 - dclz(mask_h), regs);
539 else 540 else