From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753613AbbCBK0M (ORCPT ); Mon, 2 Mar 2015 05:26:12 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:49248 "EHLO mx08-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751266AbbCBK0J (ORCPT ); Mon, 2 Mar 2015 05:26:09 -0500 Message-ID: <54F43A98.509@st.com> Date: Mon, 2 Mar 2015 11:25:28 +0100 From: Maxime Coquelin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Lee Jones , Jassi Brar CC: Devicetree List , Mike Turquette , , Stephen Boyd , lkml , Jassi Brar , "linux-arm-kernel@lists.infradead.org" Subject: Re: [STLinux Kernel] [PATCH 3/4] clk: Provide always-on clock support References: <1425071674-16995-1-git-send-email-lee.jones@linaro.org> <1425071674-16995-4-git-send-email-lee.jones@linaro.org> <20150302083652.GE31325@x1> <20150302101859.GB32347@x1> In-Reply-To: <20150302101859.GB32347@x1> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.201.23.80] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.13.68,1.0.33,0.0.0000 definitions=2015-03-02_01:2015-03-02,2015-03-01,1970-01-01 signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 wrote: >>> On Sat, 28 Feb 2015, Jassi Brar wrote: >>> >>>> On 28 February 2015 at 02:44, Lee Jones 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