All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen-Yu Tsai <wens@csie.org>
To: Maxime Ripard <maxime.ripard@free-electrons.com>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>
Cc: Chen-Yu Tsai <wens@csie.org>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-sunxi@googlegroups.com
Subject: [PATCH 04/11] clk: sunxi-ng: Support separately grouped PLL lock status register
Date: Tue, 24 Jan 2017 10:32:23 +0800	[thread overview]
Message-ID: <20170124023230.3990-5-wens@csie.org> (raw)
In-Reply-To: <20170124023230.3990-1-wens@csie.org>

On the Allwinner A80 SoC, the PLL lock status indicators are grouped
together in a separate register, as opposed to being scattered in each
PLL's configuration register.

Add a flag to support this.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/clk/sunxi-ng/ccu_common.c | 8 ++++++--
 drivers/clk/sunxi-ng/ccu_common.h | 2 ++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c
index 51d4bac97ab3..3fd0c3331aff 100644
--- a/drivers/clk/sunxi-ng/ccu_common.c
+++ b/drivers/clk/sunxi-ng/ccu_common.c
@@ -25,13 +25,17 @@ static DEFINE_SPINLOCK(ccu_lock);
 
 void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock)
 {
+	void __iomem *addr;
 	u32 reg;
 
 	if (!lock)
 		return;
 
-	WARN_ON(readl_relaxed_poll_timeout(common->base + common->reg, reg,
-					   reg & lock, 100, 70000));
+	addr = common->base + common->reg;
+	if (common->features & CCU_FEATURE_LOCK_REG)
+		addr = common->base + common->lock_reg;
+
+	WARN_ON(readl_relaxed_poll_timeout(addr, reg, reg & lock, 100, 70000));
 }
 
 int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h
index cdd69eb2e0b9..73d81dc58fc5 100644
--- a/drivers/clk/sunxi-ng/ccu_common.h
+++ b/drivers/clk/sunxi-ng/ccu_common.h
@@ -22,6 +22,7 @@
 #define CCU_FEATURE_FIXED_PREDIV	BIT(2)
 #define CCU_FEATURE_FIXED_POSTDIV	BIT(3)
 #define CCU_FEATURE_ALL_PREDIV		BIT(4)
+#define CCU_FEATURE_LOCK_REG		BIT(5)
 
 struct device_node;
 
@@ -57,6 +58,7 @@ struct device_node;
 struct ccu_common {
 	void __iomem	*base;
 	u16		reg;
+	u16		lock_reg;
 	u32		prediv;
 
 	unsigned long	features;
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
To: Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Michael Turquette
	<mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
	Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Cc: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: [PATCH 04/11] clk: sunxi-ng: Support separately grouped PLL lock status register
Date: Tue, 24 Jan 2017 10:32:23 +0800	[thread overview]
Message-ID: <20170124023230.3990-5-wens@csie.org> (raw)
In-Reply-To: <20170124023230.3990-1-wens-jdAy2FN1RRM@public.gmane.org>

On the Allwinner A80 SoC, the PLL lock status indicators are grouped
together in a separate register, as opposed to being scattered in each
PLL's configuration register.

Add a flag to support this.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 drivers/clk/sunxi-ng/ccu_common.c | 8 ++++++--
 drivers/clk/sunxi-ng/ccu_common.h | 2 ++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c
index 51d4bac97ab3..3fd0c3331aff 100644
--- a/drivers/clk/sunxi-ng/ccu_common.c
+++ b/drivers/clk/sunxi-ng/ccu_common.c
@@ -25,13 +25,17 @@ static DEFINE_SPINLOCK(ccu_lock);
 
 void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock)
 {
+	void __iomem *addr;
 	u32 reg;
 
 	if (!lock)
 		return;
 
-	WARN_ON(readl_relaxed_poll_timeout(common->base + common->reg, reg,
-					   reg & lock, 100, 70000));
+	addr = common->base + common->reg;
+	if (common->features & CCU_FEATURE_LOCK_REG)
+		addr = common->base + common->lock_reg;
+
+	WARN_ON(readl_relaxed_poll_timeout(addr, reg, reg & lock, 100, 70000));
 }
 
 int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h
