aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJonas Bonn <jonas@southpole.se>2011-11-18 08:40:04 -0500
committerJonas Bonn <jonas@southpole.se>2012-02-17 04:08:19 -0500
commit754d5c2bf65847f7ff4e0047a830154abe666112 (patch)
tree31fa395b798aa8e2d0f4cf9f5d4b8f116ad21dd1 /arch
parent17425275112960af0dc9882c06c343d3b6ec8dc9 (diff)
openrisc: Set shortest clock event to 100 ticks
It takes a couple of instructions to actually configure a clock event so setting an alarm just 1 clock cycle in the future isn't going to work; doing so results in setting an alarm in the "past" in which case the event won't fire until the timer overflows and rolls back around to the "current time". Not quite sure how many clock cycles it actually takes to get through to actually writing the register, but 100 seems to work reliably. Use generic helper to set up the clock event while we're at it. Reported-by: Jan Schulte <jan.schulte@aacmicrotec.com> Signed-off-by: Jonas Bonn <jonas@southpole.se>
Diffstat (limited to 'arch')
-rw-r--r--arch/openrisc/kernel/time.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/openrisc/kernel/time.c b/arch/openrisc/kernel/time.c
index bd946ef1623d..7c52e9494a8d 100644
--- a/arch/openrisc/kernel/time.c
+++ b/arch/openrisc/kernel/time.c
@@ -125,16 +125,13 @@ irqreturn_t __irq_entry timer_interrupt(struct pt_regs *regs)
125 125
126static __init void openrisc_clockevent_init(void) 126static __init void openrisc_clockevent_init(void)
127{ 127{
128 clockevents_calc_mult_shift(&clockevent_openrisc_timer, 128 clockevent_openrisc_timer.cpumask = cpumask_of(0);
129 cpuinfo.clock_frequency, 4);
130 129
131 /* We only have 28 bits */ 130 /* We only have 28 bits */
132 clockevent_openrisc_timer.max_delta_ns = 131 clockevents_config_and_register(&clockevent_openrisc_timer,
133 clockevent_delta2ns((u32) 0x0fffffff, &clockevent_openrisc_timer); 132 cpuinfo.clock_frequency,
134 clockevent_openrisc_timer.min_delta_ns = 133 100, 0x0fffffff);
135 clockevent_delta2ns(1, &clockevent_openrisc_timer); 134
136 clockevent_openrisc_timer.cpumask = cpumask_of(0);
137 clockevents_register_device(&clockevent_openrisc_timer);
138} 135}
139 136
140/** 137/**