static int gic_clockevent_init(void) { if (!cpu_has_counter || !gic_frequency) return -ENXIO; setup_percpu_irq(gic_timer_irq, &gic_compare_irqaction); register_cpu_notifier(&gic_cpu_nb); gic_clockevent_cpu_init(this_cpu_ptr(&gic_clockevent_device)); return 0; }
static void __init kronos_clockevent_init(int irq) { int ret; ret = setup_percpu_irq(irq, &kronos_timer_irq); if(ret) { pr_err("Sytem Timer IRQ register failed: %d \n", ret); BUG(); } enable_percpu_irq(irq, 0); clkevt.cpumask = cpumask_of(0); clkevt.irq = irq; clockevents_config_and_register(&clkevt, global_timer_freq, 0xf, 0xffffffff); }
static int gic_clockevent_init(void) { int ret; if (!gic_frequency) return -ENXIO; ret = setup_percpu_irq(gic_timer_irq, &gic_compare_irqaction); if (ret < 0) { pr_err("IRQ %d setup failed (%d)\n", gic_timer_irq, ret); return ret; } cpuhp_setup_state(CPUHP_AP_MIPS_GIC_TIMER_STARTING, "clockevents/mips/gic/timer:starting", gic_starting_cpu, gic_dying_cpu); return 0; }