diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-05-12 05:59:27 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-05-12 05:59:27 +0900 |
commit | f5c84cf50812c80133e64683d0500b2416d55cb3 (patch) | |
tree | eb116c797a5b56d96deeca62f5122d0de197f601 /arch/sh/kernel/cpu/sh4a/clock-sh7785.c | |
parent | aa87aa343f2cd236b5eccd643abd4df918ed5c4f (diff) | |
download | talos-obmc-linux-f5c84cf50812c80133e64683d0500b2416d55cb3.tar.gz talos-obmc-linux-f5c84cf50812c80133e64683d0500b2416d55cb3.zip |
sh: clkfwk: Tidy up on-chip clock registration and rate propagation.
This tidies up the set_rate hack that the on-chip clocks were abusing to
trigger rate propagation, which is now handled generically.
Additionally, now that CLK_ENABLE_ON_INIT is wired up where it needs to
be for these clocks, the clk_enable() can go away. In some cases this was
bumping up the refcount higher than it should have been.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/sh4a/clock-sh7785.c')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/clock-sh7785.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index edd432894bd9..4dcd1f6f0cbd 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c @@ -137,26 +137,17 @@ static struct clk *sh7785_onchip_clocks[] = { static int __init sh7785_clk_init(void) { struct clk *clk = clk_get(NULL, "master_clk"); - int i; + int i, ret = 0; for (i = 0; i < ARRAY_SIZE(sh7785_onchip_clocks); i++) { struct clk *clkp = sh7785_onchip_clocks[i]; clkp->parent = clk; - clk_register(clkp); - clk_enable(clkp); + ret |= clk_register(clkp); } - /* - * Now that we have the rest of the clocks registered, we need to - * force the parent clock to propagate so that these clocks will - * automatically figure out their rate. We cheat by handing the - * parent clock its current rate and forcing child propagation. - */ - clk_set_rate(clk, clk_get_rate(clk)); - clk_put(clk); - return 0; + return ret; } arch_initcall(sh7785_clk_init); |