diff options
-rw-r--r-- | arch/mips/mips-boards/generic/init.c | 1 | ||||
-rw-r--r-- | arch/mips/mips-boards/generic/pci.c | 1 | ||||
-rw-r--r-- | arch/mips/mips-boards/malta/malta_int.c | 21 | ||||
-rw-r--r-- | include/asm-mips/mips-boards/generic.h | 1 |
4 files changed, 9 insertions, 15 deletions
diff --git a/arch/mips/mips-boards/generic/init.c b/arch/mips/mips-boards/generic/init.c index 58256ea33102..eab5a705e989 100644 --- a/arch/mips/mips-boards/generic/init.c +++ b/arch/mips/mips-boards/generic/init.c | |||
@@ -337,6 +337,7 @@ void __init prom_init(void) | |||
337 | 337 | ||
338 | case MIPS_REVISION_CORID_CORE_MSC: | 338 | case MIPS_REVISION_CORID_CORE_MSC: |
339 | case MIPS_REVISION_CORID_CORE_FPGA2: | 339 | case MIPS_REVISION_CORID_CORE_FPGA2: |
340 | case MIPS_REVISION_CORID_CORE_FPGA3: | ||
340 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: | 341 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: |
341 | _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000); | 342 | _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000); |
342 | 343 | ||
diff --git a/arch/mips/mips-boards/generic/pci.c b/arch/mips/mips-boards/generic/pci.c index c8398c497a21..1f6f9df74ab2 100644 --- a/arch/mips/mips-boards/generic/pci.c +++ b/arch/mips/mips-boards/generic/pci.c | |||
@@ -197,6 +197,7 @@ void __init mips_pcibios_init(void) | |||
197 | 197 | ||
198 | case MIPS_REVISION_CORID_CORE_MSC: | 198 | case MIPS_REVISION_CORID_CORE_MSC: |
199 | case MIPS_REVISION_CORID_CORE_FPGA2: | 199 | case MIPS_REVISION_CORID_CORE_FPGA2: |
200 | case MIPS_REVISION_CORID_CORE_FPGA3: | ||
200 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: | 201 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: |
201 | /* Set up resource ranges from the controller's registers. */ | 202 | /* Set up resource ranges from the controller's registers. */ |
202 | MSC_READ(MSC01_PCI_SC2PMBASL, start); | 203 | MSC_READ(MSC01_PCI_SC2PMBASL, start); |
diff --git a/arch/mips/mips-boards/malta/malta_int.c b/arch/mips/mips-boards/malta/malta_int.c index 6f99a4492015..d06dc5ad6c9e 100644 --- a/arch/mips/mips-boards/malta/malta_int.c +++ b/arch/mips/mips-boards/malta/malta_int.c | |||
@@ -57,6 +57,7 @@ static inline int mips_pcibios_iack(void) | |||
57 | switch(mips_revision_corid) { | 57 | switch(mips_revision_corid) { |
58 | case MIPS_REVISION_CORID_CORE_MSC: | 58 | case MIPS_REVISION_CORID_CORE_MSC: |
59 | case MIPS_REVISION_CORID_CORE_FPGA2: | 59 | case MIPS_REVISION_CORID_CORE_FPGA2: |
60 | case MIPS_REVISION_CORID_CORE_FPGA3: | ||
60 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: | 61 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: |
61 | MSC_READ(MSC01_PCI_IACK, irq); | 62 | MSC_READ(MSC01_PCI_IACK, irq); |
62 | irq &= 0xff; | 63 | irq &= 0xff; |
@@ -103,22 +104,10 @@ static inline int get_int(void) | |||
103 | irq = mips_pcibios_iack(); | 104 | irq = mips_pcibios_iack(); |
104 | 105 | ||
105 | /* | 106 | /* |
106 | * IRQ7 is used to detect spurious interrupts. | 107 | * The only way we can decide if an interrupt is spurious |
107 | * The interrupt acknowledge cycle returns IRQ7, if no | 108 | * is by checking the 8259 registers. This needs a spinlock |
108 | * interrupts is requested. | 109 | * on an SMP system, so leave it up to the generic code... |
109 | * We can differentiate between this situation and a | ||
110 | * "Normal" IRQ7 by reading the ISR. | ||
111 | */ | 110 | */ |
112 | if (irq == 7) | ||
113 | { | ||
114 | outb(PIIX4_OCW3_SEL | PIIX4_OCW3_ISR, | ||
115 | PIIX4_ICTLR1_OCW3); | ||
116 | if (!(inb(PIIX4_ICTLR1_OCW3) & (1 << 7))) { | ||
117 | irq = -1; /* Spurious interrupt */ | ||
118 | printk("We got a spurious interrupt from PIIX4.\n"); | ||
119 | atomic_inc(&irq_err_count); | ||
120 | } | ||
121 | } | ||
122 | 111 | ||
123 | spin_unlock_irqrestore(&mips_irq_lock, flags); | 112 | spin_unlock_irqrestore(&mips_irq_lock, flags); |
124 | 113 | ||
@@ -153,6 +142,7 @@ void corehi_irqdispatch(struct pt_regs *regs) | |||
153 | switch(mips_revision_corid) { | 142 | switch(mips_revision_corid) { |
154 | case MIPS_REVISION_CORID_CORE_MSC: | 143 | case MIPS_REVISION_CORID_CORE_MSC: |
155 | case MIPS_REVISION_CORID_CORE_FPGA2: | 144 | case MIPS_REVISION_CORID_CORE_FPGA2: |
145 | case MIPS_REVISION_CORID_CORE_FPGA3: | ||
156 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: | 146 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: |
157 | ll_msc_irq(regs); | 147 | ll_msc_irq(regs); |
158 | break; | 148 | break; |
@@ -233,6 +223,7 @@ void __init arch_init_irq(void) | |||
233 | switch(mips_revision_corid) { | 223 | switch(mips_revision_corid) { |
234 | case MIPS_REVISION_CORID_CORE_MSC: | 224 | case MIPS_REVISION_CORID_CORE_MSC: |
235 | case MIPS_REVISION_CORID_CORE_FPGA2: | 225 | case MIPS_REVISION_CORID_CORE_FPGA2: |
226 | case MIPS_REVISION_CORID_CORE_FPGA3: | ||
236 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: | 227 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: |
237 | if (cpu_has_veic) | 228 | if (cpu_has_veic) |
238 | init_msc_irqs (MSC01E_INT_BASE, msc_eicirqmap, msc_nr_eicirqs); | 229 | init_msc_irqs (MSC01E_INT_BASE, msc_eicirqmap, msc_nr_eicirqs); |
diff --git a/include/asm-mips/mips-boards/generic.h b/include/asm-mips/mips-boards/generic.h index ed01124561c1..25b6ffc26623 100644 --- a/include/asm-mips/mips-boards/generic.h +++ b/include/asm-mips/mips-boards/generic.h | |||
@@ -66,6 +66,7 @@ | |||
66 | #define MIPS_REVISION_CORID_CORE_EMUL 6 | 66 | #define MIPS_REVISION_CORID_CORE_EMUL 6 |
67 | #define MIPS_REVISION_CORID_CORE_FPGA2 7 | 67 | #define MIPS_REVISION_CORID_CORE_FPGA2 7 |
68 | #define MIPS_REVISION_CORID_CORE_FPGAR2 8 | 68 | #define MIPS_REVISION_CORID_CORE_FPGAR2 8 |
69 | #define MIPS_REVISION_CORID_CORE_FPGA3 9 | ||
69 | 70 | ||
70 | /**** Artificial corid defines ****/ | 71 | /**** Artificial corid defines ****/ |
71 | /* | 72 | /* |