From aa10a02bd569519fe56eb107ea63191f4c80805c Mon Sep 17 00:00:00 2001 From: Mike Turquette Date: Wed, 2 May 2012 16:23:43 -0700 Subject: [PATCH] --- yaml --- r: 308215 b: refs/heads/master c: 63f5c3b2b18dcaca0fc8983b52a3f5d4d70a0590 h: refs/heads/master i: 308213: eca52c0a4171daac4ffc6c0e15b96b99c767dd7c 308211: 876caf06e587cbc3738ba570f4fc2133201cb8db 308207: 66ce2653f3bcde2a0d67ed9dd64b21f4f9961dcd v: v3 --- [refs] | 2 +- trunk/drivers/clk/clk.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 11da19605150..2b489de40244 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7704addb60e274d4e98c69a02f7ebe3f77c6c3a4 +refs/heads/master: 63f5c3b2b18dcaca0fc8983b52a3f5d4d70a0590 diff --git a/trunk/drivers/clk/clk.c b/trunk/drivers/clk/clk.c index 8149764f8438..7ceca0e8645a 100644 --- a/trunk/drivers/clk/clk.c +++ b/trunk/drivers/clk/clk.c @@ -774,12 +774,18 @@ static struct clk *clk_calc_new_rates(struct clk *clk, unsigned long rate) if (IS_ERR_OR_NULL(clk)) return NULL; + /* save parent rate, if it exists */ + if (clk->parent) + best_parent_rate = clk->parent->rate; + /* never propagate up to the parent */ if (!(clk->flags & CLK_SET_RATE_PARENT)) { if (!clk->ops->round_rate) { clk->new_rate = clk->rate; return NULL; } + new_rate = clk->ops->round_rate(clk->hw, rate, &best_parent_rate); + goto out; } /* need clk->parent from here on out */ @@ -795,7 +801,6 @@ static struct clk *clk_calc_new_rates(struct clk *clk, unsigned long rate) goto out; } - best_parent_rate = clk->parent->rate; new_rate = clk->ops->round_rate(clk->hw, rate, &best_parent_rate); if (best_parent_rate != clk->parent->rate) {