Lines Matching refs:clk

81 struct clk {  struct
275 const char *__clk_get_name(const struct clk *clk) in __clk_get_name() argument
277 return !clk ? NULL : clk->core->name; in __clk_get_name()
287 struct clk_hw *__clk_get_hw(struct clk *clk) in __clk_get_hw() argument
289 return !clk ? NULL : clk->core->hw; in __clk_get_hw()
373 unsigned int __clk_get_enable_count(struct clk *clk) in __clk_get_enable_count() argument
375 return !clk ? 0 : clk->core->enable_count; in __clk_get_enable_count()
413 unsigned long __clk_get_flags(struct clk *clk) in __clk_get_flags() argument
415 return !clk ? 0 : clk->core->flags; in __clk_get_flags()
435 bool __clk_is_enabled(struct clk *clk) in __clk_is_enabled() argument
437 if (!clk) in __clk_is_enabled()
440 return clk_core_is_enabled(clk->core); in __clk_is_enabled()
516 struct clk *__clk_lookup(const char *name) in __clk_lookup()
520 return !core ? NULL : core->hw->clk; in __clk_lookup()
527 struct clk *clk_user; in clk_core_get_boundaries()
603 void clk_unprepare(struct clk *clk) in clk_unprepare() argument
605 if (IS_ERR_OR_NULL(clk)) in clk_unprepare()
609 clk_core_unprepare(clk->core); in clk_unprepare()
658 int clk_prepare(struct clk *clk) in clk_prepare() argument
662 if (!clk) in clk_prepare()
666 ret = clk_core_prepare(clk->core); in clk_prepare()
708 void clk_disable(struct clk *clk) in clk_disable() argument
712 if (IS_ERR_OR_NULL(clk)) in clk_disable()
716 clk_core_disable(clk->core); in clk_disable()
769 int clk_enable(struct clk *clk) in clk_enable() argument
774 if (!clk) in clk_enable()
778 ret = clk_core_enable(clk->core); in clk_enable()
868 long clk_round_rate(struct clk *clk, unsigned long rate) in clk_round_rate() argument
873 if (!clk) in clk_round_rate()
878 clk_core_get_boundaries(clk->core, &req.min_rate, &req.max_rate); in clk_round_rate()
881 ret = clk_core_round_rate_nolock(clk->core, &req); in clk_round_rate()
916 if (cn->clk->core == core) { in __clk_notify()
917 cnd.clk = cn->clk; in __clk_notify()
978 long clk_get_accuracy(struct clk *clk) in clk_get_accuracy() argument
980 if (!clk) in clk_get_accuracy()
983 return clk_core_get_accuracy(clk->core); in clk_get_accuracy()
1056 unsigned long clk_get_rate(struct clk *clk) in clk_get_rate() argument
1058 if (!clk) in clk_get_rate()
1061 return clk_core_get_rate(clk->core); in clk_get_rate()
1072 sizeof(struct clk *), GFP_KERNEL); in clk_fetch_parent_index()
1554 int clk_set_rate(struct clk *clk, unsigned long rate) in clk_set_rate() argument
1558 if (!clk) in clk_set_rate()
1564 ret = clk_core_set_rate_nolock(clk->core, rate); in clk_set_rate()
1580 int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max) in clk_set_rate_range() argument
1584 if (!clk) in clk_set_rate_range()
1589 __func__, clk->core->name, clk->dev_id, clk->con_id, in clk_set_rate_range()
1596 if (min != clk->min_rate || max != clk->max_rate) { in clk_set_rate_range()
1597 clk->min_rate = min; in clk_set_rate_range()
1598 clk->max_rate = max; in clk_set_rate_range()
1599 ret = clk_core_set_rate_nolock(clk->core, clk->core->req_rate); in clk_set_rate_range()
1615 int clk_set_min_rate(struct clk *clk, unsigned long rate) in clk_set_min_rate() argument
1617 if (!clk) in clk_set_min_rate()
1620 return clk_set_rate_range(clk, rate, clk->max_rate); in clk_set_min_rate()
1631 int clk_set_max_rate(struct clk *clk, unsigned long rate) in clk_set_max_rate() argument
1633 if (!clk) in clk_set_max_rate()
1636 return clk_set_rate_range(clk, clk->min_rate, rate); in clk_set_max_rate()
1646 struct clk *clk_get_parent(struct clk *clk) in clk_get_parent() argument
1648 struct clk *parent; in clk_get_parent()
1650 if (!clk) in clk_get_parent()
1655 parent = !clk->core->parent ? NULL : clk->core->parent->hw->clk; in clk_get_parent()
1705 kcalloc(core->num_parents, sizeof(struct clk *), in __clk_init_parent()
1740 bool clk_has_parent(struct clk *clk, struct clk *parent) in clk_has_parent() argument
1746 if (!clk || !parent) in clk_has_parent()
1749 core = clk->core; in clk_has_parent()
1844 int clk_set_parent(struct clk *clk, struct clk *parent) in clk_set_parent() argument
1846 if (!clk) in clk_set_parent()
1849 return clk_core_set_parent(clk->core, parent ? parent->core : NULL); in clk_set_parent()
1873 int clk_set_phase(struct clk *clk, int degrees) in clk_set_phase() argument
1877 if (!clk) in clk_set_phase()
1887 trace_clk_set_phase(clk->core, degrees); in clk_set_phase()
1889 if (clk->core->ops->set_phase) in clk_set_phase()
1890 ret = clk->core->ops->set_phase(clk->core->hw, degrees); in clk_set_phase()
1892 trace_clk_set_phase_complete(clk->core, degrees); in clk_set_phase()
1895 clk->core->phase = degrees; in clk_set_phase()
1921 int clk_get_phase(struct clk *clk) in clk_get_phase() argument
1923 if (!clk) in clk_get_phase()
1926 return clk_core_get_phase(clk->core); in clk_get_phase()
1941 bool clk_is_match(const struct clk *p, const struct clk *q) in clk_is_match()
2295 static int __clk_init(struct device *dev, struct clk *clk_user) in __clk_init()
2360 core->parents = kcalloc(core->num_parents, sizeof(struct clk *), in __clk_init()
2479 struct clk *__clk_create_clk(struct clk_hw *hw, const char *dev_id, in __clk_create_clk()
2482 struct clk *clk; in __clk_create_clk() local
2486 return (struct clk *) hw; in __clk_create_clk()
2488 clk = kzalloc(sizeof(*clk), GFP_KERNEL); in __clk_create_clk()
2489 if (!clk) in __clk_create_clk()
2492 clk->core = hw->core; in __clk_create_clk()
2493 clk->dev_id = dev_id; in __clk_create_clk()
2494 clk->con_id = con_id; in __clk_create_clk()
2495 clk->max_rate = ULONG_MAX; in __clk_create_clk()
2498 hlist_add_head(&clk->clks_node, &hw->core->clks); in __clk_create_clk()
2501 return clk; in __clk_create_clk()
2504 void __clk_free_clk(struct clk *clk) in __clk_free_clk() argument
2507 hlist_del(&clk->clks_node); in __clk_free_clk()
2510 kfree(clk); in __clk_free_clk()
2524 struct clk *clk_register(struct device *dev, struct clk_hw *hw) in clk_register()
2572 hw->clk = __clk_create_clk(hw, NULL, NULL); in clk_register()
2573 if (IS_ERR(hw->clk)) { in clk_register()
2574 ret = PTR_ERR(hw->clk); in clk_register()
2578 ret = __clk_init(dev, hw->clk); in clk_register()
2580 return hw->clk; in clk_register()
2582 __clk_free_clk(hw->clk); in clk_register()
2583 hw->clk = NULL; in clk_register()
2654 void clk_unregister(struct clk *clk) in clk_unregister() argument
2658 if (!clk || WARN_ON_ONCE(IS_ERR(clk))) in clk_unregister()
2661 clk_debug_unregister(clk->core); in clk_unregister()
2665 if (clk->core->ops == &clk_nodrv_ops) { in clk_unregister()
2667 clk->core->name); in clk_unregister()
2675 clk->core->ops = &clk_nodrv_ops; in clk_unregister()
2678 if (!hlist_empty(&clk->core->children)) { in clk_unregister()
2683 hlist_for_each_entry_safe(child, t, &clk->core->children, in clk_unregister()
2688 hlist_del_init(&clk->core->child_node); in clk_unregister()
2690 if (clk->core->prepare_count) in clk_unregister()
2692 __func__, clk->core->name); in clk_unregister()
2693 kref_put(&clk->core->ref, __clk_release); in clk_unregister()
2701 clk_unregister(*(struct clk **)res); in devm_clk_release()
2713 struct clk *devm_clk_register(struct device *dev, struct clk_hw *hw) in devm_clk_register()
2715 struct clk *clk; in devm_clk_register() local
2716 struct clk **clkp; in devm_clk_register()
2722 clk = clk_register(dev, hw); in devm_clk_register()
2723 if (!IS_ERR(clk)) { in devm_clk_register()
2724 *clkp = clk; in devm_clk_register()
2730 return clk; in devm_clk_register()
2736 struct clk *c = res; in devm_clk_match()
2750 void devm_clk_unregister(struct device *dev, struct clk *clk) in devm_clk_unregister() argument
2752 WARN_ON(devres_release(dev, devm_clk_release, devm_clk_match, clk)); in devm_clk_unregister()
2759 int __clk_get(struct clk *clk) in __clk_get() argument
2761 struct clk_core *core = !clk ? NULL : clk->core; in __clk_get()
2772 void __clk_put(struct clk *clk) in __clk_put() argument
2776 if (!clk || WARN_ON_ONCE(IS_ERR(clk))) in __clk_put()
2781 hlist_del(&clk->clks_node); in __clk_put()
2782 if (clk->min_rate > clk->core->req_rate || in __clk_put()
2783 clk->max_rate < clk->core->req_rate) in __clk_put()
2784 clk_core_set_rate_nolock(clk->core, clk->core->req_rate); in __clk_put()
2786 owner = clk->core->owner; in __clk_put()
2787 kref_put(&clk->core->ref, __clk_release); in __clk_put()
2793 kfree(clk); in __clk_put()
2819 int clk_notifier_register(struct clk *clk, struct notifier_block *nb) in clk_notifier_register() argument
2824 if (!clk || !nb) in clk_notifier_register()
2831 if (cn->clk == clk) in clk_notifier_register()
2835 if (cn->clk != clk) { in clk_notifier_register()
2840 cn->clk = clk; in clk_notifier_register()
2848 clk->core->notifier_count++; in clk_notifier_register()
2868 int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb) in clk_notifier_unregister() argument
2873 if (!clk || !nb) in clk_notifier_unregister()
2879 if (cn->clk == clk) in clk_notifier_unregister()
2882 if (cn->clk == clk) { in clk_notifier_unregister()
2885 clk->core->notifier_count--; in clk_notifier_unregister()
2917 struct clk *(*get)(struct of_phandle_args *clkspec, void *data);
2927 struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec, in of_clk_src_simple_get()
2934 struct clk *of_clk_src_onecell_get(struct of_phandle_args *clkspec, void *data) in of_clk_src_onecell_get()
2955 struct clk *(*clk_src_get)(struct of_phandle_args *clkspec, in of_clk_add_provider()
3004 struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec, in __of_clk_get_from_provider()
3008 struct clk *clk = ERR_PTR(-EPROBE_DEFER); in __of_clk_get_from_provider() local
3017 clk = provider->get(clkspec, provider->data); in __of_clk_get_from_provider()
3018 if (!IS_ERR(clk)) { in __of_clk_get_from_provider()
3019 clk = __clk_create_clk(__clk_get_hw(clk), dev_id, in __of_clk_get_from_provider()
3022 if (!IS_ERR(clk) && !__clk_get(clk)) { in __of_clk_get_from_provider()
3023 __clk_free_clk(clk); in __of_clk_get_from_provider()
3024 clk = ERR_PTR(-ENOENT); in __of_clk_get_from_provider()
3032 return clk; in __of_clk_get_from_provider()
3043 struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec) in of_clk_get_from_provider()
3063 struct clk *clk; in of_clk_get_parent_name() local
3096 clk = of_clk_get_from_provider(&clkspec); in of_clk_get_parent_name()
3097 if (IS_ERR(clk)) { in of_clk_get_parent_name()
3103 clk_name = __clk_get_name(clk); in of_clk_get_parent_name()
3104 clk_put(clk); in of_clk_get_parent_name()
3151 struct clk *clk = of_clk_get(np, i); in parent_ready() local
3154 if (!IS_ERR(clk)) { in parent_ready()
3155 clk_put(clk); in parent_ready()
3161 if (PTR_ERR(clk) == -EPROBE_DEFER) in parent_ready()