linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tero Kristo <t-kristo@ti.com>
To: <linux-omap@vger.kernel.org>, <linux-clk@vger.kernel.org>,
	<sboyd@kernel.org>, <mturquette@baylibre.com>
Cc: <tony@atomide.com>, <s-anna@ti.com>
Subject: [PATCHv3 03/10] clk: ti: clkctrl: add new exported API for checking standby info
Date: Thu, 12 Sep 2019 16:26:06 +0300	[thread overview]
Message-ID: <20190912132613.28093-4-t-kristo@ti.com> (raw)
In-Reply-To: <20190912132613.28093-1-t-kristo@ti.com>

Standby status is provided for certain clkctrl clocks to see if the
given module has entered standby or not. This is mostly needed by
remoteproc code to see if the remoteproc has entered standby and the clock
can be turned off safely.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
 drivers/clk/ti/clkctrl.c | 33 +++++++++++++++++++++++++++++++++
 include/linux/clk/ti.h   |  1 +
 2 files changed, 34 insertions(+)

diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
index d904a9a7626a..e3e0a66a6ce2 100644
--- a/drivers/clk/ti/clkctrl.c
+++ b/drivers/clk/ti/clkctrl.c
@@ -34,6 +34,9 @@
 #define OMAP4_IDLEST_MASK		(0x3 << 16)
 #define OMAP4_IDLEST_SHIFT		16
 
+#define OMAP4_STBYST_MASK		BIT(18)
+#define OMAP4_STBYST_SHIFT		18
+
 #define CLKCTRL_IDLEST_FUNCTIONAL	0x0
 #define CLKCTRL_IDLEST_INTERFACE_IDLE	0x2
 #define CLKCTRL_IDLEST_DISABLED		0x3
@@ -647,3 +650,33 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
 }
 CLK_OF_DECLARE(ti_omap4_clkctrl_clock, "ti,clkctrl",
 	       _ti_omap4_clkctrl_setup);
+
+/**
+ * ti_clk_is_in_standby - Check if clkctrl clock is in standby or not
+ * @clk: clock to check standby status for
+ *
+ * Finds whether the provided clock is in standby mode or not. Returns
+ * true if the provided clock is a clkctrl type clock and it is in standby,
+ * false otherwise.
+ */
+u32 ti_clk_is_in_standby(struct clk *clk)
+{
+	struct clk_hw *hw;
+	struct clk_hw_omap *hwclk;
+	u32 val;
+
+	hw = __clk_get_hw(clk);
+
+	if (!omap2_clk_is_hw_omap(hw))
+		return false;
+
+	hwclk = to_clk_hw_omap(hw);
+
+	val = ti_clk_ll_ops->clk_readl(&hwclk->enable_reg);
+
+	if (val & OMAP4_STBYST_MASK)
+		return true;
+
+	return false;
+}
+EXPORT_SYMBOL_GPL(ti_clk_is_in_standby);
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index bb2c5af9082a..3fb777f7103a 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -298,6 +298,7 @@ struct ti_clk_features {
 
 void ti_clk_setup_features(struct ti_clk_features *features);
 const struct ti_clk_features *ti_clk_get_features(void);
+u32 ti_clk_is_in_standby(struct clk *clk);
 int omap3_noncore_dpll_save_context(struct clk_hw *hw);
 void omap3_noncore_dpll_restore_context(struct clk_hw *hw);
 
-- 
2.17.1

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

  parent reply	other threads:[~2019-09-12 13:26 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-12 13:26 [PATCHv3 00/10] clk: ti: remoteproc / iommu support patches Tero Kristo
2019-09-12 13:26 ` [PATCHv3 01/10] clk: ti: clkctrl: fix setting up clkctrl clocks Tero Kristo
2019-09-12 13:26 ` [PATCHv3 02/10] clk: ti: clkctrl: convert to use bit helper macros instead of bitops Tero Kristo
2019-09-12 13:26 ` Tero Kristo [this message]
2019-10-28 14:40   ` [PATCHv3 03/10] clk: ti: clkctrl: add new exported API for checking standby info Stephen Boyd
2019-10-31 13:51     ` Tero Kristo
2019-10-31 13:54     ` [PATCHv4 03/12] " Tero Kristo
2019-09-12 13:26 ` [PATCHv3 04/10] dt-bindings: clk: add omap5 iva clkctrl definitions Tero Kristo
2019-09-12 13:26 ` [PATCHv3 05/10] clk: ti: omap5: add IVA subsystem clkctrl data Tero Kristo
2019-09-12 13:26 ` [PATCHv3 06/10] clk: ti: dra7xx: Drop idlest polling from IPU & DSP clkctrl clocks Tero Kristo
2019-09-12 13:26 ` [PATCHv3 07/10] clk: ti: omap4: " Tero Kristo
2019-09-12 13:26 ` [PATCHv3 08/10] clk: ti: omap5: " Tero Kristo
2019-09-12 13:26 ` [PATCHv3 09/10] clk: ti: am43xx: drop idlest polling from pruss clkctrl clock Tero Kristo
2019-09-12 13:26 ` [PATCHv3 10/10] clk: ti: am33xx: " Tero Kristo
2019-10-10  8:34 ` [PATCHv3 00/10] clk: ti: remoteproc / iommu support patches Tero Kristo
2019-10-10 14:35   ` Tony Lindgren
2019-10-10 15:32     ` Tero Kristo
2019-10-24 12:28       ` Tero Kristo
2019-10-28 14:43         ` 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=20190912132613.28093-4-t-kristo@ti.com \
    --to=t-kristo@ti.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=s-anna@ti.com \
    --cc=sboyd@kernel.org \
    --cc=tony@atomide.com \
    /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).