aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/cpu/clock.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-05-13 04:03:09 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-05-13 04:03:09 -0400
commitd672fef02738582bdeae6e77176e141eeb9169bc (patch)
tree645861bd0eb459b2ab191653fb90ff12bda74883 /arch/sh/kernel/cpu/clock.c
parentaf777ce42d3d51cdef353ce296d6f99dc503feef (diff)
sh: clkfwk: Handle NULL clkops for root clocks.
root clocks may simply be placeholders for rate and ancestry information, and have no real associated operations of their own. Account for this, so we are still able to use these sorts of clocks for rate propagation. 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.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/sh/kernel/cpu/clock.c b/arch/sh/kernel/cpu/clock.c
index 0eedf939264..2ced20f870d 100644
--- a/arch/sh/kernel/cpu/clock.c
+++ b/arch/sh/kernel/cpu/clock.c
@@ -103,7 +103,7 @@ void propagate_rate(struct clk *tclk)
103 struct clk *clkp; 103 struct clk *clkp;
104 104
105 list_for_each_entry(clkp, &tclk->children, sibling) { 105 list_for_each_entry(clkp, &tclk->children, sibling) {
106 if (clkp->ops->recalc) 106 if (clkp->ops && clkp->ops->recalc)
107 clkp->rate = clkp->ops->recalc(clkp); 107 clkp->rate = clkp->ops->recalc(clkp);
108 propagate_rate(clkp); 108 propagate_rate(clkp);
109 } 109 }
@@ -196,7 +196,7 @@ void recalculate_root_clocks(void)
196 struct clk *clkp; 196 struct clk *clkp;
197 197
198 list_for_each_entry(clkp, &root_clks, sibling) { 198 list_for_each_entry(clkp, &root_clks, sibling) {
199 if (clkp->ops->recalc) 199 if (clkp->ops && clkp->ops->recalc)
200 clkp->rate = clkp->ops->recalc(clkp); 200 clkp->rate = clkp->ops->recalc(clkp);
201 propagate_rate(clkp); 201 propagate_rate(clkp);
202 } 202 }
@@ -224,7 +224,7 @@ int clk_register(struct clk *clk)
224 list_add(&clk->sibling, &root_clks); 224 list_add(&clk->sibling, &root_clks);
225 225
226 list_add(&clk->node, &clock_list); 226 list_add(&clk->node, &clock_list);
227 if (clk->ops->init) 227 if (clk->ops && clk->ops->init)
228 clk->ops->init(clk); 228 clk->ops->init(clk);
229 mutex_unlock(&clock_list_sem); 229 mutex_unlock(&clock_list_sem);
230 230