interconnect: icc-clk: Add devm_icc_clk_register

Wrap icc_clk_register to create devm_icc_clk_register to be
able to release the resources properly.

Acked-by: Georgi Djakov <djakov@kernel.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
Link: https://lore.kernel.org/r/20240430064214.2030013-4-quic_varada@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
This commit is contained in:
Varadarajan Narayanan 2024-04-30 12:12:11 +05:30 committed by Bjorn Andersson
parent f45b94ffc5
commit d315311361
2 changed files with 20 additions and 0 deletions

View File

@ -148,6 +148,24 @@ err:
}
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()

View File

@ -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