diff options
-rw-r--r-- | drivers/clk/clk.c | 7 |
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 | } |