Messages in this thread | | | Date | Mon, 2 Mar 2015 11:25:28 +0100 | From | Maxime Coquelin <> | Subject | Re: [STLinux Kernel] [PATCH 3/4] clk: Provide always-on clock support |
| |
On 03/02/2015 11:18 AM, Lee Jones wrote: > 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]". > So maybe introducing a new "CLK_DISABLE_NEVER" flag will be more explicit than hacking around "CLK_IGNORE_UNUSED" one?
BR, Maxime
| |