From 1098fcc4b99666e85dcb041b633cac0b240b3b84 Mon Sep 17 00:00:00 2001 From: Taniya Das Date: Wed, 10 May 2017 15:23:22 +0530 Subject: clk: Move vdd voting before set rate and parent There could be clocks where the clock operations of set_rate_and_parent would be defined to take care of setting rate and updating parent. Move the vdd voting logic to ensure the vdd levels are voted prior to updating rate and parent. Change-Id: I57f903f95f290627d676afd567a6e6d21decf4a3 Signed-off-by: Taniya Das --- drivers/clk/clk.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 4996f4f312f4..73d65813de8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -1751,6 +1751,15 @@ static int clk_change_rate(struct clk_core *core) else if (core->parent) best_parent_rate = core->parent->rate; + trace_clk_set_rate(core, core->new_rate); + + /* Enforce vdd requirements for new frequency. */ + if (core->prepare_count) { + rc = clk_vote_rate_vdd(core, core->new_rate); + if (rc) + goto out; + } + if (core->new_parent && core->new_parent != core->parent) { old_parent = __clk_set_parent_before(core, core->new_parent); trace_clk_set_parent(core, core->new_parent); @@ -1768,15 +1777,6 @@ static int clk_change_rate(struct clk_core *core) __clk_set_parent_after(core, core->new_parent, old_parent); } - trace_clk_set_rate(core, core->new_rate); - - /* Enforce vdd requirements for new frequency. */ - if (core->prepare_count) { - rc = clk_vote_rate_vdd(core, core->new_rate); - if (rc) - goto out; - } - if (!skip_set_rate && core->ops->set_rate) { rc = core->ops->set_rate(core->hw, core->new_rate, best_parent_rate); -- cgit v1.2.3