Skip to content

Commit

Permalink
openrisc: Set shortest clock event to 100 ticks
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jonas Bonn committed Feb 17, 2012
1 parent 1742527 commit 754d5c2
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions arch/openrisc/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,16 +125,13 @@ irqreturn_t __irq_entry timer_interrupt(struct pt_regs *regs)

static __init void openrisc_clockevent_init(void)
{
clockevents_calc_mult_shift(&clockevent_openrisc_timer,
cpuinfo.clock_frequency, 4);
clockevent_openrisc_timer.cpumask = cpumask_of(0);

/* We only have 28 bits */
clockevent_openrisc_timer.max_delta_ns =
clockevent_delta2ns((u32) 0x0fffffff, &clockevent_openrisc_timer);
clockevent_openrisc_timer.min_delta_ns =
clockevent_delta2ns(1, &clockevent_openrisc_timer);
clockevent_openrisc_timer.cpumask = cpumask_of(0);
clockevents_register_device(&clockevent_openrisc_timer);
clockevents_config_and_register(&clockevent_openrisc_timer,
cpuinfo.clock_frequency,
100, 0x0fffffff);

}

/**
Expand Down

0 comments on commit 754d5c2

Please sign in to comment.