aboutsummaryrefslogtreecommitdiff
path: root/arch/sh/kernel/cpu/clock.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-05-13 20:28:15 +0900
committerPaul Mundt <lethal@linux-sh.org>2009-05-13 20:28:15 +0900
commitcc96eace48fdf0f8925a74c6c1f7ffa512e458d2 (patch)
tree7a922b498e387495b3665c5428a932d7d328810e /arch/sh/kernel/cpu/clock.c
parenta77b5ac0ea8e47c77008d3a9a9976dcfbc01c42a (diff)
sh: clkfwk: rate table construction and rounding for SH7785.
This adds support for constructing a rate table by looking at potential divisors for a specified clock. Each FQRMR clock is given its own table. Presently each table is rebuilt when the parent propagates down a new rate, so some more logic needs to be added to do this more intelligently. Additionally, a fairly generic round_rate() implementation is then layered on top of it, which subsequently provides us with cpufreq support. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/clock.c')
-rw-r--r--arch/sh/kernel/cpu/clock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/clock.c b/arch/sh/kernel/cpu/clock.c
index 033f4662b59..56c6e11fa83 100644
--- a/arch/sh/kernel/cpu/clock.c
+++ b/arch/sh/kernel/cpu/clock.c
@@ -63,6 +63,9 @@ void propagate_rate(struct clk *tclk)
list_for_each_entry(clkp, &tclk->children, sibling) {
if (clkp->ops && clkp->ops->recalc)
clkp->rate = clkp->ops->recalc(clkp);
+ if (clkp->ops && clkp->ops->build_rate_table)
+ clkp->ops->build_rate_table(clkp);
+
propagate_rate(clkp);
}
}