diff options
Diffstat (limited to 'arch/mips/cobalt/irq.c')
-rw-r--r-- | arch/mips/cobalt/irq.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/arch/mips/cobalt/irq.c b/arch/mips/cobalt/irq.c index 82e569d5b02c..4c46f0e73783 100644 --- a/arch/mips/cobalt/irq.c +++ b/arch/mips/cobalt/irq.c | |||
@@ -45,25 +45,22 @@ static inline void galileo_irq(void) | |||
45 | { | 45 | { |
46 | unsigned int mask, pending, devfn; | 46 | unsigned int mask, pending, devfn; |
47 | 47 | ||
48 | mask = GALILEO_INL(GT_INTRMASK_OFS); | 48 | mask = GT_READ(GT_INTRMASK_OFS); |
49 | pending = GALILEO_INL(GT_INTRCAUSE_OFS) & mask; | 49 | pending = GT_READ(GT_INTRCAUSE_OFS) & mask; |
50 | 50 | ||
51 | if (pending & GALILEO_INTR_T0EXP) { | 51 | if (pending & GT_INTR_T0EXP_MSK) { |
52 | 52 | GT_WRITE(GT_INTRCAUSE_OFS, ~GT_INTR_T0EXP_MSK); | |
53 | GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS); | ||
54 | do_IRQ(COBALT_GALILEO_IRQ); | 53 | do_IRQ(COBALT_GALILEO_IRQ); |
55 | 54 | } else if (pending & GT_INTR_RETRYCTR0_MSK) { | |
56 | } else if (pending & GALILEO_INTR_RETRY_CTR) { | 55 | devfn = GT_READ(GT_PCI0_CFGADDR_OFS) >> 8; |
57 | 56 | GT_WRITE(GT_INTRCAUSE_OFS, ~GT_INTR_RETRYCTR0_MSK); | |
58 | devfn = GALILEO_INL(GT_PCI0_CFGADDR_OFS) >> 8; | 57 | printk(KERN_WARNING |
59 | GALILEO_OUTL(~GALILEO_INTR_RETRY_CTR, GT_INTRCAUSE_OFS); | 58 | "Galileo: PCI retry count exceeded (%02x.%u)\n", |
60 | printk(KERN_WARNING "Galileo: PCI retry count exceeded (%02x.%u)\n", | 59 | PCI_SLOT(devfn), PCI_FUNC(devfn)); |
61 | PCI_SLOT(devfn), PCI_FUNC(devfn)); | ||
62 | |||
63 | } else { | 60 | } else { |
64 | 61 | GT_WRITE(GT_INTRMASK_OFS, mask & ~pending); | |
65 | GALILEO_OUTL(mask & ~pending, GT_INTRMASK_OFS); | 62 | printk(KERN_WARNING |
66 | printk(KERN_WARNING "Galileo: masking unexpected interrupt %08x\n", pending); | 63 | "Galileo: masking unexpected interrupt %08x\n", pending); |
67 | } | 64 | } |
68 | } | 65 | } |
69 | 66 | ||
@@ -104,7 +101,7 @@ void __init arch_init_irq(void) | |||
104 | * Mask all Galileo interrupts. The Galileo | 101 | * Mask all Galileo interrupts. The Galileo |
105 | * handler is set in cobalt_timer_setup() | 102 | * handler is set in cobalt_timer_setup() |
106 | */ | 103 | */ |
107 | GALILEO_OUTL(0, GT_INTRMASK_OFS); | 104 | GT_WRITE(GT_INTRMASK_OFS, 0); |
108 | 105 | ||
109 | init_i8259_irqs(); /* 0 ... 15 */ | 106 | init_i8259_irqs(); /* 0 ... 15 */ |
110 | mips_cpu_irq_init(COBALT_CPU_IRQ); /* 16 ... 23 */ | 107 | mips_cpu_irq_init(COBALT_CPU_IRQ); /* 16 ... 23 */ |