linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Linus Walleij <linus.walleij@linaro.org>,
	Liviu Dudau <liviu.dudau@arm.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Sudeep Holla <sudeep.holla@arm.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	linux-pm@vger.kernel.org, Stephen Boyd <sboyd@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Kevin Brodsky <Kevin.Brodsky@arm.com>,
	Sebastian Reichel <sre@kernel.org>, Will Deacon <will@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Lee Jones <lee.jones@linaro.org>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH 15/17] vexpress: Move site master init to vexpress-config bus
Date: Sun, 19 Apr 2020 12:08:08 -0500	[thread overview]
Message-ID: <20200419170810.5738-16-robh@kernel.org> (raw)
In-Reply-To: <20200419170810.5738-1-robh@kernel.org>

There's only a single caller of vexpress_config_set_master() from
vexpress-sysreg.c. Let's just make the registers needed available to
vexpress-config and move all the code there. The registers needed aren't
used anywhere else either. With this, we can get rid of the private API
between these 2 drivers.

Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Rob Herring <robh@kernel.org>
---
 drivers/bus/vexpress-config.c | 37 +++++++++++++++++++++++++++++++----
 drivers/mfd/vexpress-sysreg.c | 25 +----------------------
 include/linux/vexpress.h      |  9 ---------
 3 files changed, 34 insertions(+), 37 deletions(-)

diff --git a/drivers/bus/vexpress-config.c b/drivers/bus/vexpress-config.c
index 43deb4df140b..caa35a4cb34d 100644
--- a/drivers/bus/vexpress-config.c
+++ b/drivers/bus/vexpress-config.c
@@ -14,9 +14,17 @@
 #include <linux/slab.h>
 #include <linux/vexpress.h>
 
-#define SYS_CFGDATA		0x0
+#define SYS_MISC		0x0
+#define SYS_MISC_MASTERSITE	(1 << 14)
 
-#define SYS_CFGCTRL		0x4
+#define SYS_PROCID0		0x24
+#define SYS_PROCID1		0x28
+#define SYS_HBI_MASK		0xfff
+#define SYS_PROCIDx_HBI_SHIFT	0
+
+#define SYS_CFGDATA		0x40
+
+#define SYS_CFGCTRL		0x44
 #define SYS_CFGCTRL_START	(1 << 31)
 #define SYS_CFGCTRL_WRITE	(1 << 30)
 #define SYS_CFGCTRL_DCC(n)	(((n) & 0xf) << 26)
@@ -25,10 +33,14 @@
 #define SYS_CFGCTRL_POSITION(n)	(((n) & 0xf) << 12)
 #define SYS_CFGCTRL_DEVICE(n)	(((n) & 0xfff) << 0)
 
-#define SYS_CFGSTAT		0x8
+#define SYS_CFGSTAT		0x48
 #define SYS_CFGSTAT_ERR		(1 << 1)
 #define SYS_CFGSTAT_COMPLETE	(1 << 0)
 
