[PATCH 3/4] clk: Provide always-on clock support

Lee Jones
2015-03-02T10:18:59Z

On Mon, 02 Mar 2015, Jassi Brar wrote:

> On Mon, Mar 2, 2015 at 2:06 PM, Lee Jones <lee.jones@linaro.org> wrote:
> > On Sat, 28 Feb 2015, Jassi Brar wrote:
> >
> >> On 28 February 2015 at 02:44, Lee Jones <lee.jones@linaro.org> wrote:
> >> > Lots of platforms contain clocks which if turned off would prove fatal.
> >> > The only way to recover from these catastrophic failures is to restart
> >> > the board(s). Now, when a clock is registered with the framework it is
> >> > compared against a list of provided always-on clock names which must be
> >> > kept ungated. If it matches, we enable the existing CLK_IGNORE_UNUSED
> >> > flag, which will prevent the common clk framework from attempting to
> >> > gate it during the clk_disable_unused() procedure.
> >> >
> >> If a clock is critical on a certain board, it could be got+enabled
> >> during early boot so there is always a user.
> >
> > I tried this. There was push-back from the DT maintainers.
> >
> > http://lists.infradead.org/pipermail/linux-arm-kernel/2015-February/324417.html
> >
> Thanks, I wasn't aware of the history.
>
> >> To be able to do that from DT, maybe add a new, say, CLK_ALWAYS_ON
> >> flag could be made to initialize the clock with one phantom user
> >> already. Or just reuse the CLK_IGNORE_UNUSED?
> >
> > How is that different to what this set is doing?
> >
> The phantom user - that's there but none can see it.
>
> How about?
>
> + of_property_for_each_string(np, "clock-always-on", prop, clkname) {
> + clk = __clk_lookup(clkname);
> + if (!clk)
> + continue;
> +
> + clk->core->enable_count = 1;
> + clk->core->prepare_count = 1;
> + }

This is only fractionally different from the current implementation.

I believe the current way it slightly nicer, as we don't have to fake
the user count. This solution is saying "one of the drivers is still
consuming this clock", instead, in the original implementation we're
saying "we know there are no consumers of this clock, but keep it on
anyway due to [insert reason here]".

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog