Re: [PATCH 1/3] clk: Allow clocks to be marked as CRITICAL

From: Michael Turquette
Date: Wed Feb 10 2016 - 19:41:32 EST


Quoting Lee Jones (2016-01-18 06:28:49)
> Critical clocks are those which must not be gated, else undefined
> or catastrophic failure would occur. Here we have chosen to
> ensure the prepare/enable counts are correctly incremented, so as
> not to confuse users with enabled clocks with no visible users.
>
> Signed-off-by: Lee Jones <lee.jones@xxxxxxxxxx>
> ---
> drivers/clk/clk.c | 7 ++++++-
> include/linux/clk-provider.h | 1 +
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index f13c3f4..835cb85 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -2576,8 +2576,13 @@ struct clk *clk_register(struct device *dev, struct clk_hw *hw)
> }
>
> ret = __clk_init(dev, hw->clk);
> - if (!ret)
> + if (!ret) {
> + if (core->flags & CLK_IS_CRITICAL) {
> + clk_core_prepare(core);
> + clk_core_enable(core);
> + }
> return hw->clk;
> + }

I moved the above code into __clk_init where we do similar sort of clk
init-y type things. Modified patch below.

Best regards,
Mike