diff options
-rw-r--r-- | arch/mips/Kconfig | 1 | ||||
-rw-r--r-- | arch/mips/lasat/interrupt.c | 8 | ||||
-rw-r--r-- | arch/mips/pci/pci-lasat.c | 19 | ||||
-rw-r--r-- | include/asm-mips/lasat/lasatint.h | 5 |
4 files changed, 20 insertions, 13 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index f921235239f9..235d4514e0a9 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -133,6 +133,7 @@ config LASAT | |||
133 | select DMA_NONCOHERENT | 133 | select DMA_NONCOHERENT |
134 | select SYS_HAS_EARLY_PRINTK | 134 | select SYS_HAS_EARLY_PRINTK |
135 | select HW_HAS_PCI | 135 | select HW_HAS_PCI |
136 | select IRQ_CPU | ||
136 | select PCI_GT64XXX_PCI0 | 137 | select PCI_GT64XXX_PCI0 |
137 | select MIPS_NILE4 | 138 | select MIPS_NILE4 |
138 | select R5000_CPU_SCACHE | 139 | select R5000_CPU_SCACHE |
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c index 5f35289bfff5..ba9692be3564 100644 --- a/arch/mips/lasat/interrupt.c +++ b/arch/mips/lasat/interrupt.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/kernel_stat.h> | 26 | #include <linux/kernel_stat.h> |
27 | 27 | ||
28 | #include <asm/bootinfo.h> | 28 | #include <asm/bootinfo.h> |
29 | #include <asm/irq_cpu.h> | ||
29 | #include <asm/lasat/lasatint.h> | 30 | #include <asm/lasat/lasatint.h> |
30 | #include <asm/time.h> | 31 | #include <asm/time.h> |
31 | #include <asm/gdb-stub.h> | 32 | #include <asm/gdb-stub.h> |
@@ -88,7 +89,7 @@ asmlinkage void plat_irq_dispatch(void) | |||
88 | int irq; | 89 | int irq; |
89 | 90 | ||
90 | if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */ | 91 | if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */ |
91 | ll_timer_interrupt(7); | 92 | do_IRQ(7); |
92 | return; | 93 | return; |
93 | } | 94 | } |
94 | 95 | ||
@@ -96,7 +97,7 @@ asmlinkage void plat_irq_dispatch(void) | |||
96 | 97 | ||
97 | /* if int_status == 0, then the interrupt has already been cleared */ | 98 | /* if int_status == 0, then the interrupt has already been cleared */ |
98 | if (int_status) { | 99 | if (int_status) { |
99 | irq = ls1bit32(int_status); | 100 | irq = LASATINT_BASE + ls1bit32(int_status); |
100 | 101 | ||
101 | do_IRQ(irq); | 102 | do_IRQ(irq); |
102 | } | 103 | } |
@@ -125,6 +126,7 @@ void __init arch_init_irq(void) | |||
125 | panic("arch_init_irq: mips_machtype incorrect"); | 126 | panic("arch_init_irq: mips_machtype incorrect"); |
126 | } | 127 | } |
127 | 128 | ||
128 | for (i = 0; i <= LASATINT_END; i++) | 129 | mips_cpu_irq_init(); |
130 | for (i = LASATINT_BASE; i <= LASATINT_END; i++) | ||
129 | set_irq_chip_and_handler(i, &lasat_irq_type, handle_level_irq); | 131 | set_irq_chip_and_handler(i, &lasat_irq_type, handle_level_irq); |
130 | } | 132 | } |
diff --git a/arch/mips/pci/pci-lasat.c b/arch/mips/pci/pci-lasat.c index 5abd5c7119be..174f314933b5 100644 --- a/arch/mips/pci/pci-lasat.c +++ b/arch/mips/pci/pci-lasat.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/pci.h> | 10 | #include <linux/pci.h> |
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <asm/bootinfo.h> | 12 | #include <asm/bootinfo.h> |
13 | #include <asm/lasat/lasatint.h> | ||
13 | 14 | ||
14 | extern struct pci_ops nile4_pci_ops; | 15 | extern struct pci_ops nile4_pci_ops; |
15 | extern struct pci_ops gt64xxx_pci0_ops; | 16 | extern struct pci_ops gt64xxx_pci0_ops; |
@@ -54,15 +55,15 @@ static int __init lasat_pci_setup(void) | |||
54 | 55 | ||
55 | arch_initcall(lasat_pci_setup); | 56 | arch_initcall(lasat_pci_setup); |
56 | 57 | ||
57 | #define LASATINT_ETH1 0 | 58 | #define LASATINT_ETH1 (LASATINT_BASE + 0) |
58 | #define LASATINT_ETH0 1 | 59 | #define LASATINT_ETH0 (LASATINT_BASE + 1) |
59 | #define LASATINT_HDC 2 | 60 | #define LASATINT_HDC (LASATINT_BASE + 2) |
60 | #define LASATINT_COMP 3 | 61 | #define LASATINT_COMP (LASATINT_BASE + 3) |
61 | #define LASATINT_HDLC 4 | 62 | #define LASATINT_HDLC (LASATINT_BASE + 4) |
62 | #define LASATINT_PCIA 5 | 63 | #define LASATINT_PCIA (LASATINT_BASE + 5) |
63 | #define LASATINT_PCIB 6 | 64 | #define LASATINT_PCIB (LASATINT_BASE + 6) |
64 | #define LASATINT_PCIC 7 | 65 | #define LASATINT_PCIC (LASATINT_BASE + 7) |
65 | #define LASATINT_PCID 8 | 66 | #define LASATINT_PCID (LASATINT_BASE + 8) |
66 | 67 | ||
67 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 68 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
68 | { | 69 | { |
diff --git a/include/asm-mips/lasat/lasatint.h b/include/asm-mips/lasat/lasatint.h index 1d4a52e12530..581dc45685a2 100644 --- a/include/asm-mips/lasat/lasatint.h +++ b/include/asm-mips/lasat/lasatint.h | |||
@@ -1,7 +1,10 @@ | |||
1 | #ifndef __ASM_LASAT_LASATINT_H | 1 | #ifndef __ASM_LASAT_LASATINT_H |
2 | #define __ASM_LASAT_LASATINT_H | 2 | #define __ASM_LASAT_LASATINT_H |
3 | 3 | ||
4 | #define LASATINT_END 16 | 4 | #include <linux/irq.h> |
5 | |||
6 | #define LASATINT_BASE MIPS_CPU_IRQ_BASE | ||
7 | #define LASATINT_END (LASATINT_BASE + 16) | ||
5 | 8 | ||
6 | /* lasat 100 */ | 9 | /* lasat 100 */ |
7 | #define LASAT_INT_STATUS_REG_100 (KSEG1ADDR(0x1c880000)) | 10 | #define LASAT_INT_STATUS_REG_100 (KSEG1ADDR(0x1c880000)) |