aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/philips/pnx8550/common/int.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/philips/pnx8550/common/int.c')
-rw-r--r--arch/mips/philips/pnx8550/common/int.c21
1 files changed, 4 insertions, 17 deletions
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c
index d48665ebd33c..aad03429a5e3 100644
--- a/arch/mips/philips/pnx8550/common/int.c
+++ b/arch/mips/philips/pnx8550/common/int.c
@@ -83,16 +83,15 @@ static void timer_irqdispatch(int irq)
83 83
84asmlinkage void plat_irq_dispatch(void) 84asmlinkage void plat_irq_dispatch(void)
85{ 85{
86 unsigned int pending = read_c0_status() & read_c0_cause(); 86 unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM;
87 87
88 if (pending & STATUSF_IP2) 88 if (pending & STATUSF_IP2)
89 hw0_irqdispatch(2); 89 hw0_irqdispatch(2);
90 else if (pending & STATUSF_IP7) { 90 else if (pending & STATUSF_IP7) {
91 if (read_c0_config7() & 0x01c0) 91 if (read_c0_config7() & 0x01c0)
92 timer_irqdispatch(7); 92 timer_irqdispatch(7);
93 } 93 } else
94 94 spurious_interrupt();
95 spurious_interrupt();
96} 95}
97 96
98static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) 97static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask)
@@ -204,19 +203,7 @@ void __init arch_init_irq(void)
204 * Note, PCI INTA is active low on the bus, but inverted 203 * Note, PCI INTA is active low on the bus, but inverted
205 * in the GIC, so to us it's active high. 204 * in the GIC, so to us it's active high.
206 */ 205 */
207#ifdef CONFIG_PNX8550_V2PCI 206 PNX8550_GIC_REQ(i - PNX8550_INT_GIC_MIN) = 0x1E000000;
208 if (gic_int_line == (PNX8550_INT_GPIO0 - PNX8550_INT_GIC_MIN)) {
209 /* PCI INT through gpio 8, which is setup in
210 * pnx8550_setup.c and routed to GPIO
211 * Interrupt Level 0 (GPIO Connection 58).
212 * Set it active low. */
213
214 PNX8550_GIC_REQ(gic_int_line) = 0x1E020000;
215 } else
216#endif
217 {
218 PNX8550_GIC_REQ(i - PNX8550_INT_GIC_MIN) = 0x1E000000;
219 }
220 207
221 /* mask/priority is still 0 so we will not get any 208 /* mask/priority is still 0 so we will not get any
222 * interrupts until it is unmasked */ 209 * interrupts until it is unmasked */