[ARM] omap: move propagate_rate() calls into generic omap clock code
propagate_rate() is recursive, so it makes sense to minimise the amount of stack which is used for each recursion. So, rather than recursing back into it from the ->recalc functions if RATE_PROPAGATES is set, do that test at the higher level. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
a9e8820963
commit
9a5fedac18
@ -199,8 +199,6 @@ long omap2_dpllcore_round_rate(unsigned long target_rate)
|
||||
static void omap2_dpllcore_recalc(struct clk *clk)
|
||||
{
|
||||
clk->rate = omap2_get_dpll_rate_24xx(clk);
|
||||
|
||||
propagate_rate(clk);
|
||||
}
|
||||
|
||||
static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
|
||||
@ -442,13 +440,11 @@ static u32 omap2_get_sysclkdiv(void)
|
||||
static void omap2_osc_clk_recalc(struct clk *clk)
|
||||
{
|
||||
clk->rate = omap2_get_apll_clkin() * omap2_get_sysclkdiv();
|
||||
propagate_rate(clk);
|
||||
}
|
||||
|
||||
static void omap2_sys_clk_recalc(struct clk *clk)
|
||||
{
|
||||
clk->rate = clk->parent->rate / omap2_get_sysclkdiv();
|
||||
propagate_rate(clk);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -502,7 +498,9 @@ int __init omap2_clk_init(void)
|
||||
clk_init(&omap2_clk_functions);
|
||||
|
||||
omap2_osc_clk_recalc(&osc_ck);
|
||||
propagate_rate(&osc_ck);
|
||||
omap2_sys_clk_recalc(&sys_ck);
|
||||
propagate_rate(&sys_ck);
|
||||
|
||||
for (clkp = onchip_24xx_clks;
|
||||
clkp < onchip_24xx_clks + ARRAY_SIZE(onchip_24xx_clks);
|
||||
|
Reference in New Issue
Block a user