aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/clk/clk.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 647d056df88c..999777a66505 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -2570,14 +2570,17 @@ static int __clk_core_init(struct clk_core *core)
2570 */ 2570 */
2571 hlist_for_each_entry_safe(orphan, tmp2, &clk_orphan_list, child_node) { 2571 hlist_for_each_entry_safe(orphan, tmp2, &clk_orphan_list, child_node) {
2572 struct clk_core *parent = __clk_init_parent(orphan); 2572 struct clk_core *parent = __clk_init_parent(orphan);
2573 unsigned long flags;
2573 2574
2574 /* 2575 /*
2575 * we could call __clk_set_parent, but that would result in a 2576 * we could call __clk_set_parent, but that would result in a
2576 * redundant call to the .set_rate op, if it exists 2577 * redundant call to the .set_rate op, if it exists
2577 */ 2578 */
2578 if (parent) { 2579 if (parent) {
2579 __clk_set_parent_before(orphan, parent); 2580 /* update the clk tree topology */
2580 __clk_set_parent_after(orphan, parent, NULL); 2581 flags = clk_enable_lock();
2582 clk_reparent(orphan, parent);
2583 clk_enable_unlock(flags);
2581 __clk_recalc_accuracies(orphan); 2584 __clk_recalc_accuracies(orphan);
2582 __clk_recalc_rates(orphan, 0); 2585 __clk_recalc_rates(orphan, 0);
2583 } 2586 }