Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
}