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
next prev 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: linkBe 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.