From: "André Draszik" <andre.draszik@linaro.org>
To: Krzysztof Kozlowski <krzk@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Rob Herring <robh@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Ulf Hansson <ulf.hansson@linaro.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>
Cc: "Peter Griffin" <peter.griffin@linaro.org>,
"Tudor Ambarus" <tudor.ambarus@linaro.org>,
"Juan Yescas" <jyescas@google.com>,
"Will McVicker" <willmcvicker@google.com>,
kernel-team@android.com, linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
"André Draszik" <andre.draszik@linaro.org>,
"Marek Szyprowski" <m.szyprowski@samsung.com>
Subject: [PATCH v6 06/10] pmdomain: samsung: don't hard-code offset for registers to 0 and 4
Date: Thu, 05 Mar 2026 06:11:55 +0000 [thread overview]
Message-ID: <20260305-gs101-pd-v6-6-8cb953c1a723@linaro.org> (raw)
In-Reply-To: <20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org>
On platforms such as Google gs101, direct mmio register access to the
PMU registers doesn't necessarily work and access must happen via a
regmap created by the PMU driver instead.
When such a regmap is used it will cover the complete PMU memory region
rather than individual power domains. This means the register offsets
for the configuration and status registers will have to take the power
domain offsets into account, rather than unconditionally hard-coding 0
and 4 respectively.
Update the code to allow that.
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
drivers/pmdomain/samsung/exynos-pm-domains.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
index 3bcba7d38ac1..8df46b41f9bc 100644
--- a/drivers/pmdomain/samsung/exynos-pm-domains.c
+++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
@@ -30,6 +30,8 @@ struct exynos_pm_domain {
struct regmap *regmap;
struct generic_pm_domain pd;
u32 local_pwr_cfg;
+ u32 configuration_reg;
+ u32 status_reg;
};
static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
@@ -41,7 +43,7 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
pd = container_of(domain, struct exynos_pm_domain, pd);
pwr = power_on ? pd->local_pwr_cfg : 0;
- err = regmap_write(pd->regmap, 0, pwr);
+ err = regmap_write(pd->regmap, pd->configuration_reg, pwr);
if (err) {
pr_err("Regmap write for power domain %s %sable failed: %d\n",
domain->name, power_on ? "en" : "dis", err);
@@ -53,7 +55,7 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
while (timeout-- > 0) {
unsigned int val;
- err = regmap_read(pd->regmap, 0x4, &val);
+ err = regmap_read(pd->regmap, pd->status_reg, &val);
if (err || ((val & pd->local_pwr_cfg) != pwr)) {
cpu_relax();
usleep_range(80, 100);
@@ -164,6 +166,8 @@ static int exynos_pd_probe(struct platform_device *pdev)
pd->pd.power_off = exynos_pd_power_off;
pd->pd.power_on = exynos_pd_power_on;
pd->local_pwr_cfg = pm_domain_cfg->local_pwr_cfg;
+ pd->configuration_reg += 0;
+ pd->status_reg += 4;
/*
* Some Samsung platforms with bootloaders turning on the splash-screen
@@ -174,7 +178,7 @@ static int exynos_pd_probe(struct platform_device *pdev)
of_device_is_compatible(np, "samsung,exynos4210-pd"))
exynos_pd_power_off(&pd->pd);
- ret = regmap_read(pd->regmap, 0x4, &val);
+ ret = regmap_read(pd->regmap, pd->status_reg, &val);
if (ret)
return dev_err_probe(dev, ret, "failed to read status");
--
2.53.0.473.g4a7958ca14-goog
next prev parent reply other threads:[~2026-03-05 6:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-05 6:11 [PATCH v6 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
2026-03-05 6:11 ` [PATCH v6 01/10] dt-bindings: soc: google: add google,gs101-dtzpc André Draszik
2026-03-05 6:11 ` [PATCH v6 02/10] dt-bindings: power: samsung: add google,gs101-pd André Draszik
2026-03-05 6:11 ` [PATCH v6 03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding André Draszik
2026-03-05 6:11 ` [PATCH v6 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children André Draszik
2026-03-06 7:36 ` Krzysztof Kozlowski
2026-03-06 10:08 ` André Draszik
2026-03-05 6:11 ` [PATCH v6 05/10] pmdomain: samsung: convert to using regmap André Draszik
2026-03-05 6:11 ` André Draszik [this message]
2026-03-05 6:11 ` [PATCH v6 07/10] pmdomain: samsung: add support for google,gs101-pd André Draszik
2026-03-05 6:11 ` [PATCH v6 08/10] pmdomain: samsung: use dev_err() instead of pr_err() André Draszik
2026-03-05 6:11 ` [PATCH v6 09/10] pmdomain: samsung: implement SMC to save / restore TZ config André Draszik
2026-03-05 6:11 ` [PATCH v6 10/10] pmdomain: samsung: implement domain-supply regulator André Draszik
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=20260305-gs101-pd-v6-6-8cb953c1a723@linaro.org \
--to=andre.draszik@linaro.org \
--cc=alim.akhtar@samsung.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jyescas@google.com \
--cc=kernel-team@android.com \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=peter.griffin@linaro.org \
--cc=robh@kernel.org \
--cc=tudor.ambarus@linaro.org \
--cc=ulf.hansson@linaro.org \
--cc=willmcvicker@google.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