提交 cde21de1 编写于 作者: L Linus Walleij

mach-u300: cleanup clockevent code

Use the new clockevents_config_and_register() function to register
the U300 clockevent, since that code requires ->cpumask to be set
we set this even on this UP system to please the framework.

Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
上级 c5314877
...@@ -27,9 +27,6 @@ ...@@ -27,9 +27,6 @@
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
/* Be able to sleep for atleast 4 seconds (usually more) */
#define APPTIMER_MIN_RANGE 4
/* /*
* APP side special timer registers * APP side special timer registers
* This timer contains four timers which can fire an interrupt each. * This timer contains four timers which can fire an interrupt each.
...@@ -309,11 +306,11 @@ static int u300_set_next_event(unsigned long cycles, ...@@ -309,11 +306,11 @@ static int u300_set_next_event(unsigned long cycles,
/* Use general purpose timer 1 as clock event */ /* Use general purpose timer 1 as clock event */
static struct clock_event_device clockevent_u300_1mhz = { static struct clock_event_device clockevent_u300_1mhz = {
.name = "GPT1", .name = "GPT1",
.rating = 300, /* Reasonably fast and accurate clock event */ .rating = 300, /* Reasonably fast and accurate clock event */
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
.set_next_event = u300_set_next_event, .set_next_event = u300_set_next_event,
.set_mode = u300_set_mode, .set_mode = u300_set_mode,
}; };
/* Clock event timer interrupt handler */ /* Clock event timer interrupt handler */
...@@ -328,9 +325,9 @@ static irqreturn_t u300_timer_interrupt(int irq, void *dev_id) ...@@ -328,9 +325,9 @@ static irqreturn_t u300_timer_interrupt(int irq, void *dev_id)
} }
static struct irqaction u300_timer_irq = { static struct irqaction u300_timer_irq = {
.name = "U300 Timer Tick", .name = "U300 Timer Tick",
.flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
.handler = u300_timer_interrupt, .handler = u300_timer_interrupt,
}; };
/* /*
...@@ -413,16 +410,10 @@ static void __init u300_timer_init(void) ...@@ -413,16 +410,10 @@ static void __init u300_timer_init(void)
"GPT2", rate, 300, 32, clocksource_mmio_readl_up)) "GPT2", rate, 300, 32, clocksource_mmio_readl_up))
pr_err("timer: failed to initialize U300 clock source\n"); pr_err("timer: failed to initialize U300 clock source\n");
clockevents_calc_mult_shift(&clockevent_u300_1mhz, /* Configure and register the clockevent */
rate, APPTIMER_MIN_RANGE); clockevents_config_and_register(&clockevent_u300_1mhz, rate,
/* 32bit counter, so 32bits delta is max */ 1, 0xffffffff);
clockevent_u300_1mhz.max_delta_ns =
clockevent_delta2ns(0xffffffff, &clockevent_u300_1mhz);
/* This timer is slow enough to set for 1 cycle == 1 MHz */
clockevent_u300_1mhz.min_delta_ns =
clockevent_delta2ns(1, &clockevent_u300_1mhz);
clockevent_u300_1mhz.cpumask = cpumask_of(0);
clockevents_register_device(&clockevent_u300_1mhz);
/* /*
* TODO: init and register the rest of the timers too, they can be * TODO: init and register the rest of the timers too, they can be
* used by hrtimers! * used by hrtimers!
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册