int timer_init (void) { /* Divide clock by CONFIG_SYS_TMU_CLK_DIV */ u16 bit = 0; switch (CONFIG_SYS_TMU_CLK_DIV) { case 1024: bit = 4; break; case 256: bit = 3; break; case 64: bit = 2; break; case 16: bit = 1; break; case 4: default: break; } writew(readw(TCR0) | bit, TCR0); /* Calc clock rate */ timer_freq = get_tmu0_clk_rate() >> ((bit + 1) * 2); tmu_timer_stop(0); tmu_timer_start(0); last_tcnt = 0; overflow_ticks = 0; return 0; }
int timer_init (void) { /* Divide clock by TMU_CLK_DIVIDER */ u16 bit = 0; switch (TMU_CLK_DIVIDER) { case 1024: bit = 4; break; case 256: bit = 3; break; case 64: bit = 2; break; case 16: bit = 1; break; case 4: default: break; } writew(readw(TCR0) | bit, TCR0); /* Clock frequency calc */ timer_freq = get_tmu0_clk_rate() >> ((bit + 1) * 2); tmu_timer_stop(0); tmu_timer_start(0); return 0; }
unsigned long get_tbclk(void) { return get_tmu0_clk_rate() >> ((bit + 1) * 2); }