static void __init rk29_timer_init_clocksource(void) { static char err[] __initdata = KERN_ERR "%s: can't register clocksource!\n"; struct clocksource *cs = &rk29_timer_clocksource; struct clk *clk = clk_get(NULL, TIMER_CLKSRC_NAME); struct clk *xin24m = clk_get(NULL, "xin24m"); clk_set_parent(clk, xin24m); RK_TIMER_DISABLE(TIMER_CLKSRC); RK_TIMER_SETCOUNT(TIMER_CLKSRC, 0xFFFFFFFF); RK_TIMER_ENABLE_FREE_RUNNING(TIMER_CLKSRC); cs->mult = MULT; if (clocksource_register(cs)) printk(err, cs->name); }
static void __init rk30_timer_init_clocksource(void) { static char err[] __initdata = KERN_ERR "%s: can't register clocksource!\n"; struct clocksource *cs = &rk30_timer_clocksource; struct clk *clk = clk_get(NULL, TIMER_CLKSRC_NAME); struct clk *pclk = clk_get(NULL, "pclk_" TIMER_CLKSRC_NAME); clk_enable(pclk); clk_enable(clk); RK_TIMER_DISABLE(TIMER_CLKSRC); clk_disable(clk); RK_TIMER_SETCOUNT(TIMER_CLKSRC, 0xFFFFFFFF); RK_TIMER_ENABLE_FREE_RUNNING(TIMER_CLKSRC); clk_enable(clk); if (clocksource_register_hz(cs, 24000000)) printk(err, cs->name); }