void __init mxc_timer_init(void __iomem *base, int irq) { struct clk *clk_per = clk_get_sys("imx-gpt.0", "per"); struct clk *clk_ipg = clk_get_sys("imx-gpt.0", "ipg"); timer_base = base; _mxc_timer_init(irq, clk_per, clk_ipg); }
void __init mxc_timer_init(unsigned long pbase, int irq) { struct clk *clk_per = clk_get_sys("imx-gpt.0", "per"); struct clk *clk_ipg = clk_get_sys("imx-gpt.0", "ipg"); timer_base = ioremap(pbase, SZ_4K); BUG_ON(!timer_base); _mxc_timer_init(irq, clk_per, clk_ipg); }
void __init mxc_timer_init_dt(struct device_node *np) { struct clk *clk_per, *clk_ipg; int irq; timer_base = of_iomap(np, 0); WARN_ON(!timer_base); irq = irq_of_parse_and_map(np, 0); clk_per = of_clk_get_by_name(np, "per"); clk_ipg = of_clk_get_by_name(np, "ipg"); _mxc_timer_init(irq, clk_per, clk_ipg); }
static void __init mxc_timer_init_dt(struct device_node *np) { struct clk *clk_per, *clk_ipg; int irq; if (timer_base) return; timer_base = of_iomap(np, 0); WARN_ON(!timer_base); irq = irq_of_parse_and_map(np, 0); clk_ipg = of_clk_get_by_name(np, "ipg"); /* Try osc_per first, and fall back to per otherwise */ clk_per = of_clk_get_by_name(np, "osc_per"); if (IS_ERR(clk_per)) clk_per = of_clk_get_by_name(np, "per"); _mxc_timer_init(irq, clk_per, clk_ipg); }