All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@codeaurora.org>
To: Dong Aisheng <aisheng.dong@nxp.com>
Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
	mturquette@baylibre.com, shawnguo@kernel.org,
	linux-arm-kernel@lists.infradead.org, anson.huang@nxp.com
Subject: Re: [PATCH V3 3/8] clk: core: support clocks which requires parents enable (part 1)
Date: Fri, 1 Jul 2016 17:44:26 -0700	[thread overview]
Message-ID: <20160702004426.GL27880@codeaurora.org> (raw)
In-Reply-To: <1467279078-2330-4-git-send-email-aisheng.dong@nxp.com>

On 06/30, Dong Aisheng wrote:
> On Freescale i.MX7D platform, all clocks operations, including
> enable/disable, rate change and re-parent, requires its parent
> clock enable. Current clock core can not support it well.
> This patch introduce a new flag CLK_OPS_PARENT_ENABLE to handle this
> special case in clock core that enable its parent clock firstly for
> each operation and disable it later after operation complete.
> 
> The patch part 1 fixes the possible disabling clocks while its parent
> is off during kernel booting phase in clk_disable_unused_subtree().
> 
> Before the completion of kernel booting, clock tree is still not built
> completely, there may be a case that the child clock is on but its
> parent is off which could be caused by either HW initial reset state
> or bootloader initialization.
> 
> Taking bootloader as an example, we may enable all clocks in HW by default.
> And during kernel booting time, the parent clock could be disabled in its
> driver probe due to calling clk_prepare_enable and clk_disable_unprepare.
> Because it's child clock is only enabled in HW while its SW usecount
> in clock tree is still 0, so clk_disable of parent clock will gate
> the parent clock in both HW and SW usecount ultimately. Then there will
> be a child clock is still on in HW but its parent is already off.
> 
> Later in clk_disable_unused(), this clock disable accessing while its
> parent off will cause system hang due to the limitation of HW which
> must require its parent on.
> 
> This patch simply enables the parent clock first before disabling
> if flag CLK_OPS_PARENT_ENABLE is set in clk_disable_unused_subtree().
> This is a simple solution and only affects booting time.
> 
> After kernel booting up the clock tree is already created, there will
> be no case that child is off but its parent is off.
> So no need do this checking for normal clk_disable() later.
> 
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> ---

Applied to clk-next

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3 3/8] clk: core: support clocks which requires parents enable (part 1)
Date: Fri, 1 Jul 2016 17:44:26 -0700	[thread overview]
Message-ID: <20160702004426.GL27880@codeaurora.org> (raw)
In-Reply-To: <1467279078-2330-4-git-send-email-aisheng.dong@nxp.com>

On 06/30, Dong Aisheng wrote:
> On Freescale i.MX7D platform, all clocks operations, including
> enable/disable, rate change and re-parent, requires its parent
> clock enable. Current clock core can not support it well.
> This patch introduce a new flag CLK_OPS_PARENT_ENABLE to handle this
> special case in clock core that enable its parent clock firstly for
> each operation and disable it later after operation complete.
> 
> The patch part 1 fixes the possible disabling clocks while its parent
> is off during kernel booting phase in clk_disable_unused_subtree().
> 
> Before the completion of kernel booting, clock tree is still not built
> completely, there may be a case that the child clock is on but its
> parent is off which could be caused by either HW initial reset state
> or bootloader initialization.
> 
> Taking bootloader as an example, we may enable all clocks in HW by default.
> And during kernel booting time, the parent clock could be disabled in its
> driver probe due to calling clk_prepare_enable and clk_disable_unprepare.
> Because it's child clock is only enabled in HW while its SW usecount
> in clock tree is still 0, so clk_disable of parent clock will gate
> the parent clock in both HW and SW usecount ultimately. Then there will
> be a child clock is still on in HW but its parent is already off.
> 
> Later in clk_disable_unused(), this clock disable accessing while its
> parent off will cause system hang due to the limitation of HW which
> must require its parent on.
> 
> This patch simply enables the parent clock first before disabling
> if flag CLK_OPS_PARENT_ENABLE is set in clk_disable_unused_subtree().
> This is a simple solution and only affects booting time.
> 
> After kernel booting up the clock tree is already created, there will
> be no case that child is off but its parent is off.
> So no need do this checking for normal clk_disable() later.
> 
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> ---

Applied to clk-next

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2016-07-02  0:44 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-30  9:31 [PATCH V3 0/8] clk: core: support clocks which requires parents enable Dong Aisheng
2016-06-30  9:31 ` Dong Aisheng
2016-06-30  9:31 ` [PATCH V3 1/8] clk: introduce clk_core_enable_lock and clk_core_disable_lock functions Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:44   ` Stephen Boyd
2016-07-02  0:44     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 2/8] clk: move clk_disable_unused after clk_core_disable_unprepare function Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:44   ` Stephen Boyd
2016-07-02  0:44     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 3/8] clk: core: support clocks which requires parents enable (part 1) Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:44   ` Stephen Boyd [this message]
2016-07-02  0:44     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 4/8] clk: core: support clocks which requires parents enable (part 2) Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:45   ` Stephen Boyd
2016-07-02  0:45     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 5/8] clk: imx: re-order and concentrate the same type of clk api Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:45   ` Stephen Boyd
2016-07-02  0:45     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 6/8] clk: imx: add clk api for supporting CLK_OPS_PARENT_ENABLE clocks Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:45   ` Stephen Boyd
2016-07-02  0:45     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 7/8] clk: imx7d: using api with flag CLK_OPS_PARENT_ENABLE Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:45   ` Stephen Boyd
2016-07-02  0:45     ` Stephen Boyd
2016-06-30  9:31 ` [PATCH V3 8/8] clk: imx7d: only enable minimum required clocks Dong Aisheng
2016-06-30  9:31   ` Dong Aisheng
2016-07-02  0:45   ` Stephen Boyd
2016-07-02  0:45     ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160702004426.GL27880@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --cc=aisheng.dong@nxp.com \
    --cc=anson.huang@nxp.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=shawnguo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.