+#define VEXPRESS_SITE_MB		0
+#define VEXPRESS_SITE_DB1		1
+#define VEXPRESS_SITE_DB2		2
+#define VEXPRESS_SITE_MASTER		0xf
 
 struct vexpress_syscfg {
 	struct device *dev;
@@ -59,7 +71,7 @@ static DEFINE_MUTEX(vexpress_config_mutex);
 static u32 vexpress_config_site_master = VEXPRESS_SITE_MASTER;
 
 
-void vexpress_config_set_master(u32 site)
+static void vexpress_config_set_master(u32 site)
 {
 	vexpress_config_site_master = site;
 }
@@ -340,6 +352,8 @@ static int vexpress_syscfg_probe(struct platform_device *pdev)
 	struct resource *res;
 	struct vexpress_config_bridge *bridge;
 	struct device_node *node;
+	int master;
+	u32 dt_hbi;
 
 	syscfg = devm_kzalloc(&pdev->dev, sizeof(*syscfg), GFP_KERNEL);
 	if (!syscfg)
@@ -361,6 +375,21 @@ static int vexpress_syscfg_probe(struct platform_device *pdev)
 
 	dev_set_drvdata(&pdev->dev, bridge);
 
+	master = readl(syscfg->base + SYS_MISC) & SYS_MISC_MASTERSITE ?
+			VEXPRESS_SITE_DB2 : VEXPRESS_SITE_DB1;
+	vexpress_config_set_master(master);
+
+	/* Confirm board type against DT property, if available */
+	if (of_property_read_u32(of_root, "arm,hbi", &dt_hbi) == 0) {
+		u32 id = readl(syscfg->base + (master == VEXPRESS_SITE_DB1 ?
+				 SYS_PROCID0 : SYS_PROCID1));
+		u32 hbi = (id >> SYS_PROCIDx_HBI_SHIFT) & SYS_HBI_MASK;
+
+		if (WARN_ON(dt_hbi != hbi))
+			dev_warn(&pdev->dev, "DT HBI (%x) is not matching hardware (%x)!\n",
+					dt_hbi, hbi);
+	}
+
 	for_each_compatible_node(node, NULL, "arm,vexpress,config-bus") {
 		struct device_node *bridge_np;
 
diff --git a/drivers/mfd/vexpress-sysreg.c b/drivers/mfd/vexpress-sysreg.c
index eeeeb1d26d5d..aaf24af287dd 100644
--- a/drivers/mfd/vexpress-sysreg.c
+++ b/drivers/mfd/vexpress-sysreg.c
@@ -14,7 +14,6 @@
 #include <linux/platform_device.h>
 #include <linux/slab.h>
 #include <linux/stat.h>
-#include <linux/vexpress.h>
 
 #define SYS_ID			0x000
 #define SYS_SW			0x004
@@ -37,11 +36,6 @@
 #define SYS_CFGCTRL		0x0a4
 #define SYS_CFGSTAT		0x0a8
 
-#define SYS_HBI_MASK		0xfff
-#define SYS_PROCIDx_HBI_SHIFT	0
-
-#define SYS_MISC_MASTERSITE	(1 << 14)
-
 /* The sysreg block is just a random collection of various functions... */
 
 static struct bgpio_pdata vexpress_sysreg_sys_led_pdata = {
@@ -94,7 +88,7 @@ static struct mfd_cell vexpress_sysreg_cells[] = {
 		.name = "vexpress-syscfg",
 		.num_resources = 1,
 		.resources = (struct resource []) {
-			DEFINE_RES_MEM(SYS_CFGDATA, 0xc),
+			DEFINE_RES_MEM(SYS_MISC, 0x4c),
 		},
 	}
 };
@@ -104,8 +98,6 @@ static int vexpress_sysreg_probe(struct platform_device *pdev)
 	struct resource *mem;
 	void __iomem *base;
 	struct gpio_chip *mmc_gpio_chip;
-	int master;
-	u32 dt_hbi;
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!mem)
@@ -115,21 +107,6 @@ static int vexpress_sysreg_probe(struct platform_device *pdev)
 	if (!base)
 		return -ENOMEM;
 
-	master = readl(base + SYS_MISC) & SYS_MISC_MASTERSITE ?
-			VEXPRESS_SITE_DB2 : VEXPRESS_SITE_DB1;
-	vexpress_config_set_master(master);
-
-	/* Confirm board type against DT property, if available */
-	if (of_property_read_u32(of_root, "arm,hbi", &dt_hbi) == 0) {
-		u32 id = readl(base + (master == VEXPRESS_SITE_DB1 ?
-				 SYS_PROCID0 : SYS_PROCID1));
-		u32 hbi = (id >> SYS_PROCIDx_HBI_SHIFT) & SYS_HBI_MASK;
-
-		if (WARN_ON(dt_hbi != hbi))
-			dev_warn(&pdev->dev, "DT HBI (%x) is not matching hardware (%x)!\n",
-					dt_hbi, hbi);
-	}
-
 	/*
 	 * Duplicated SYS_MCI pseudo-GPIO controller for compatibility with
 	 * older trees using sysreg node for MMC control lines.
diff --git a/include/linux/vexpress.h b/include/linux/vexpress.h
index 65096c792d57..2f9dd072f11f 100644
--- a/include/linux/vexpress.h
+++ b/include/linux/vexpress.h
@@ -10,15 +10,6 @@
 #include <linux/device.h>
 #include <linux/regmap.h>
 
-#define VEXPRESS_SITE_MB		0
-#define VEXPRESS_SITE_DB1		1
-#define VEXPRESS_SITE_DB2		2
-#define VEXPRESS_SITE_MASTER		0xf
-
-/* Config infrastructure */
-
-void vexpress_config_set_master(u32 site);
-
 /* Config regmap API */
 
 struct regmap *devm_regmap_init_vexpress_config(struct device *dev);
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-04-19 17:13 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-19 17:07 [PATCH 00/17] Modularizing Versatile Express Rob Herring
2020-04-19 17:07 ` [PATCH 01/17] ARM: vexpress: Move vexpress_flags_set() into arch code Rob Herring
2020-04-20 15:17   ` Arnd Bergmann
2020-04-22 10:15   ` Liviu Dudau
2020-04-22 19:04   ` Sudeep Holla
2020-04-19 17:07 ` [PATCH 02/17] arm64: vexpress: Don't select CONFIG_POWER_RESET_VEXPRESS Rob Herring
2020-04-20 15:18   ` Arnd Bergmann
2020-04-22 10:16   ` Liviu Dudau
2020-04-22 19:08   ` Sudeep Holla
2020-04-19 17:07 ` [PATCH 03/17] arm64: vexpress: Don't select CONFIG_VEXPRESS_CONFIG Rob Herring
2020-04-20 15:18   ` Arnd Bergmann
2020-04-22 19:09   ` Sudeep Holla
2020-04-19 17:07 ` [PATCH 04/17] power/reset: vexpress: Support building as a module Rob Herring
2020-04-20 15:23   ` Arnd Bergmann
2020-04-20 17:23     ` Rob Herring
2020-04-28 19:31       ` Sebastian Reichel
2020-04-22 19:11   ` Sudeep Holla
2020-04-19 17:07 ` [PATCH 05/17] clk: versatile: Kill CONFIG_COMMON_CLK_VERSATILE Rob Herring
2020-04-20  6:44   ` Linus Walleij
2020-04-22  9:47   ` Stephen Boyd
2020-04-22 22:34     ` Rob Herring
2020-04-22 19:17   ` Sudeep Holla
2020-04-19 17:07 ` [PATCH 06/17] clk: versatile: Only enable SP810 on 32-bit by default Rob Herring
2020-04-20 15:26   ` Arnd Bergmann
2020-04-20 17:48     ` Rob Herring
2020-04-20 20:07       ` Arnd Bergmann
2020-04-22  9:48   ` Stephen Boyd
2020-04-22 10:20   ` Liviu Dudau
2020-04-22 20:52   ` Sudeep Holla
2020-04-23 15:38     ` Rob Herring
2020-04-19 17:08 ` [PATCH 07/17] clk: vexpress-osc: Use the devres clock API variants Rob Herring
2020-04-20 15:26   ` Arnd Bergmann
2020-04-22  9:51   ` Stephen Boyd
2020-04-22 10:21   ` Liviu Dudau
2020-04-22 20:56   ` Sudeep Holla
2020-04-19 17:08 ` [PATCH 08/17] clk: vexpress-osc: Support building as a module Rob Herring
2020-04-20 15:27   ` Arnd Bergmann
2020-04-20 17:18     ` Rob Herring
2020-04-22 11:01   ` Liviu Dudau
2020-04-22 21:08   ` Sudeep Holla
2020-04-23 13:45     ` Sudeep Holla
2020-04-23 15:53       ` Rob Herring
2020-04-23 16:58         ` Sudeep Holla
2020-04-19 17:08 ` [PATCH 09/17] mfd: vexpress-sysreg: Drop selecting CONFIG_CLKSRC_MMIO Rob Herring
2020-04-20 15:29   ` Arnd Bergmann
2020-04-22 11:02   ` Liviu Dudau
2020-04-19 17:08 ` [PATCH 10/17] mfd: vexpress-sysreg: Drop unused syscon child devices Rob Herring
2020-04-20 15:30   ` Arnd Bergmann
2020-04-22 11:18   ` Liviu Dudau
2020-04-19 17:08 ` [PATCH 11/17] mfd: vexpress-sysreg: Use devres API variants Rob Herring
2020-04-20 15:31   ` Arnd Bergmann
2020-04-22 11:18   ` Liviu Dudau
2020-04-19 17:08 ` [PATCH 12/17] mfd: vexpress-sysreg: Support building as a module Rob Herring
2020-04-20 15:32   ` Arnd Bergmann
2020-04-20 17:05     ` Rob Herring
2020-04-19 17:08 ` [PATCH 13/17] bus: vexpress-config: Merge vexpress-syscfg into vexpress-config Rob Herring
2020-04-20 11:45   ` Greg Kroah-Hartman
2020-04-22 11:22   ` Liviu Dudau
2020-04-19 17:08 ` [PATCH 14/17] bus: vexpress-config: simplify config bus probing Rob Herring
2020-04-22 11:58   ` Liviu Dudau
2020-04-19 17:08 ` Rob Herring [this message]
2020-04-22  9:51   ` [PATCH 15/17] vexpress: Move site master init to vexpress-config bus Stephen Boyd
2020-04-22 12:03     ` Liviu Dudau
2020-04-23  0:54     ` Rob Herring
2020-04-19 17:08 ` [PATCH 16/17] bus: vexpress-config: Support building as module Rob Herring
2020-04-22 12:04   ` Liviu Dudau
2020-04-19 17:08 ` [PATCH 17/17] ARM: vexpress: Don't select VEXPRESS_CONFIG Rob Herring
2020-04-22 12:05   ` Liviu Dudau

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=20200419170810.5738-16-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=Kevin.Brodsky@arm.com \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=lee.jones@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=liviu.dudau@arm.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=sboyd@kernel.org \
    --cc=sre@kernel.org \
    --cc=sudeep.holla@arm.com \
    --cc=will@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 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).