|
@@ -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));
|
|
|
|