From: Joachim Eastwood <manabian@gmail.com>
To: mturquette@baylibre.com, sboyd@codeaurora.org
Cc: Joachim Eastwood <manabian@gmail.com>, linux-clk@vger.kernel.org
Subject: [PATCH v2 1/2] clk: lpc18xx-ccu: fix potential system hang when disabling unused clocks
Date: Tue, 25 Aug 2015 20:34:02 +0200 [thread overview]
Message-ID: <1440527643-2960-2-git-send-email-manabian@gmail.com> (raw)
In-Reply-To: <1440527643-2960-1-git-send-email-manabian@gmail.com>
CCU branch clock register must only be accessed while the base
(parent) clock is running. Access with a disabled base clock
will cause the system to hang. Fix this issue by adding code
that check if the parent clock is running in the is_enabled
clk_ops callback.
This hang would occur when disabling unused clocks after AMBA
runtime pm had already disabled some of the clocks.
Signed-off-by: Joachim Eastwood <manabian@gmail.com>
---
No changes from v1.
drivers/clk/nxp/clk-lpc18xx-ccu.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/clk/nxp/clk-lpc18xx-ccu.c b/drivers/clk/nxp/clk-lpc18xx-ccu.c
index eeaee97da110..1845476e635e 100644
--- a/drivers/clk/nxp/clk-lpc18xx-ccu.c
+++ b/drivers/clk/nxp/clk-lpc18xx-ccu.c
@@ -180,6 +180,20 @@ static void lpc18xx_ccu_gate_disable(struct clk_hw *hw)
static int lpc18xx_ccu_gate_is_enabled(struct clk_hw *hw)
{
struct clk_gate *gate = to_clk_gate(hw);
+ struct clk *parent;
+
+ /*
+ * The branch clock registers are only accessible
+ * if the base (parent) clock is enabled. Register
+ * access with a disabled base clock will hang the
+ * system.
+ */
+ parent = clk_get_parent(hw->clk);
+ if (IS_ERR(parent))
+ return 0;
+
+ if (!__clk_is_enabled(parent))
+ return 0;
return clk_readl(gate->reg) & LPC18XX_CCU_RUN;
}
--
1.8.0
next prev parent reply other threads:[~2015-08-25 18:34 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-25 18:34 [PATCH v2 0/2] Fix unused clock disabling on LPC18xx Joachim Eastwood
2015-08-25 18:34 ` Joachim Eastwood [this message]
2015-10-19 22:26 ` [PATCH v2 1/2] clk: lpc18xx-ccu: fix potential system hang when disabling unused clocks Stephen Boyd
2015-10-20 10:42 ` Joachim Eastwood
2015-10-21 9:34 ` Michael Turquette
2015-10-21 13:22 ` Joachim Eastwood
2015-08-25 18:34 ` [PATCH v2 2/2] clk: lpc18xx-cgu: " Joachim Eastwood
2015-10-19 22:27 ` Stephen Boyd
2015-10-18 22:01 ` [PATCH v2 0/2] Fix unused clock disabling on LPC18xx Joachim Eastwood
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=1440527643-2960-2-git-send-email-manabian@gmail.com \
--to=manabian@gmail.com \
--cc=linux-clk@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@codeaurora.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).