aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/lasat/interrupt.c
diff options
context:
space:
mode:
authorYoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>2007-11-09 04:42:35 -0500
committerRalf Baechle <ralf@linux-mips.org>2007-11-15 18:21:50 -0500
commit89becf5c0d9019f4f9300840f08a98ee33d57d37 (patch)
tree8b6a9295e957de54fdad6866c1437f3d48b12be0 /arch/mips/lasat/interrupt.c
parentfcee3faf8339bb65660c9a22123f71aa0cc30514 (diff)
[MIPS] Lasat: Fix overlap of interrupt number ranges.
The range of MIPS_CPU IRQ and the range of LASAT IRQ overlap. Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/lasat/interrupt.c')
-rw-r--r--arch/mips/lasat/interrupt.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c
index ba9692be3564..cfeab669782f 100644
--- a/arch/mips/lasat/interrupt.c
+++ b/arch/mips/lasat/interrupt.c
@@ -19,17 +19,14 @@
19 * Lasat boards. 19 * Lasat boards.
20 */ 20 */
21#include <linux/init.h> 21#include <linux/init.h>
22#include <linux/irq.h>
23#include <linux/sched.h>
24#include <linux/slab.h>
25#include <linux/interrupt.h> 22#include <linux/interrupt.h>
26#include <linux/kernel_stat.h> 23#include <linux/irq.h>
27 24
28#include <asm/bootinfo.h> 25#include <asm/bootinfo.h>
29#include <asm/irq_cpu.h> 26#include <asm/irq_cpu.h>
30#include <asm/lasat/lasatint.h> 27#include <asm/lasat/lasatint.h>
31#include <asm/time.h> 28
32#include <asm/gdb-stub.h> 29#include <irq.h>
33 30
34static volatile int *lasat_int_status; 31static volatile int *lasat_int_status;
35static volatile int *lasat_int_mask; 32static volatile int *lasat_int_mask;
@@ -97,12 +94,18 @@ asmlinkage void plat_irq_dispatch(void)
97 94
98 /* if int_status == 0, then the interrupt has already been cleared */ 95 /* if int_status == 0, then the interrupt has already been cleared */
99 if (int_status) { 96 if (int_status) {
100 irq = LASATINT_BASE + ls1bit32(int_status); 97 irq = LASAT_IRQ_BASE + ls1bit32(int_status);
101 98
102 do_IRQ(irq); 99 do_IRQ(irq);
103 } 100 }
104} 101}
105 102
103static struct irqaction cascade = {
104 .handler = no_action,
105 .mask = CPU_MASK_NONE,
106 .name = "cascade",
107};
108
106void __init arch_init_irq(void) 109void __init arch_init_irq(void)
107{ 110{
108 int i; 111 int i;
@@ -127,6 +130,9 @@ void __init arch_init_irq(void)
127 } 130 }
128 131
129 mips_cpu_irq_init(); 132 mips_cpu_irq_init();
130 for (i = LASATINT_BASE; i <= LASATINT_END; i++) 133
134 for (i = LASAT_IRQ_BASE; i <= LASAT_IRQ_END; i++)
131 set_irq_chip_and_handler(i, &lasat_irq_type, handle_level_irq); 135 set_irq_chip_and_handler(i, &lasat_irq_type, handle_level_irq);
136
137 setup_irq(LASAT_CASCADE_IRQ, &cascade);
132} 138}