lkml.org 
[lkml]   [2024]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v8 4/7] interconnect: icc-clk: Add devm_icc_clk_register
    Date
    Wrap icc_clk_register to create devm_icc_clk_register to be
    able to release the resources properly.

    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
    ---
    v8: Added Reviewed-by: Dmitry Baryshkov
    v7: Simplify devm_icc_clk_register implementation as suggested in review
    v5: Introduced devm_icc_clk_register
    ---
    drivers/interconnect/icc-clk.c | 18 ++++++++++++++++++
    include/linux/interconnect-clk.h | 2 ++
    2 files changed, 20 insertions(+)

    diff --git a/drivers/interconnect/icc-clk.c b/drivers/interconnect/icc-clk.c
    index 2be193fd7d8f..f788db15cd76 100644
    --- a/drivers/interconnect/icc-clk.c
    +++ b/drivers/interconnect/icc-clk.c
    @@ -148,6 +148,24 @@ struct icc_provider *icc_clk_register(struct device *dev,
    }
    EXPORT_SYMBOL_GPL(icc_clk_register);

    +static void devm_icc_release(void *res)
    +{
    + icc_clk_unregister(res);
    +}
    +
    +int devm_icc_clk_register(struct device *dev, unsigned int first_id,
    + unsigned int num_clocks, const struct icc_clk_data *data)
    +{
    + struct icc_provider *prov;
    +
    + prov = icc_clk_register(dev, first_id, num_clocks, data);
    + if (IS_ERR(prov))
    + return PTR_ERR(prov);
    +
    + return devm_add_action_or_reset(dev, devm_icc_release, prov);
    +}
    +EXPORT_SYMBOL_GPL(devm_icc_clk_register);
    +
    /**
    * icc_clk_unregister() - unregister a previously registered clk interconnect provider
    * @provider: provider returned by icc_clk_register()
    diff --git a/include/linux/interconnect-clk.h b/include/linux/interconnect-clk.h
    index 170898faaacb..9bcee3e9c56c 100644
    --- a/include/linux/interconnect-clk.h
    +++ b/include/linux/interconnect-clk.h
    @@ -19,6 +19,8 @@ struct icc_provider *icc_clk_register(struct device *dev,
    unsigned int first_id,
    unsigned int num_clocks,
    const struct icc_clk_data *data);
    +int devm_icc_clk_register(struct device *dev, unsigned int first_id,
    + unsigned int num_clocks, const struct icc_clk_data *data);
    void icc_clk_unregister(struct icc_provider *provider);

    #endif
    --
    2.34.1

    \
     
     \ /
      Last update: 2024-04-17 12:58    [W:2.254 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site