Re: [PATCH v2 1/5] interconnect: Add devm_of_icc_get_by_index() as exported API for users

Georgi Djakov <[email protected]>
Newsgroups org.kernel.vger.phone-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm
Message-ID <[email protected]>
On 5/8/26 4:32 AM, Bjorn Andersson wrote:
> On Fri, May 01, 2026 at 11:18:29AM +0200, Luca Weiss wrote:
>> Users can use devm version of of_icc_get_by_index() to benefit from
>> automatic resource release.
>>
>> Reviewed-by: Konrad Dybcio <[email protected]>
>> Reviewed-by: Dmitry Baryshkov <[email protected]>
>> Signed-off-by: Luca Weiss <[email protected]>
> 
> Georgi, can I have an ack on this, or an immutable branch and a ping
> once it's available?

Hi Bjorn, please apply it.

Acked-by: Georgi Djakov <[email protected]>

Thanks,
Georgi
> 
> Thanks,
> Bjorn
> 
>> ---
>>   drivers/interconnect/core.c  | 20 ++++++++++++++++++++
>>   include/linux/interconnect.h |  6 ++++++
>>   2 files changed, 26 insertions(+)
>>
>> diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
>> index 8569b78a1851..bc2e416dbcb2 100644
>> --- a/drivers/interconnect/core.c
>> +++ b/drivers/interconnect/core.c
>> @@ -443,6 +443,26 @@ struct icc_path *devm_of_icc_get(struct device *dev, const char *name)
>>   }
>>   EXPORT_SYMBOL_GPL(devm_of_icc_get);
>>   
>> +struct icc_path *devm_of_icc_get_by_index(struct device *dev, int idx)
>> +{
>> +	struct icc_path **ptr, *path;
>> +
>> +	ptr = devres_alloc(devm_icc_release, sizeof(*ptr), GFP_KERNEL);
>> +	if (!ptr)
>> +		return ERR_PTR(-ENOMEM);
>> +
>> +	path = of_icc_get_by_index(dev, idx);
>> +	if (!IS_ERR(path)) {
>> +		*ptr = path;
>> +		devres_add(dev, ptr);
>> +	} else {
>> +		devres_free(ptr);
>> +	}
>> +
>> +	return path;
>> +}
>> +EXPORT_SYMBOL_GPL(devm_of_icc_get_by_index);
>> +
>>   /**
>>    * of_icc_get_by_index() - get a path handle from a DT node based on index
>>    * @dev: device pointer for the consumer device
>> diff --git a/include/linux/interconnect.h b/include/linux/interconnect.h
>> index 4b12821528a6..75a32ad0482e 100644
>> --- a/include/linux/interconnect.h
>> +++ b/include/linux/interconnect.h
>> @@ -47,6 +47,7 @@ struct icc_path *of_icc_get(struct device *dev, const char *name);
>>   struct icc_path *devm_of_icc_get(struct device *dev, const char *name);
>>   int devm_of_icc_bulk_get(struct device *dev, int num_paths, struct icc_bulk_data *paths);
>>   struct icc_path *of_icc_get_by_index(struct device *dev, int idx);
>> +struct icc_path *devm_of_icc_get_by_index(struct device *dev, int idx);
>>   void icc_put(struct icc_path *path);
>>   int icc_enable(struct icc_path *path);
>>   int icc_disable(struct icc_path *path);
>> @@ -79,6 +80,11 @@ static inline struct icc_path *of_icc_get_by_index(struct device *dev, int idx)
>>   	return NULL;
>>   }
>>   
>> +static inline struct icc_path *devm_of_icc_get_by_index(struct device *dev, int idx)
>> +{
>> +	return NULL;
>> +}
>> +
>>   static inline void icc_put(struct icc_path *path)
>>   {
>>   }
>>
>> -- 
>> 2.54.0
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.