]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
sh: clkfwk: Handle NULL clkops for root clocks.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 13 May 2009 08:03:09 +0000 (17:03 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 13 May 2009 08:03:09 +0000 (17:03 +0900)
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>
arch/sh/kernel/cpu/clock.c

index 0eedf93926471a8a180b70d485ed9c3ffb2f7854..2ced20f870d1c191925da0a06431dc06845fb56c 100644 (file)
@@ -103,7 +103,7 @@ void propagate_rate(struct clk *tclk)
        struct clk *clkp;
 
        list_for_each_entry(clkp, &tclk->children, sibling) {
-               if (clkp->ops->recalc)
+               if (clkp->ops && clkp->ops->recalc)
                        clkp->rate = clkp->ops->recalc(clkp);
                propagate_rate(clkp);
        }
@@ -196,7 +196,7 @@ void recalculate_root_clocks(void)
        struct clk *clkp;
 
        list_for_each_entry(clkp, &root_clks, sibling) {
-               if (clkp->ops->recalc)
+               if (clkp->ops && clkp->ops->recalc)
                        clkp->rate = clkp->ops->recalc(clkp);
                propagate_rate(clkp);
        }
@@ -224,7 +224,7 @@ int clk_register(struct clk *clk)
                list_add(&clk->sibling, &root_clks);
 
        list_add(&clk->node, &clock_list);
-       if (clk->ops->init)
+       if (clk->ops && clk->ops->init)
                clk->ops->init(clk);
        mutex_unlock(&clock_list_sem);