[PATCH 2/3] soc: rockchip: power-domain: Use of_clk_get_parent_count() instead of open coding

Michael Turquette mturquette at baylibre.com
Sun Feb 18 11:09:25 PST 2018


Heiko, Geert,

On Sat, Feb 10, 2018 at 8:35 AM, Heiko Stuebner <heiko at sntech.de> wrote:
> Hi Geert,
>
> Am Freitag, 19. Januar 2018, 16:18:20 CET schrieb Geert Uytterhoeven:
>> As of_clk_get_parent_count() returns zero on failure, while
>> of_count_phandle_with_args() might return a negative error code, this
>> also fixes the issue of possibly using a negative number in the
>> allocation below.
>>
>> Signed-off-by: Geert Uytterhoeven <geert+renesas at glider.be>
>> ---
>>  drivers/soc/rockchip/pm_domains.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c
>> index 5c342167b9db7a16..9936038d38771784 100644
>> --- a/drivers/soc/rockchip/pm_domains.c
>> +++ b/drivers/soc/rockchip/pm_domains.c
>> @@ -16,6 +16,7 @@
>>  #include <linux/of_address.h>
>>  #include <linux/of_platform.h>
>>  #include <linux/clk.h>
>> +#include <linux/clk-provider.h>
>
> not wanting to be to nitpicky, but clk-provider.h seems that it should be
> used from drivers exposing clocks to the system, not from clock users.
>
> I just remember that in the past clk maintainers tried to keep their
> layering intact, so I've included them for clarification.
>
> Mike, Stephen: the power-domain driver of Rockchip socs needs
> to toggle all clocks of domain peripherals when turning a domain
> on or off, so has a variable list of clocks in the clocks property in dt.
> Hence the of_count_... call which could be replaced with
> of_clk_get_parent_count to not open-code this.

Moving of_clk_get_parent_count to clk.h seems reasonable to me. It's
more of an of-specific helper than a provider-specific helper.

Anyone up to submit a patch so that this one doesn't need to include
clk-provider.h?

Regards,
Mike

>
>
> Heiko
>
>>  #include <linux/regmap.h>
>>  #include <linux/mfd/syscon.h>
>>  #include <dt-bindings/power/rk3288-power.h>
>> @@ -391,7 +392,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
>>               return -EINVAL;
>>       }
>>
>> -     clk_cnt = of_count_phandle_with_args(node, "clocks", "#clock-cells");
>> +     clk_cnt = of_clk_get_parent_count(node);
>>       pd = devm_kzalloc(pmu->dev,
>>                         sizeof(*pd) + clk_cnt * sizeof(pd->clks[0]),
>>                         GFP_KERNEL);
>>
>
>



-- 
Michael Turquette
CEO
BayLibre - At the Heart of Embedded Linux
http://baylibre.com/



More information about the linux-arm-kernel mailing list