aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/clk.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clk/clk.c')
-rw-r--r--drivers/clk/clk.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 037035a46b33..ea67ac81c6f9 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -2311,8 +2311,11 @@ static int clk_core_set_phase_nolock(struct clk_core *core, int degrees)
2311 2311
2312 trace_clk_set_phase(core, degrees); 2312 trace_clk_set_phase(core, degrees);
2313 2313
2314 if (core->ops->set_phase) 2314 if (core->ops->set_phase) {
2315 ret = core->ops->set_phase(core->hw, degrees); 2315 ret = core->ops->set_phase(core->hw, degrees);
2316 if (!ret)
2317 core->phase = degrees;
2318 }
2316 2319
2317 trace_clk_set_phase_complete(core, degrees); 2320 trace_clk_set_phase_complete(core, degrees);
2318 2321
@@ -2372,6 +2375,9 @@ static int clk_core_get_phase(struct clk_core *core)
2372 int ret; 2375 int ret;
2373 2376
2374 clk_prepare_lock(); 2377 clk_prepare_lock();
2378 /* Always try to update cached phase if possible */
2379 if (core->ops->get_phase)
2380 core->phase = core->ops->get_phase(core->hw);
2375 ret = core->phase; 2381 ret = core->phase;
2376 clk_prepare_unlock(); 2382 clk_prepare_unlock();
2377 2383