From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Liao Subject: Re: [PATCH v9 01/10] clk: fix initial state of critical clock's parents Date: Mon, 4 Jul 2016 11:51:48 +0800 Message-ID: <1467604308.26485.4.camel@mtksdaap41> References: <1466581229-2342-1-git-send-email-erin.lo@mediatek.com> <1466581229-2342-2-git-send-email-erin.lo@mediatek.com> <20160702012140.GB17071@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20160702012140.GB17071@codeaurora.org> Sender: linux-clk-owner@vger.kernel.org To: Stephen Boyd , Mike Turquette Cc: Erin Lo , Matthias Brugger , Rob Herring , John Crispin , Arnd Bergmann , Sascha Hauer , Daniel Kurtz , Philipp Zabel , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-clk@vger.kernel.org, srv_heupstream@mediatek.com List-Id: devicetree@vger.kernel.org On Fri, 2016-07-01 at 18:21 -0700, Stephen Boyd wrote: > (Resending to everyone) > > On 06/22, Erin Lo wrote: > > From: James Liao > > > > This patch fixed wrong state of parent clocks if they are registered > > after critical clocks. > > > > Signed-off-by: James Liao > > Signed-off-by: Erin Lo > > It would be nice if you included the information about the > problem from James' previous mail. This says what it does, but > doesn't explain what the problem is and how it is fixing it. > > > --- > > drivers/clk/clk.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c > > index d584004..e9f5f89 100644 > > --- a/drivers/clk/clk.c > > +++ b/drivers/clk/clk.c > > @@ -2388,8 +2388,15 @@ static int __clk_core_init(struct clk_core *core) > > hlist_for_each_entry_safe(orphan, tmp2, &clk_orphan_list, child_node) { > > struct clk_core *parent = __clk_init_parent(orphan); > > > > - if (parent) > > + if (parent) { > > clk_core_reparent(orphan, parent); > > + > > + if (orphan->prepare_count) > > + clk_core_prepare(parent); > > + > > + if (orphan->enable_count) > > + clk_core_enable(parent); > > + } > > } > > I'm pretty sure I pointed this problem out to Mike when the > critical clk patches were being pushed. I can't recall what the > plan was though to fix the problem. I'm pretty sure he said that > clk_core_reparent() would take care of it, but obviously it is > not doing that. Or perhaps it was that clk handoff should figure > out that the parents of a critical clk are also on and thus keep > them on. Hi Mike Is there any other patch to fix this issue? Or did I misuse critical clock flag? Best regards, James