All of lore.kernel.org
 help / color / mirror / Atom feed
From: Samuel Holland <samuel@sholland.org>
To: Chen-Yu Tsai <wens@csie.org>, Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Hans de Goede <hdegoede@redhat.com>,
	Icenowy Zheng <icenowy@aosc.io>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Maxime Ripard <mripard@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev
Subject: [PATCH v2 09/10] soc: sunxi: sram: Export the LDO control register
Date: Sun, 14 Aug 2022 23:12:46 -0500	[thread overview]
Message-ID: <20220815041248.53268-10-samuel@sholland.org> (raw)
In-Reply-To: <20220815041248.53268-1-samuel@sholland.org>

Some newer Allwinner SoCs contain internal LDOs managed by a register in
the system control MMIO space. Export this from the regmap in addtion to
the EMAC register.

Use generic names now that the regmap is no longer EMAC-specific.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
---

(no changes since v1)

 drivers/soc/sunxi/sunxi_sram.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c
index 7c6fb17cfe7f..7e8dab0f0ec4 100644
--- a/drivers/soc/sunxi/sunxi_sram.c
+++ b/drivers/soc/sunxi/sunxi_sram.c
@@ -283,6 +283,7 @@ EXPORT_SYMBOL(sunxi_sram_release);
 
 struct sunxi_sramc_variant {
 	int num_emac_clocks;
+	bool has_ldo_ctrl;
 };
 
 static const struct sunxi_sramc_variant sun4i_a10_sramc_variant = {
@@ -302,25 +303,28 @@ static const struct sunxi_sramc_variant sun50i_h616_sramc_variant = {
 };
 
 #define SUNXI_SRAM_EMAC_CLOCK_REG	0x30
+#define SUNXI_SYS_LDO_CTRL_REG		0x150
+
 static bool sunxi_sram_regmap_accessible_reg(struct device *dev,
 					     unsigned int reg)
 {
 	const struct sunxi_sramc_variant *variant = dev_get_drvdata(dev);
 
-	if (reg < SUNXI_SRAM_EMAC_CLOCK_REG)
-		return false;
-	if (reg > SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4)
-		return false;
+	if (reg >= SUNXI_SRAM_EMAC_CLOCK_REG &&
+	    reg <  SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4)
+		return true;
+	if (reg == SUNXI_SYS_LDO_CTRL_REG && variant->has_ldo_ctrl)
+		return true;
 
-	return true;
+	return false;
 }
 
-static struct regmap_config sunxi_sram_emac_clock_regmap = {
+static struct regmap_config sunxi_sram_regmap_config = {
 	.reg_bits       = 32,
 	.val_bits       = 32,
 	.reg_stride     = 4,
 	/* last defined register */
-	.max_register   = SUNXI_SRAM_EMAC_CLOCK_REG + 4,
+	.max_register   = SUNXI_SYS_LDO_CTRL_REG,
 	/* other devices have no business accessing other registers */
 	.readable_reg	= sunxi_sram_regmap_accessible_reg,
 	.writeable_reg	= sunxi_sram_regmap_accessible_reg,
@@ -328,9 +332,9 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = {
 
 static int __init sunxi_sram_probe(struct platform_device *pdev)
 {
-	struct regmap *emac_clock;
 	const struct sunxi_sramc_variant *variant;
 	struct device *dev = &pdev->dev;
+	struct regmap *regmap;
 
 	sram_dev = &pdev->dev;
 
@@ -344,12 +348,10 @@ static int __init sunxi_sram_probe(struct platform_device *pdev)
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 
-	if (variant->num_emac_clocks > 0) {
-		emac_clock = devm_regmap_init_mmio(&pdev->dev, base,
-						   &sunxi_sram_emac_clock_regmap);
-
-		if (IS_ERR(emac_clock))
-			return PTR_ERR(emac_clock);
+	if (variant->num_emac_clocks || variant->has_ldo_ctrl) {
+		regmap = devm_regmap_init_mmio(dev, base, &sunxi_sram_regmap_config);
+		if (IS_ERR(regmap))
+			return PTR_ERR(regmap);
 	}
 
 	of_platform_populate(dev->of_node, NULL, NULL, dev);
-- 
2.35.1


WARNING: multiple messages have this Message-ID (diff)
From: Samuel Holland <samuel@sholland.org>
To: Chen-Yu Tsai <wens@csie.org>, Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Hans de Goede <hdegoede@redhat.com>,
	Icenowy Zheng <icenowy@aosc.io>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Maxime Ripard <mripard@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev
Subject: [PATCH v2 09/10] soc: sunxi: sram: Export the LDO control register
Date: Sun, 14 Aug 2022 23:12:46 -0500	[thread overview]
Message-ID: <20220815041248.53268-10-samuel@sholland.org> (raw)
In-Reply-To: <20220815041248.53268-1-samuel@sholland.org>

Some newer Allwinner SoCs contain internal LDOs managed by a register in
the system control MMIO space. Export this from the regmap in addtion to
the EMAC register.

Use generic names now that the regmap is no longer EMAC-specific.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
---

(no changes since v1)

 drivers/soc/sunxi/sunxi_sram.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c
index 7c6fb17cfe7f..7e8dab0f0ec4 100644
--- a/drivers/soc/sunxi/sunxi_sram.c
+++ b/drivers/soc/sunxi/sunxi_sram.c
@@ -283,6 +283,7 @@ EXPORT_SYMBOL(sunxi_sram_release);
 
 struct sunxi_sramc_variant {
 	int num_emac_clocks;
+	bool has_ldo_ctrl;
 };
 
 static const struct sunxi_sramc_variant sun4i_a10_sramc_variant = {
@@ -302,25 +303,28 @@ static const struct sunxi_sramc_variant sun50i_h616_sramc_variant = {
 };
 
 #define SUNXI_SRAM_EMAC_CLOCK_REG	0x30
+#define SUNXI_SYS_LDO_CTRL_REG		0x150
+
 static bool sunxi_sram_regmap_accessible_reg(struct device *dev,
 					     unsigned int reg)
 {
 	const struct sunxi_sramc_variant *variant = dev_get_drvdata(dev);
 
-	if (reg < SUNXI_SRAM_EMAC_CLOCK_REG)
-		return false;
-	if (reg > SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4)
-		return false;
+	if (reg >= SUNXI_SRAM_EMAC_CLOCK_REG &&
+	    reg <  SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4)
+		return true;
+	if (reg == SUNXI_SYS_LDO_CTRL_REG && variant->has_ldo_ctrl)
+		return true;
 
-	return true;
+	return false;
 }
 
-static struct regmap_config sunxi_sram_emac_clock_regmap = {
+static struct regmap_config sunxi_sram_regmap_config = {
 	.reg_bits       = 32,
 	.val_bits       = 32,
 	.reg_stride     = 4,
 	/* last defined register */
-	.max_register   = SUNXI_SRAM_EMAC_CLOCK_REG + 4,
+	.max_register   = SUNXI_SYS_LDO_CTRL_REG,
 	/* other devices have no business accessing other registers */
 	.readable_reg	= sunxi_sram_regmap_accessible_reg,
 	.writeable_reg	= sunxi_sram_regmap_accessible_reg,
@@ -328,9 +332,9 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = {
 
 static int __init sunxi_sram_probe(struct platform_device *pdev)
 {
-	struct regmap *emac_clock;
 	const struct sunxi_sramc_variant *variant;
 	struct device *dev = &pdev->dev;
+	struct regmap *regmap;
 
 	sram_dev = &pdev->dev;
 
@@ -344,12 +348,10 @@ static int __init sunxi_sram_probe(struct platform_device *pdev)
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 
-	if (variant->num_emac_clocks > 0) {
-		emac_clock = devm_regmap_init_mmio(&pdev->dev, base,
-						   &sunxi_sram_emac_clock_regmap);
-
-		if (IS_ERR(emac_clock))
-			return PTR_ERR(emac_clock);
+	if (variant->num_emac_clocks || variant->has_ldo_ctrl) {
+		regmap = devm_regmap_init_mmio(dev, base, &sunxi_sram_regmap_config);
+		if (IS_ERR(regmap))
+			return PTR_ERR(regmap);
 	}
 
 	of_platform_populate(dev->of_node, NULL, NULL, dev);
-- 
2.35.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:[~2022-08-15  4:13 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-15  4:12 [PATCH v2 00/10] soc: sunxi: sram: Fixes and D1 support Samuel Holland
2022-08-15  4:12 ` Samuel Holland
2022-08-15  4:12 ` [PATCH v2 01/10] dt-bindings: sram: sunxi-sram: Clean up the compatible lists Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 12:15   ` Andre Przywara
2022-08-15 12:15     ` Andre Przywara
2022-08-15 13:54   ` Heiko Stübner
2022-08-15 13:54     ` Heiko Stübner
2022-08-16  5:55   ` Krzysztof Kozlowski
2022-08-16  5:55     ` Krzysztof Kozlowski
2022-08-15  4:12 ` [PATCH v2 02/10] dt-bindings: sram: sunxi-sram: Add D1 compatible string Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 13:55   ` Heiko Stübner
2022-08-15 13:55     ` Heiko Stübner
2022-08-16  7:46   ` Krzysztof Kozlowski
2022-08-16  7:46     ` Krzysztof Kozlowski
2022-08-15  4:12 ` [PATCH v2 03/10] soc: sunxi: sram: Actually claim SRAM regions Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 13:56   ` Heiko Stübner
2022-08-15 13:56     ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 04/10] soc: sunxi: sram: Prevent the driver from being unbound Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 14:00   ` Heiko Stübner
2022-08-15 14:00     ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 05/10] soc: sunxi: sram: Fix probe function ordering issues Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 14:06   ` Heiko Stübner
2022-08-15 14:06     ` Heiko Stübner
2022-08-16  0:05     ` Samuel Holland
2022-08-16  0:05       ` Samuel Holland
2022-08-15  4:12 ` [PATCH v2 06/10] soc: sunxi: sram: Fix debugfs info for A64 SRAM C Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15  4:12 ` [PATCH v2 07/10] soc: sunxi: sram: Return void from the release function Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 14:09   ` Heiko Stübner
2022-08-15 14:09     ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 08/10] soc: sunxi: sram: Save a pointer to the OF match data Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 14:10   ` Heiko Stübner
2022-08-15 14:10     ` Heiko Stübner
2022-08-15  4:12 ` Samuel Holland [this message]
2022-08-15  4:12   ` [PATCH v2 09/10] soc: sunxi: sram: Export the LDO control register Samuel Holland
2022-08-15 14:13   ` Heiko Stübner
2022-08-15 14:13     ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 10/10] soc: sunxi: sram: Add support for the D1 system control Samuel Holland
2022-08-15  4:12   ` Samuel Holland
2022-08-15 14:14   ` Heiko Stübner
2022-08-15 14:14     ` Heiko Stübner
2022-08-15  6:58 ` [PATCH v2 00/10] soc: sunxi: sram: Fixes and D1 support Conor.Dooley
2022-08-15  6:58   ` Conor.Dooley
2022-08-15  6:59   ` Conor.Dooley
2022-08-15  6:59     ` Conor.Dooley
2022-09-18 21:49 ` Jernej Škrabec
2022-09-18 21:49   ` Jernej Škrabec

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=20220815041248.53268-10-samuel@sholland.org \
    --to=samuel@sholland.org \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=hdegoede@redhat.com \
    --cc=icenowy@aosc.io \
    --cc=jernej.skrabec@gmail.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=mripard@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=wens@csie.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.