summaryrefslogtreecommitdiff
path: root/arch/mips/kernel/cevt-gic.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/cevt-gic.c')
-rw-r--r--arch/mips/kernel/cevt-gic.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/mips/kernel/cevt-gic.c b/arch/mips/kernel/cevt-gic.c
index a90bd4c..4f9262a 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;
}