aboutsummaryrefslogtreecommitdiff
path: root/arch/mips/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r--arch/mips/kernel/cevt-gic.c15
-rw-r--r--arch/mips/kernel/cevt-r4k.c2
2 files changed, 7 insertions, 10 deletions
diff --git a/arch/mips/kernel/cevt-gic.c b/arch/mips/kernel/cevt-gic.c
index a90bd4c81c7d..4f9262ab04f9 100644
--- a/arch/mips/kernel/cevt-gic.c
+++ b/arch/mips/kernel/cevt-gic.c
@@ -68,7 +68,7 @@ int gic_clockevent_init(void)
if (!cpu_has_counter || !gic_frequency)
return -ENXIO;
- irq = MIPS_GIC_IRQ_BASE;
+ irq = MIPS_GIC_IRQ_BASE + GIC_LOCAL_TO_HWIRQ(GIC_LOCAL_INT_COMPARE);
cd = &per_cpu(gic_clockevent_device, cpu);
@@ -91,16 +91,13 @@ int gic_clockevent_init(void)
clockevents_register_device(cd);
- GICWRITE(GIC_REG(VPE_LOCAL, GIC_VPE_COMPARE_MAP),
- GIC_MAP_TO_PIN_MSK | gic_cpu_pin);
- GICWRITE(GIC_REG(VPE_LOCAL, GIC_VPE_SMASK), GIC_VPE_SMASK_CMP_MSK);
+ if (!gic_timer_irq_installed) {
+ setup_percpu_irq(irq, &gic_compare_irqaction);
+ gic_timer_irq_installed = 1;
+ }
- if (gic_timer_irq_installed)
- return 0;
+ enable_percpu_irq(irq, IRQ_TYPE_NONE);
- gic_timer_irq_installed = 1;
- setup_irq(irq, &gic_compare_irqaction);
- irq_set_handler(irq, handle_percpu_irq);
return 0;
}
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c
index 5b8f8e32b47d..fd0ef8d851cc 100644
--- a/arch/mips/kernel/cevt-r4k.c
+++ b/arch/mips/kernel/cevt-r4k.c
@@ -86,7 +86,7 @@ void mips_event_handler(struct clock_event_device *dev)
static int c0_compare_int_pending(void)
{
#ifdef CONFIG_MIPS_GIC
- if (cpu_has_veic)
+ if (gic_present)
return gic_get_timer_pending();
#endif
return (read_c0_cause() >> cp0_compare_irq_shift) & (1ul << CAUSEB_IP);