Exemple #1
0
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;
}