[PATCH v3 2/4] clk: add support for clock reparent on set_rate
From: James Hogan <hidden>
Date: 2013-05-20 09:13:11
On 20/05/13 05:15, Stephen Boyd wrote:
Noticed another minor thing. I'm working on the set rate and parent at the same time op on top of this patch series. Hopefully have something soon. On 05/15, James Hogan wrote:quoted
@@ -1181,6 +1242,11 @@ static void clk_change_rate(struct clk *clk) old_rate = clk->rate; + /* set parent */ + if (clk->new_parent && clk->new_parent != clk->parent) + __clk_set_parent_no_recalc(clk, clk->new_parent, + clk->new_parent_index); +This check here for new_parent != clk->parent ...quoted
@@ -1451,6 +1501,27 @@ static int __clk_set_parent(struct clk *clk, struct clk *parent, u8 p_index) return 0; } +static int __clk_set_parent_no_recalc(struct clk *clk, struct clk *parent, + u8 p_index) +{ + int ret = 0; + + if (clk->parent == parent) + goto out;causes this to never be true, so we can probably drop it.quoted
+ + /* only re-parent if the clock is not in use */ + ret = __clk_set_parent(clk, parent, p_index); + if (ret) + goto out; + + /* reparent, but don't propagate rate recalculation downstream */ + clk_reparent(clk, parent); + clk_debug_reparent(clk, parent); + +out: + return ret; +}Also, we never check the return code so it's sort of useless.
Hi Stephen, Well spotted, and as you pointed it privately it can use __clk_set_parent() instead of __clk_set_parent_no_recalc() now :) Thanks James