Пример #1
0
void __cpuinit twd_timer_setup_rate(struct clock_event_device *clk,
	u32 timer_rate)
{
	if (twd_timer_rate != timer_rate)
		twd_timer_rate = timer_rate;
	twd_timer_setup(clk);
}
Пример #2
0
/*
 * Setup the local clock events for a CPU.
 */
int __cpuinit local_timer_setup(struct clock_event_device *evt)
{
	/* Local timers are not supprted on OMAP4430 ES1.0 */
	if (omap_rev() == OMAP4430_REV_ES1_0)
		return -ENXIO;

	evt->irq = OMAP44XX_IRQ_LOCALTIMER;
	twd_timer_setup(evt);
	return 0;
}
Пример #3
0
/*
 * Setup the local clock events for a CPU.
 */
int __cpuinit local_timer_setup(struct clock_event_device *evt)
{
	struct device_node *np;

	np = of_find_compatible_node(NULL, NULL, "arm,smp-twd");
	if (!twd_base) {
		twd_base = of_iomap(np, 0);
		WARN_ON(!twd_base);
	}
	evt->irq = irq_of_parse_and_map(np, 0);
	twd_timer_setup(evt);
	return 0;
}
Пример #4
0
static int twd_timer_cpu_notify(struct notifier_block *self,
				unsigned long action, void *hcpu)
{
	switch (action & ~CPU_TASKS_FROZEN) {
	case CPU_STARTING:
		twd_timer_setup();
		break;
	case CPU_DYING:
		twd_timer_stop();
		break;
	}

	return NOTIFY_OK;
}
Пример #5
0
static int __init twd_local_timer_common_register(struct device_node *np)
{
	int err;

	twd_evt = alloc_percpu(struct clock_event_device);
	if (!twd_evt) {
		err = -ENOMEM;
		goto out_free;
	}

	err = request_percpu_irq(twd_ppi, twd_handler, "twd", twd_evt);
	if (err) {
		pr_err("twd: can't register interrupt %d (%d)\n", twd_ppi, err);
		goto out_free;
	}

	err = register_cpu_notifier(&twd_timer_cpu_nb);
	if (err)
		goto out_irq;

#ifndef CONFIG_ARCH_CNS3XXX
	twd_get_clock(np);
#endif

	/*
	 * Immediately configure the timer on the boot CPU, unless we need
	 * jiffies to be incrementing to calibrate the rate in which case
	 * setup the timer in late_time_init.
	 */
	if (twd_timer_rate)
		twd_timer_setup();
	else
		late_time_init = twd_timer_setup;

	return 0;

out_irq:
	free_percpu_irq(twd_ppi, twd_evt);
out_free:
	iounmap(twd_base);
	twd_base = NULL;
	free_percpu(twd_evt);

	return err;
}
Пример #6
0
 /*
  * Setup the local clock events for a CPU.
  */
int __cpuinit local_timer_setup(struct clock_event_device *evt)
{
	evt->irq = IRQ_LOCALTIMER;
	twd_timer_setup(evt);
	return 0;
}
Пример #7
0
/*
 * Setup the local clock events for a CPU.
 */
void __cpuinit local_timer_setup(struct clock_event_device *evt)
{
	evt->irq = 29;
	twd_timer_setup(evt);
}
Пример #8
0
/*
 * Setup the local clock events for a CPU.
 */
int local_timer_setup(struct clock_event_device *evt)
{
	evt->irq = 29;
	twd_timer_setup(evt);
	return 0;
}
void __cpuinit local_timer_setup(struct clock_event_device *evt)
{
	evt->irq = OMAP44XX_IRQ_LOCALTIMER;
	twd_timer_setup(evt);
}