index cdd69eb2e0b9..73d81dc58fc5 100644
--- a/drivers/clk/sunxi-ng/ccu_common.h
+++ b/drivers/clk/sunxi-ng/ccu_common.h
@@ -22,6 +22,7 @@
 #define CCU_FEATURE_FIXED_PREDIV	BIT(2)
 #define CCU_FEATURE_FIXED_POSTDIV	BIT(3)
 #define CCU_FEATURE_ALL_PREDIV		BIT(4)
+#define CCU_FEATURE_LOCK_REG		BIT(5)
 
 struct device_node;
 
@@ -57,6 +58,7 @@ struct device_node;
 struct ccu_common {
 	void __iomem	*base;
 	u16		reg;
+	u16		lock_reg;
 	u32		prediv;
 
 	unsigned long	features;
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: wens@csie.org (Chen-Yu Tsai)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/11] clk: sunxi-ng: Support separately grouped PLL lock status register
Date: Tue, 24 Jan 2017 10:32:23 +0800	[thread overview]
Message-ID: <20170124023230.3990-5-wens@csie.org> (raw)
In-Reply-To: <20170124023230.3990-1-wens@csie.org>

On the Allwinner A80 SoC, the PLL lock status indicators are grouped
together in a separate register, as opposed to being scattered in each
PLL's configuration register.

Add a flag to support this.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/clk/sunxi-ng/ccu_common.c | 8 ++++++--
 drivers/clk/sunxi-ng/ccu_common.h | 2 ++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c
index 51d4bac97ab3..3fd0c3331aff 100644
--- a/drivers/clk/sunxi-ng/ccu_common.c
+++ b/drivers/clk/sunxi-ng/ccu_common.c
@@ -25,13 +25,17 @@ static DEFINE_SPINLOCK(ccu_lock);
 
 void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock)
 {
+	void __iomem *addr;
 	u32 reg;
 
 	if (!lock)
 		return;
 
-	WARN_ON(readl_relaxed_poll_timeout(common->base + common->reg, reg,
-					   reg & lock, 100, 70000));
+	addr = common->base + common->reg;
+	if (common->features & CCU_FEATURE_LOCK_REG)
+		addr = common->base + common->lock_reg;
+
+	WARN_ON(readl_relaxed_poll_timeout(addr, reg, reg & lock, 100, 70000));
 }
 
 int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h
index cdd69eb2e0b9..73d81dc58fc5 100644
--- a/drivers/clk/sunxi-ng/ccu_common.h
+++ b/drivers/clk/sunxi-ng/ccu_common.h
@@ -22,6 +22,7 @@
 #define CCU_FEATURE_FIXED_PREDIV	BIT(2)
 #define CCU_FEATURE_FIXED_POSTDIV	BIT(3)
 #define CCU_FEATURE_ALL_PREDIV		BIT(4)
+#define CCU_FEATURE_LOCK_REG		BIT(5)
 
 struct device_node;
 
