Skip to content

Commit

Permalink
m68knommu: init coldfire timer TRR with n - 1, not n
Browse files Browse the repository at this point in the history
The coldfire timer must be initialised to n - 1 if we want it to count n
cycles between each tick interrupt.  This was already fixed, but has been
lost with the conversion to GENERIC_TIMER.

Signed-off-by: Philippe De Muyter <[email protected]>
Acked-by: Greg Ungerer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
phdm authored and torvalds committed Jun 13, 2008
1 parent 67dddaa commit 6c38d85
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion arch/m68knommu/platform/coldfire/timers.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,13 @@ void hw_timer_init(void)

__raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR));
mcftmr_cycles_per_jiffy = FREQ / HZ;
__raw_writetrr(mcftmr_cycles_per_jiffy, TA(MCFTIMER_TRR));
/*
* The coldfire timer runs from 0 to TRR included, then 0
* again and so on. It counts thus actually TRR + 1 steps
* for 1 tick, not TRR. So if you want n cycles,
* initialize TRR with n - 1.
*/
__raw_writetrr(mcftmr_cycles_per_jiffy - 1, TA(MCFTIMER_TRR));
__raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 |
MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, TA(MCFTIMER_TMR));

Expand Down

0 comments on commit 6c38d85

Please sign in to comment.