Lines Matching refs:parent
68 struct clk_core *parent; member
340 if ((core->flags & CLK_OPS_PARENT_ENABLE) && core->parent) in clk_core_is_enabled()
341 if (!clk_core_is_enabled(core->parent)) { in clk_core_is_enabled()
382 return hw->core->parent ? hw->core->parent->hw : NULL; in clk_hw_get_parent()
518 struct clk_core *parent; in clk_core_fill_parent_index() local
521 parent = entry->hw->core; in clk_core_fill_parent_index()
523 parent = clk_core_get(core, index); in clk_core_fill_parent_index()
524 if (PTR_ERR(parent) == -ENOENT && entry->name) in clk_core_fill_parent_index()
525 parent = clk_core_lookup(entry->name); in clk_core_fill_parent_index()
533 if (!parent) in clk_core_fill_parent_index()
534 parent = ERR_PTR(-EPROBE_DEFER); in clk_core_fill_parent_index()
537 if (!IS_ERR(parent)) in clk_core_fill_parent_index()
538 entry->core = parent; in clk_core_fill_parent_index()
556 struct clk_core *parent; in clk_hw_get_parent_by_index() local
558 parent = clk_core_get_parent_by_index(hw->core, index); in clk_hw_get_parent_by_index()
560 return !parent ? NULL : parent->hw; in clk_hw_get_parent_by_index()
574 if (!core->num_parents || core->parent) in clk_core_get_rate_nolock()
648 static bool clk_core_has_parent(struct clk_core *core, const struct clk_core *parent) in clk_core_has_parent() argument
654 if (core->parent == parent) in clk_core_has_parent()
662 if (tmp == parent) in clk_core_has_parent()
672 struct clk_core *parent, in clk_core_forward_rate_req() argument
676 if (WARN_ON(!clk_core_has_parent(core, parent))) in clk_core_forward_rate_req()
679 clk_core_init_rate_req(parent, req, parent_rate); in clk_core_forward_rate_req()
693 struct clk_core *parent = core->parent; in clk_core_determine_rate_no_reparent() local
700 if (!parent) { in clk_core_determine_rate_no_reparent()
705 clk_core_forward_rate_req(core, req, parent, &parent_req, in clk_core_determine_rate_no_reparent()
710 ret = clk_core_round_rate_nolock(parent, &parent_req); in clk_core_determine_rate_no_reparent()
717 } else if (parent) { in clk_core_determine_rate_no_reparent()
718 best = clk_core_get_rate_nolock(parent); in clk_core_determine_rate_no_reparent()
733 struct clk_core *core = hw->core, *parent, *best_parent = NULL; in clk_mux_determine_rate_flags() local
746 parent = clk_core_get_parent_by_index(core, i); in clk_mux_determine_rate_flags()
747 if (!parent) in clk_mux_determine_rate_flags()
753 clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate); in clk_mux_determine_rate_flags()
757 ret = clk_core_round_rate_nolock(parent, &parent_req); in clk_mux_determine_rate_flags()
765 parent_rate = clk_core_get_rate_nolock(parent); in clk_mux_determine_rate_flags()
770 best_parent = parent; in clk_mux_determine_rate_flags()
913 clk_core_rate_unprotect(core->parent); in clk_core_rate_unprotect()
982 clk_core_rate_protect(core->parent); in clk_core_rate_protect()
1062 clk_core_unprepare(core->parent); in clk_core_unprepare()
1107 ret = clk_core_prepare(core->parent); in clk_core_prepare()
1136 clk_core_unprepare(core->parent); in clk_core_prepare()
1198 clk_core_disable(core->parent); in clk_core_disable()
1245 ret = clk_core_enable(core->parent); in clk_core_enable()
1258 clk_core_disable(core->parent); in clk_core_enable()
1474 clk_core_prepare_enable(core->parent); in clk_disable_unused_subtree()
1501 clk_core_disable_unprepare(core->parent); in clk_disable_unused_subtree()
1605 struct clk_core *parent; in clk_core_init_rate_req() local
1620 parent = core->parent; in clk_core_init_rate_req()
1621 if (parent) { in clk_core_init_rate_req()
1622 req->best_parent_hw = parent->hw; in clk_core_init_rate_req()
1623 req->best_parent_rate = parent->rate; in clk_core_init_rate_req()
1663 const struct clk_hw *parent, in clk_hw_forward_rate_request() argument
1667 if (WARN_ON(!hw || !old_req || !parent || !req)) in clk_hw_forward_rate_request()
1671 parent->core, req, in clk_hw_forward_rate_request()
1699 clk_core_forward_rate_req(core, req, core->parent, &parent_req, req->rate); in clk_core_round_rate_nolock()
1703 ret = clk_core_round_rate_nolock(core->parent, &parent_req); in clk_core_round_rate_nolock()
1866 if (core->parent) in __clk_recalc_accuracies()
1867 parent_accuracy = core->parent->accuracy; in __clk_recalc_accuracies()
1947 if (core->parent) in __clk_recalc_rates()
1948 parent_rate = core->parent->rate; in __clk_recalc_rates()
1998 struct clk_core *parent) in clk_fetch_parent_index() argument
2002 if (!parent) in clk_fetch_parent_index()
2007 if (core->parents[i].core == parent) in clk_fetch_parent_index()
2016 if (core->parents[i].hw == parent->hw) in clk_fetch_parent_index()
2024 if (parent == clk_core_get(core, i)) in clk_fetch_parent_index()
2029 !strcmp(parent->name, core->parents[i].name)) in clk_fetch_parent_index()
2036 core->parents[i].core = parent; in clk_fetch_parent_index()
2049 struct clk_hw *parent = clk_hw_get_parent(hw); in clk_hw_get_parent_index() local
2051 if (WARN_ON(parent == NULL)) in clk_hw_get_parent_index()
2054 return clk_fetch_parent_index(hw->core, parent->core); in clk_hw_get_parent_index()
2094 core->parent = new_parent; in clk_reparent()
2098 struct clk_core *parent) in __clk_set_parent_before() argument
2101 struct clk_core *old_parent = core->parent; in __clk_set_parent_before()
2126 clk_core_prepare_enable(parent); in __clk_set_parent_before()
2131 clk_core_prepare_enable(parent); in __clk_set_parent_before()
2137 clk_reparent(core, parent); in __clk_set_parent_before()
2144 struct clk_core *parent, in __clk_set_parent_after() argument
2158 clk_core_disable_unprepare(parent); in __clk_set_parent_after()
2163 static int __clk_set_parent(struct clk_core *core, struct clk_core *parent, in __clk_set_parent() argument
2170 old_parent = __clk_set_parent_before(core, parent); in __clk_set_parent()
2172 trace_clk_set_parent(core, parent); in __clk_set_parent()
2175 if (parent && core->ops->set_parent) in __clk_set_parent()
2178 trace_clk_set_parent_complete(core, parent); in __clk_set_parent()
2185 __clk_set_parent_after(core, old_parent, parent); in __clk_set_parent()
2190 __clk_set_parent_after(core, parent, old_parent); in __clk_set_parent()
2250 if (new_parent && new_parent != core->parent) in clk_calc_subtree()
2267 struct clk_core *old_parent, *parent; in clk_calc_new_rates() local
2280 parent = old_parent = core->parent; in clk_calc_new_rates()
2281 if (parent) in clk_calc_new_rates()
2282 best_parent_rate = parent->rate; in clk_calc_new_rates()
2302 parent = req.best_parent_hw ? req.best_parent_hw->core : NULL; in clk_calc_new_rates()
2306 } else if (!parent || !(core->flags & CLK_SET_RATE_PARENT)) { in clk_calc_new_rates()
2312 top = clk_calc_new_rates(parent, rate); in clk_calc_new_rates()
2313 new_rate = parent->new_rate; in clk_calc_new_rates()
2318 if (parent != old_parent && in clk_calc_new_rates()
2326 if (parent && core->num_parents > 1) { in clk_calc_new_rates()
2327 p_index = clk_fetch_parent_index(core, parent); in clk_calc_new_rates()
2330 __func__, parent->name, core->name); in clk_calc_new_rates()
2335 if ((core->flags & CLK_SET_RATE_PARENT) && parent && in clk_calc_new_rates()
2336 best_parent_rate != parent->rate) in clk_calc_new_rates()
2337 top = clk_calc_new_rates(parent, best_parent_rate); in clk_calc_new_rates()
2340 clk_calc_subtree(core, new_rate, parent, p_index); in clk_calc_new_rates()
2396 struct clk_core *parent = NULL; in clk_change_rate() local
2401 parent = core->new_parent; in clk_change_rate()
2403 } else if (core->parent) { in clk_change_rate()
2404 parent = core->parent; in clk_change_rate()
2405 best_parent_rate = core->parent->rate; in clk_change_rate()
2416 if (core->new_parent && core->new_parent != core->parent) { in clk_change_rate()
2434 clk_core_prepare_enable(parent); in clk_change_rate()
2451 clk_core_disable_unprepare(parent); in clk_change_rate()
2788 struct clk *parent; in clk_get_parent() local
2795 parent = !clk->core->parent ? NULL : clk->core->parent->hw->clk; in clk_get_parent()
2798 return parent; in clk_get_parent()
2838 bool clk_has_parent(const struct clk *clk, const struct clk *parent) in clk_has_parent() argument
2841 if (!clk || !parent) in clk_has_parent()
2844 return clk_core_has_parent(clk->core, parent->core); in clk_has_parent()
2849 struct clk_core *parent) in clk_core_set_parent_nolock() argument
2860 if (core->parent == parent) in clk_core_set_parent_nolock()
2875 if (parent) { in clk_core_set_parent_nolock()
2876 p_index = clk_fetch_parent_index(core, parent); in clk_core_set_parent_nolock()
2879 __func__, parent->name, core->name); in clk_core_set_parent_nolock()
2882 p_rate = parent->rate; in clk_core_set_parent_nolock()
2897 ret = __clk_set_parent(core, parent, p_index); in clk_core_set_parent_nolock()
2913 int clk_hw_set_parent(struct clk_hw *hw, struct clk_hw *parent) in clk_hw_set_parent() argument
2915 return clk_core_set_parent_nolock(hw->core, parent->core); in clk_hw_set_parent()
2936 int clk_set_parent(struct clk *clk, struct clk *parent) in clk_set_parent() argument
2949 parent ? parent->core : NULL); in clk_set_parent()
3109 if (core->parent && in clk_core_update_duty_cycle_parent_nolock()
3111 ret = clk_core_update_duty_cycle_nolock(core->parent); in clk_core_update_duty_cycle_parent_nolock()
3112 memcpy(&core->duty, &core->parent->duty, sizeof(core->duty)); in clk_core_update_duty_cycle_parent_nolock()
3152 if (core->parent && in clk_core_set_duty_cycle_parent_nolock()
3154 ret = clk_core_set_duty_cycle_nolock(core->parent, duty); in clk_core_set_duty_cycle_parent_nolock()
3155 memcpy(&core->duty, &core->parent->duty, sizeof(core->duty)); in clk_core_set_duty_cycle_parent_nolock()
3533 struct clk_core *parent; in possible_parent_show() local
3548 parent = clk_core_get_parent_by_index(core, i); in possible_parent_show()
3549 if (parent) { in possible_parent_show()
3550 seq_puts(s, parent->name); in possible_parent_show()
3585 if (core->parent) in current_parent_show()
3586 seq_printf(s, "%s\n", core->parent->name); in current_parent_show()
3598 struct clk_core *parent; in current_parent_write() local
3606 parent = clk_core_get_parent_by_index(core, idx); in current_parent_write()
3607 if (!parent) in current_parent_write()
3611 err = clk_core_set_parent_nolock(core, parent); in current_parent_write()
3814 struct clk_core *parent = __clk_init_parent(orphan); in clk_core_reparent_orphans_nolock() local
3822 if (parent) { in clk_core_reparent_orphans_nolock()
3824 __clk_set_parent_before(orphan, parent); in clk_core_reparent_orphans_nolock()
3825 __clk_set_parent_after(orphan, parent, NULL); in clk_core_reparent_orphans_nolock()
3855 struct clk_core *parent; in __clk_core_init() local
3940 parent = core->parent = __clk_init_parent(core); in __clk_core_init()
3952 if (parent) { in __clk_core_init()
3953 hlist_add_head(&core->child_node, &parent->children); in __clk_core_init()
3954 core->orphan = parent->orphan; in __clk_core_init()
3972 clk_core_get_accuracy_no_lock(parent)); in __clk_core_init()
3973 else if (parent) in __clk_core_init()
3974 core->accuracy = parent->accuracy; in __clk_core_init()
4004 clk_core_get_rate_nolock(parent)); in __clk_core_init()
4005 else if (parent) in __clk_core_init()
4006 rate = parent->rate; in __clk_core_init()
4193 struct clk_parent_map *parents, *parent; in clk_core_populate_parent_map() local
4208 for (i = 0, parent = parents; i < num_parents; i++, parent++) { in clk_core_populate_parent_map()
4209 parent->index = -1; in clk_core_populate_parent_map()
4215 ret = clk_cpy_name(&parent->name, parent_names[i], in clk_core_populate_parent_map()
4218 parent->hw = parent_data[i].hw; in clk_core_populate_parent_map()
4219 parent->index = parent_data[i].index; in clk_core_populate_parent_map()
4220 ret = clk_cpy_name(&parent->fw_name, in clk_core_populate_parent_map()
4223 ret = clk_cpy_name(&parent->name, in clk_core_populate_parent_map()
4227 parent->hw = parent_hws[i]; in clk_core_populate_parent_map()
4378 np = dev_of_node(dev->parent); in dev_or_parent_of_node()
5047 parent_np = dev->parent ? dev->parent->of_node : NULL; in get_clk_provider_node()
5186 np = np->parent; in of_parse_clkspec()
5495 struct clock_provider *parent; in of_clk_init() local
5500 parent = kzalloc(sizeof(*parent), GFP_KERNEL); in of_clk_init()
5501 if (!parent) { in of_clk_init()
5512 parent->clk_init_cb = match->data; in of_clk_init()
5513 parent->np = of_node_get(np); in of_clk_init()
5514 list_add_tail(&parent->node, &clk_provider_list); in of_clk_init()