@@ -57,6 +58,7 @@ struct device_node;
 struct ccu_common {
 	void __iomem	*base;
 	u16		reg;
+	u16		lock_reg;
 	u32		prediv;
 
 	unsigned long	features;
-- 
2.11.0

  parent reply	other threads:[~2017-01-24  2:32 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-24  2:32 [PATCH 00/11] clk: sunxi-ng: Add support for A80 CCUs Chen-Yu Tsai
2017-01-24  2:32 ` Chen-Yu Tsai
2017-01-24  2:32 ` Chen-Yu Tsai
2017-01-24  2:32 ` [PATCH 01/11] clk: sunxi-ng: mux: Fix determine_rate for mux clocks with pre-dividers Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26  9:55   ` Maxime Ripard
2017-01-26  9:55     ` Maxime Ripard
2017-01-26  9:55     ` Maxime Ripard
2017-01-26 11:22     ` Chen-Yu Tsai
2017-01-26 11:22       ` Chen-Yu Tsai
2017-01-24  2:32 ` [PATCH 02/11] clk: sunxi-ng: mux: honor CLK_SET_RATE_NO_REPARENT flag Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32 ` [PATCH 03/11] clk: sunxi-ng: mux: Get closest parent rate possible with CLK_SET_RATE_PARENT Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32 ` Chen-Yu Tsai [this message]
2017-01-24  2:32   ` [PATCH 04/11] clk: sunxi-ng: Support separately grouped PLL lock status register Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26  9:57   ` Maxime Ripard
2017-01-26  9:57     ` Maxime Ripard
2017-01-24  2:32 ` [PATCH 05/11] clk: sunxi-ng: Add A80 CCU Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-27 21:13   ` Rob Herring
2017-01-27 21:13     ` Rob Herring
2017-01-27 21:13     ` Rob Herring
2017-01-24  2:32 ` [PATCH 06/11] clk: sunxi-ng: Add A80 USB CCU Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26 10:14   ` Maxime Ripard
2017-01-26 10:14     ` Maxime Ripard
2017-01-26 10:14     ` Maxime Ripard
2017-01-26 11:12     ` [linux-sunxi] " Chen-Yu Tsai
2017-01-26 11:12       ` Chen-Yu Tsai
2017-01-27  8:45       ` Maxime Ripard
2017-01-27  8:45         ` Maxime Ripard
2017-01-27  8:45         ` Maxime Ripard
2017-01-27 21:15   ` Rob Herring
2017-01-27 21:15     ` Rob Herring
2017-01-27 21:15     ` Rob Herring
2017-01-24  2:32 ` [PATCH 07/11] clk: sunxi-ng: Add A80 Display Engine CCU Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26 10:39   ` Maxime Ripard
2017-01-26 10:39     ` Maxime Ripard
2017-01-26 11:20     ` Chen-Yu Tsai
2017-01-26 11:20       ` Chen-Yu Tsai
2017-01-26 11:20       ` Chen-Yu Tsai
2017-01-27  8:58       ` Maxime Ripard
2017-01-27  8:58         ` Maxime Ripard
2017-01-27  8:58         ` Maxime Ripard
2017-01-27  9:26         ` Chen-Yu Tsai
2017-01-27  9:26           ` Chen-Yu Tsai
2017-01-27  9:26           ` Chen-Yu Tsai
2017-01-27  9:42           ` Maxime Ripard
2017-01-27  9:42             ` Maxime Ripard
2017-01-27  9:42             ` Maxime Ripard
2017-01-24  2:32 ` [PATCH 08/11] ARM: dts: sun8i-a23-q8-tablet: Drop pinmux setting for codec PA gpio Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26 10:38   ` Maxime Ripard
2017-01-26 10:38     ` Maxime Ripard
2017-01-26 10:38     ` Maxime Ripard
2017-01-26 11:15     ` Chen-Yu Tsai
2017-01-26 11:15       ` Chen-Yu Tsai
2017-01-24  2:32 ` [PATCH 09/11] ARM: dts: sunxi: Remove no longer used pinctrl/sun4i-a10.h header Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26 10:21   ` Maxime Ripard
2017-01-26 10:21     ` Maxime Ripard
2017-01-26 10:21     ` Maxime Ripard
2017-01-24  2:32 ` [PATCH 10/11] arm64: dts: allwinner: " Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-26 10:15   ` Maxime Ripard
2017-01-26 10:15     ` Maxime Ripard
2017-01-26 10:15     ` Maxime Ripard
2017-01-26 11:23     ` Chen-Yu Tsai
2017-01-26 11:23       ` Chen-Yu Tsai
2017-01-26 11:23       ` Chen-Yu Tsai
2017-01-27  8:46       ` Maxime Ripard
2017-01-27  8:46         ` Maxime Ripard
2017-01-27  8:46         ` Maxime Ripard
2017-01-24  2:32 ` [PATCH 11/11] ARM: dts: sun9i: Switch to new clock bindings Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  2:32   ` Chen-Yu Tsai
2017-01-24  6:03 ` [linux-sunxi] [PATCH 00/11] clk: sunxi-ng: Add support for A80 CCUs Priit Laes
2017-01-24  6:03   ` Priit Laes
2017-01-24  6:03   ` Priit Laes
2017-01-24  6:03   ` Priit Laes

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=20170124023230.3990-5-wens@csie.org \
    --to=wens@csie.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=mark.rutland@arm.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=mturquette@baylibre.com \
    --cc=robh+dt@kernel.org \
    --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 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.