[PATCH v2 2/5] clk: Add clk_hw_get_clk() helper API to be used by clk providers
Stephen Boyd
sboyd at codeaurora.org
Thu Jul 27 15:47:13 PDT 2017
On 07/20, Rajendra Nayak wrote:
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index fc58c52..c9bbfb3 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -186,6 +186,45 @@ const char *clk_hw_get_name(const struct clk_hw *hw)
> }
> EXPORT_SYMBOL_GPL(clk_hw_get_name);
>
> +struct clk *clk_hw_get_clk(struct clk_hw *hw, const char *dev_id,
> + const char *con_id)
> +{
> + return __clk_create_clk(hw, dev_id, con_id);
> +}
> +EXPORT_SYMBOL_GPL(clk_hw_get_clk);
> +
> +void clk_hw_put_clk(struct clk *clk)
> +{
> + __clk_free_clk(clk);
> +}
> +EXPORT_SYMBOL_GPL(clk_hw_put_clk);
Isn't this just clk_put()? Not sure why we need this API.
> +
> +static void devm_clk_hw_put(struct device *dev, void *res)
> +{
> + clk_hw_put_clk(*(struct clk **)res);
> +}
Same comment.
> +
> +struct clk *devm_clk_hw_get_clk(struct device *dev, struct clk_hw *hw,
> + const char *con_id)
> +{
> + struct clk **ptr, *clk;
> +
> + ptr = devres_alloc(devm_clk_hw_put, sizeof(*ptr), GFP_KERNEL);
> + if (!ptr)
> + return ERR_PTR(-ENOMEM);
> +
> + clk = clk_hw_get_clk(hw, dev_name(dev), con_id);
> + if (!IS_ERR(clk)) {
> + *ptr = clk;
> + devres_add(dev, ptr);
> + } else {
> + devres_free(ptr);
> + }
> +
> + return clk;
> +}
> +EXPORT_SYMBOL_GPL(devm_clk_hw_get_clk);
Hm.. ok. Wasn't expecting us to need this API, but I guess it is
needed.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
More information about the linux-arm-kernel
mailing list