[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
@@ -246,8 +246,6 @@ void followparent_recalc(struct clk *clk)
|
||||
return;
|
||||
|
||||
clk->rate = clk->parent->rate;
|
||||
if (unlikely(clk->flags & RATE_PROPAGATES))
|
||||
propagate_rate(clk);
|
||||
}
|
||||
|
||||
/* Propagate rate to children */
|
||||
@@ -261,8 +259,10 @@ void propagate_rate(struct clk * tclk)
|
||||
list_for_each_entry(clkp, &clocks, node) {
|
||||
if (likely(clkp->parent != tclk))
|
||||
continue;
|
||||
if (likely((u32)clkp->recalc))
|
||||
if (clkp->recalc)
|
||||
clkp->recalc(clkp);
|
||||
if (clkp->flags & RATE_PROPAGATES)
|
||||
propagate_rate(clkp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,8 +278,12 @@ void recalculate_root_clocks(void)
|
||||
struct clk *clkp;
|
||||
|
||||
list_for_each_entry(clkp, &clocks, node) {
|
||||
if (unlikely(!clkp->parent) && likely((u32)clkp->recalc))
|
||||
clkp->recalc(clkp);
|
||||
if (!clkp->parent) {
|
||||
if (clkp->recalc)
|
||||
clkp->recalc(clkp);
|
||||
if (clkp->flags & RATE_PROPAGATES)
|
||||
propagate_rate(clkp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user