Re: [PATCH v4 1/2] clk: Provide managed helper to get and enable bulk clocks

From: Marek Szyprowski
Date: Mon Feb 05 2024 - 04:19:31 EST


On 02.02.2024 12:59, Shradha Todi wrote:
>> -----Original Message-----
>> From: Manivannan Sadhasivam<manivannan.sadhasivam@xxxxxxxxxx>
>> Sent: 29 January 2024 12:25
>> To: Shradha Todi<shradha.t@xxxxxxxxxxx>
>> Subject: Re: [PATCH v4 1/2] clk: Provide managed helper to get and enable bulk
>> clocks
>>
>> On Wed, Jan 24, 2024 at 04:08:37PM +0530, Shradha Todi wrote:
>>> Provide a managed devm_clk_bulk* wrapper to get and enable all bulk
>>> clocks in order to simplify drivers that keeps all clocks enabled for
>>> the time of driver operation.
>>>
>>> Suggested-by: Marek Szyprowski<m.szyprowski@xxxxxxxxxxx>
>>> Signed-off-by: Shradha Todi<shradha.t@xxxxxxxxxxx>
>>> ---
>>> drivers/clk/clk-devres.c | 40
>> ++++++++++++++++++++++++++++++++++++++++
>>> include/linux/clk.h | 24 ++++++++++++++++++++++++
>>> 2 files changed, 64 insertions(+)
>>>
>>> diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c index
>>> 4fb4fd4b06bd..cbbd2cc339c3 100644
>>> --- a/drivers/clk/clk-devres.c
>>> +++ b/drivers/clk/clk-devres.c
>>> @@ -182,6 +182,46 @@ int __must_check devm_clk_bulk_get_all(struct
>>> device *dev, } EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all);
>>>
>>> +static void devm_clk_bulk_release_all_enable(struct device *dev, void
>>> +*res) {
>>> + struct clk_bulk_devres *devres = res;
>>> +
>>> + clk_bulk_disable_unprepare(devres->num_clks, devres->clks);
>>> + clk_bulk_put_all(devres->num_clks, devres->clks); }
>>> +
>>> +int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
>>> + struct clk_bulk_data **clks) {
>>> + struct clk_bulk_devres *devres;
>>> + int ret;
>>> +
>>> + devres = devres_alloc(devm_clk_bulk_release_all_enable,
>>> + sizeof(*devres), GFP_KERNEL);
>>> + if (!devres)
>>> + return -ENOMEM;
>>> +
>>> + ret = clk_bulk_get_all(dev, &devres->clks);
>>> + if (ret > 0) {
>>> + *clks = devres->clks;
>>> + devres->num_clks = ret;
>>> + } else {
>>> + devres_free(devres);
>>> + return ret;
>>> + }
>> How about:
>>
>> ret = clk_bulk_get_all(dev, &devres->clks);
>> if (ret <= 0) {
>> devres_free(devres);
>> return ret;
>> }
>>
>> *clks = devres->clks;
>> devres->num_clks = ret;
>>
>> Even though this patch follows the pattern used by the rest of the APIs in the
>> driver, IMO above makes it more readable.
>>
> Since I have usually seen that maintainers suggest to maintain the coding style of the file, I followed the same.
> If you have a stronger reason to change this, please let me know
> Marek, Michael, Stephen please let us know what do you think about this?

I suggest to keep the same style as is used in the modified file (if it
doesn't conflict with the rules enforced by checkpatch and kernel's
coding style).

Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland