* [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
@ 2026-03-18 15:27 André Draszik
2026-03-18 15:27 ` [PATCH v8 01/10] dt-bindings: soc: google: add google,gs101-dtzpc André Draszik
` (10 more replies)
0 siblings, 11 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik, Marek Szyprowski,
Krzysztof Kozlowski
Hi,
This series adds support for the power domains on Google GS101.
There are a few differences compared to SoCs already supported by this
driver:
* register access does not work via plain ioremap() / readl() /
writel().
Instead, the regmap created by the PMU driver must be used (which
uses Arm SMCC calls under the hood).
* DTZPC: a call needs to be made before and after power domain off/on,
to inform the EL3 firmware of the request.
* power domains can and are fed by a regulator rail and therefore
regulator control needed be implemented.
Bullet points 2 and 3 are new since version 4 of this series, and
related changes are in patches 1, 2, 9, and 10. I can merge patch 9
(SMC call) into the gs101 patch (patch 7) if preferred, but for now I
kept them independent to make it easier to see changes compared to
previous versions of this series, and because patch 9 actually applies
to not only gs101, but to many newer Exynos SoCs, and to make patches 9
and 10 themselves easier to review and reason about.
The DT update to add the new required properties on gs101 will be
posted separately.
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
Changes in v8:
- correct use of ranges (patches 4 && 7) (Rob)
- add missing \n in some of the new log messages (patches 5 && 10)
- Link to v7: https://lore.kernel.org/r/20260306-gs101-pd-v7-0-03f7c7965ba5@linaro.org
Changes in v7:
- really be consistent with quoting (Krzysztof, patch 4)
- drop invalid tested-by tag (Krzysztof, patch 3 & 4)
- Link to v6: https://lore.kernel.org/r/20260305-gs101-pd-v6-0-8cb953c1a723@linaro.org
Changes in v6:
- collect tags
- patch 4: update commit message footer to clarify that while
old/existing DT are now incomplete, they'll be updated once binding
is accepted.
- Link to v5: https://lore.kernel.org/r/20260205-gs101-pd-v5-0-ede49cdb57a6@linaro.org
Changes in v5:
- add domain-supply to binding (patch 2)
- Link to v4: https://lore.kernel.org/r/20260128-gs101-pd-v4-0-cbe7bd5a4060@linaro.org
Changes in v4:
- drop unneeded or already merged patches
- drop patch "pmdomain: samsung: convert to regmap_read_poll_timeout()"
as Marek reported issues on some platforms
- rebase
- DTZPC related changes
- Link to v3: https://lore.kernel.org/r/20251016-gs101-pd-v3-0-7b30797396e7@linaro.org
Changes in v3:
- use additionalProperties, not unevaluatedProperties in patch 2
- fix path in $id in patch 2 (Rob)
- drop comment around 'select' in patch 2 (Rob)
- collect tags
- Link to v2: https://lore.kernel.org/r/20251009-gs101-pd-v2-0-3f4a6db2af39@linaro.org
Changes in v2:
- Krzysztof:
- move google,gs101-pmu binding into separate file
- mark devm_kstrdup_const() patch as fix
- use bool for need_early_sync_state
- merge patches 8 and 10 from v1 series into one patch
- collect tags
- Link to v1: https://lore.kernel.org/r/20251006-gs101-pd-v1-0-f0cb0c01ea7b@linaro.org
---
André Draszik (10):
dt-bindings: soc: google: add google,gs101-dtzpc
dt-bindings: power: samsung: add google,gs101-pd
dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
dt-bindings: soc: google: gs101-pmu: allow power domains as children
pmdomain: samsung: convert to using regmap
pmdomain: samsung: don't hard-code offset for registers to 0 and 4
pmdomain: samsung: add support for google,gs101-pd
pmdomain: samsung: use dev_err() instead of pr_err()
pmdomain: samsung: implement SMC to save / restore TZ config
pmdomain: samsung: implement domain-supply regulator
.../devicetree/bindings/power/pd-samsung.yaml | 33 ++-
.../bindings/soc/google/google,gs101-dtzpc.yaml | 42 ++++
.../bindings/soc/google/google,gs101-pmu.yaml | 97 ++++++++
.../bindings/soc/samsung/exynos-pmu.yaml | 20 --
MAINTAINERS | 2 +
drivers/pmdomain/samsung/exynos-pm-domains.c | 262 +++++++++++++++++++--
6 files changed, 407 insertions(+), 49 deletions(-)
---
base-commit: 5c9e55fecf9365890c64f14761a80f9413a3b1d1
change-id: 20251001-gs101-pd-d4dc97d70a84
Best regards,
--
André Draszik <andre.draszik@linaro.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v8 01/10] dt-bindings: soc: google: add google,gs101-dtzpc
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd André Draszik
` (9 subsequent siblings)
10 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik
The Exynos Distributed TruztZone Protection Control (D_TZPC) provides
an interface to the protection bits that are included in the TrustZone
design in a secure system. It configures each area of the memory as
secure or non-secure.
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
.../bindings/soc/google/google,gs101-dtzpc.yaml | 42 ++++++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 43 insertions(+)
diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.yaml
new file mode 100644
index 000000000000..a8c61ce069d6
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.yaml
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/google/google,gs101-dtzpc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos Distributed TruztZone Protection Control.
+
+description:
+ Distributed TrustZone Protection Control (D_TZPC) provides an interface to the
+ protection bits that are included in the TrustZone design in a secure system.
+ It configures each area of the memory as secure or non-secure.
+
+maintainers:
+ - André Draszik <andre.draszik@linaro.org>
+
+properties:
+ compatible:
+ const: google,gs101-dtzpc
+
+ clocks:
+ maxItems: 1
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - clocks
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/google,gs101.h>
+
+ dtzpc_hsi0: dtzpc@11010000 {
+ compatible = "google,gs101-dtzpc";
+ reg = <0x11010000 0x10000>;
+ clocks = <&cmu_hsi0 CLK_GOUT_HSI0_D_TZPC_HSI0_PCLK>;
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 6358dd7f1632..e8376343935f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10905,6 +10905,7 @@ P: Documentation/process/maintainer-soc-clean-dts.rst
C: irc://irc.oftc.net/pixel6-kernel-dev
F: Documentation/devicetree/bindings/clock/google,gs101-clock.yaml
F: Documentation/devicetree/bindings/phy/google,lga-usb-phy.yaml
+F: Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.yaml
F: Documentation/devicetree/bindings/soc/google/google,gs101-pmu-intr-gen.yaml
F: Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml
F: arch/arm64/boot/dts/exynos/google/
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
2026-03-18 15:27 ` [PATCH v8 01/10] dt-bindings: soc: google: add google,gs101-dtzpc André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-18 15:27 ` [PATCH v8 03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding André Draszik
` (8 subsequent siblings)
10 siblings, 1 reply; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik
Add support for the Google gs101 version of the Exynos power domains. A
new compatible is needed because register fields have changed and
because power domain operations involve interfacing with the TrustZone
protection control on newer Exynos SoCs.
Power domains can also have a power supply linked to them, so add
optional support for that, too. It is believed that all (existing)
platforms could benefit from this, hence it's not being limited to
gs101-pd.
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v5:
- add domain-supply and update commit message
v4:
- add new vendor property samsung,dtzpc
- drop previous tags due to that
---
.../devicetree/bindings/power/pd-samsung.yaml | 33 ++++++++++++++++++++--
1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/power/pd-samsung.yaml b/Documentation/devicetree/bindings/power/pd-samsung.yaml
index 9c2c51133457..3f1a2dc17862 100644
--- a/Documentation/devicetree/bindings/power/pd-samsung.yaml
+++ b/Documentation/devicetree/bindings/power/pd-samsung.yaml
@@ -13,12 +13,10 @@ description: |+
Exynos processors include support for multiple power domains which are used
to gate power to one or more peripherals on the processor.
-allOf:
- - $ref: power-domain.yaml#
-
properties:
compatible:
enum:
+ - google,gs101-pd
- samsung,exynos4210-pd
- samsung,exynos5433-pd
@@ -33,6 +31,9 @@ properties:
deprecated: true
maxItems: 1
+ domain-supply:
+ description: domain regulator supply.
+
label:
description:
Human readable string with domain name. Will be visible in userspace
@@ -44,11 +45,28 @@ properties:
power-domains:
maxItems: 1
+ samsung,dtzpc:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Distributed TrustZone Protection Control (DTZPC) node.
+
required:
- compatible
- "#power-domain-cells"
- reg
+allOf:
+ - $ref: power-domain.yaml#
+ - if:
+ not:
+ properties:
+ compatible:
+ contains:
+ const: google,gs101-pd
+ then:
+ properties:
+ samsung,dtzpc: false
+
unevaluatedProperties: false
examples:
@@ -66,3 +84,12 @@ examples:
#power-domain-cells = <0>;
label = "MFC";
};
+
+ power-domain@2080 {
+ compatible = "google,gs101-pd";
+ reg = <0x2080 0x80>;
+ #power-domain-cells = <0>;
+ label = "hsi0";
+ domain-supply = <&ldo7m>;
+ samsung,dtzpc = <&dtzpc_hsi0>;
+ };
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
2026-03-18 15:27 ` [PATCH v8 01/10] dt-bindings: soc: google: add google,gs101-dtzpc André Draszik
2026-03-18 15:27 ` [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children André Draszik
` (7 subsequent siblings)
10 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik
The gs101-pmu binding is going to acquire various additional (pattern)
properties that don't apply to other PMUs supported by this binding.
To enable this, move google,gs101-pmu into a separate binding.
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v7:
- drop invalid tested-by tag (Krzysztof)
v4:
- update since 'syscon' was removed from gs101-pmu compatibles
- update since 'select:' was removed from google,gs101-pmu.yaml
v3:
- use additionalProperties, not unevaluatedProperties
- fix path in $id (Rob)
- drop comment around 'select' (Rob)
---
.../bindings/soc/google/google,gs101-pmu.yaml | 56 ++++++++++++++++++++++
.../bindings/soc/samsung/exynos-pmu.yaml | 20 --------
MAINTAINERS | 1 +
3 files changed, 57 insertions(+), 20 deletions(-)
diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
new file mode 100644
index 000000000000..a06bd8ec3c20
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/google/google,gs101-pmu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Google GS101 Power Management Unit (PMU)
+
+maintainers:
+ - André Draszik <andre.draszik@linaro.org>
+
+properties:
+ compatible:
+ const: google,gs101-pmu
+
+ reg:
+ maxItems: 1
+
+ reboot-mode:
+ $ref: /schemas/power/reset/syscon-reboot-mode.yaml
+ type: object
+ description:
+ Reboot mode to alter bootloader behavior for the next boot
+
+ syscon-poweroff:
+ $ref: /schemas/power/reset/syscon-poweroff.yaml#
+ type: object
+ description:
+ Node for power off method
+
+ syscon-reboot:
+ $ref: /schemas/power/reset/syscon-reboot.yaml#
+ type: object
+ description:
+ Node for reboot method
+
+ google,pmu-intr-gen-syscon:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Phandle to PMU interrupt generation interface.
+
+required:
+ - compatible
+ - reg
+ - google,pmu-intr-gen-syscon
+
+additionalProperties: false
+
+examples:
+ - |
+ system-controller@17460000 {
+ compatible = "google,gs101-pmu";
+ reg = <0x17460000 0x10000>;
+
+ google,pmu-intr-gen-syscon = <&pmu_intr_gen>;
+ };
diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
index 76ce7e98c10f..09368dbb6de6 100644
--- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
@@ -12,8 +12,6 @@ maintainers:
properties:
compatible:
oneOf:
- - enum:
- - google,gs101-pmu
- items:
- enum:
- samsung,exynos3250-pmu
@@ -110,11 +108,6 @@ properties:
description:
Node for reboot method
- google,pmu-intr-gen-syscon:
- $ref: /schemas/types.yaml#/definitions/phandle
- description:
- Phandle to PMU interrupt generation interface.
-
required:
- compatible
- reg
@@ -176,19 +169,6 @@ allOf:
properties:
dp-phy: false
- - if:
- properties:
- compatible:
- contains:
- enum:
- - google,gs101-pmu
- then:
- required:
- - google,pmu-intr-gen-syscon
- else:
- properties:
- google,pmu-intr-gen-syscon: false
-
examples:
- |
#include <dt-bindings/clock/exynos5250.h>
diff --git a/MAINTAINERS b/MAINTAINERS
index e8376343935f..60da52c420d4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10906,6 +10906,7 @@ C: irc://irc.oftc.net/pixel6-kernel-dev
F: Documentation/devicetree/bindings/clock/google,gs101-clock.yaml
F: Documentation/devicetree/bindings/phy/google,lga-usb-phy.yaml
F: Documentation/devicetree/bindings/soc/google/google,gs101-dtzpc.yaml
+F: Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
F: Documentation/devicetree/bindings/soc/google/google,gs101-pmu-intr-gen.yaml
F: Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml
F: arch/arm64/boot/dts/exynos/google/
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (2 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-21 19:14 ` Krzysztof Kozlowski
2026-03-22 23:08 ` Rob Herring (Arm)
2026-03-18 15:27 ` [PATCH v8 05/10] pmdomain: samsung: convert to using regmap André Draszik
` (6 subsequent siblings)
10 siblings, 2 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik
The power domains are a property of / implemented in the PMU. As such,
they should be modelled as child nodes of the PMU.
Note:
Because the properties added are 'required', this commit breaks DT
validation of the existing DT for Pixel 6, but a) that's simply because
the DT is incomplete and b) a DT update will be posted once the binding
is accepted.
It is not possible to write the binding such that it supports old
(incomplete) DTs in addition to the full version, but as per above
it's not required to keep supporting old DTs.
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v8:
- move comment from commit message footer into body (Rob)
- fix incorrect use of ranges in example (Rob)
v7:
- really be consistent with quoting (Krzysztof)
- drop invalid tested-by tag (Krzysztof)
v4:
- consistent quoting using " (Krzysztof)
- add samsung,dtzpc to example
---
.../bindings/soc/google/google,gs101-pmu.yaml | 41 ++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
index a06bd8ec3c20..52c47252b801 100644
--- a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
@@ -16,6 +16,14 @@ properties:
reg:
maxItems: 1
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 1
+
+ ranges: true
+
reboot-mode:
$ref: /schemas/power/reset/syscon-reboot-mode.yaml
type: object
@@ -39,9 +47,23 @@ properties:
description:
Phandle to PMU interrupt generation interface.
+patternProperties:
+ "^power-domain@[0-9a-f]+$":
+ type: object
+ description: Child node describing one power domain within the PMU
+
+ additionalProperties: true
+
+ properties:
+ compatible:
+ const: google,gs101-pd
+
required:
- compatible
- reg
+ - "#address-cells"
+ - "#size-cells"
+ - ranges
- google,pmu-intr-gen-syscon
additionalProperties: false
@@ -51,6 +73,25 @@ examples:
system-controller@17460000 {
compatible = "google,gs101-pmu";
reg = <0x17460000 0x10000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x17460000 0x10000>;
google,pmu-intr-gen-syscon = <&pmu_intr_gen>;
+
+ pd_g3d: power-domain@1e00 {
+ compatible = "google,gs101-pd";
+ reg = <0x1e00 0x80>;
+ #power-domain-cells = <0>;
+ label = "g3d";
+ samsung,dtzpc = <&pd_g3d>;
+ };
+
+ power-domain@2000 {
+ compatible = "google,gs101-pd";
+ reg = <0x2000 0x80>;
+ #power-domain-cells = <0>;
+ power-domains = <&pd_g3d>;
+ label = "embedded_g3d";
+ };
};
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (3 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-19 10:13 ` Ulf Hansson
2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-18 15:27 ` [PATCH v8 06/10] pmdomain: samsung: don't hard-code offset for registers to 0 and 4 André Draszik
` (5 subsequent siblings)
10 siblings, 2 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik, Marek Szyprowski
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.
In preparation for supporting such SoCs convert the existing mmio
accesses to using a regmap wrapper.
With this change in place, a follow-up patch can update the driver to
optionally acquire the PMU-created regmap without having to change the
rest of the code.
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
There is one checkpatch warning, relating to the non-const
regmap_config. It can not easily be made const at this stage, but a
follow-up patch allows us to make it const and the warning will go away
anyway.
v8:
- add missing \n in some of the new log messages
v4:
- rework the loop in exynos_pd_power() slightly, to not return 0 early
to allow more code to be run after pd on/off register write without
changing the loop again, required for gs101.
- add error message in case first regmap write in exynos_pd_power() fails
---
drivers/pmdomain/samsung/exynos-pm-domains.c | 83 +++++++++++++++++++++-------
1 file changed, 62 insertions(+), 21 deletions(-)
diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
index 5c3aa8983087..68b1e7ba8729 100644
--- a/drivers/pmdomain/samsung/exynos-pm-domains.c
+++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
@@ -9,15 +9,14 @@
// conjunction with runtime-pm. Support for both device-tree and non-device-tree
// based power domain support is included.
-#include <linux/io.h>
#include <linux/err.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/pm_domain.h>
#include <linux/delay.h>
#include <linux/of.h>
-#include <linux/of_address.h>
#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
struct exynos_pm_domain_config {
/* Value for LOCAL_PWR_CFG and STATUS fields for each domain */
@@ -28,7 +27,7 @@ struct exynos_pm_domain_config {
* Exynos specific wrapper around the generic power domain
*/
struct exynos_pm_domain {
- void __iomem *base;
+ struct regmap *regmap;
struct generic_pm_domain pd;
u32 local_pwr_cfg;
};
@@ -36,31 +35,42 @@ struct exynos_pm_domain {
static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
{
struct exynos_pm_domain *pd;
- void __iomem *base;
u32 timeout, pwr;
- char *op;
+ int err;
pd = container_of(domain, struct exynos_pm_domain, pd);
- base = pd->base;
pwr = power_on ? pd->local_pwr_cfg : 0;
- writel_relaxed(pwr, base);
+ err = regmap_write(pd->regmap, 0, pwr);
+ if (err) {
+ pr_err("Regmap write for power domain %s %sable failed: %d\n",
+ domain->name, power_on ? "en" : "dis", err);
+ return err;
+ }
/* Wait max 1ms */
timeout = 10;
-
- while ((readl_relaxed(base + 0x4) & pd->local_pwr_cfg) != pwr) {
- if (!timeout) {
- op = (power_on) ? "enable" : "disable";
- pr_err("Power domain %s %s failed\n", domain->name, op);
- return -ETIMEDOUT;
+ while (timeout-- > 0) {
+ unsigned int val;
+
+ err = regmap_read(pd->regmap, 0x4, &val);
+ if (err || ((val & pd->local_pwr_cfg) != pwr)) {
+ cpu_relax();
+ usleep_range(80, 100);
+ continue;
}
- timeout--;
- cpu_relax();
- usleep_range(80, 100);
+
+ break;
}
- return 0;
+ if (!timeout && !err)
+ /* Only return timeout if no other error also occurred. */
+ err = -ETIMEDOUT;
+ if (err)
+ pr_err("Power domain %s %sable failed: %d\n", domain->name,
+ power_on ? "en" : "dis", err);
+
+ return err;
}
static int exynos_pd_power_on(struct generic_pm_domain *domain)
@@ -109,8 +119,18 @@ static int exynos_pd_probe(struct platform_device *pdev)
struct device_node *np = dev->of_node;
struct of_phandle_args child, parent;
struct exynos_pm_domain *pd;
+ struct resource *res;
+ void __iomem *base;
+ unsigned int val;
int on, ret;
+ struct regmap_config reg_config = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .reg_stride = 4,
+ .use_relaxed_mmio = true,
+ };
+
pm_domain_cfg = of_device_get_match_data(dev);
pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL);
if (!pd)
@@ -120,9 +140,26 @@ static int exynos_pd_probe(struct platform_device *pdev)
if (!pd->pd.name)
return -ENOMEM;
- pd->base = of_iomap(np, 0);
- if (!pd->base)
- return -ENODEV;
+ /*
+ * The resource typically points into the address space of the PMU.
+ * Therefore, avoid using devm_platform_get_and_ioremap_resource() and
+ * instead use platform_get_resource() and devm_ioremap() to avoid
+ * conflicts due to address space overlap.
+ */
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res)
+ return dev_err_probe(dev, -ENXIO, "missing IO resources\n");
+
+ base = devm_ioremap(dev, res->start, resource_size(res));
+ if (!base)
+ return dev_err_probe(dev, -ENOMEM,
+ "failed to ioremap PMU regs\n");
+
+ reg_config.max_register = resource_size(res) - reg_config.reg_stride;
+ pd->regmap = devm_regmap_init_mmio(dev, base, ®_config);
+ if (IS_ERR(pd->regmap))
+ return dev_err_probe(dev, PTR_ERR(base),
+ "failed to init regmap\n");
pd->pd.power_off = exynos_pd_power_off;
pd->pd.power_on = exynos_pd_power_on;
@@ -137,7 +174,11 @@ static int exynos_pd_probe(struct platform_device *pdev)
of_device_is_compatible(np, "samsung,exynos4210-pd"))
exynos_pd_power_off(&pd->pd);
- on = readl_relaxed(pd->base + 0x4) & pd->local_pwr_cfg;
+ ret = regmap_read(pd->regmap, 0x4, &val);
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to read status\n");
+
+ on = val & pd->local_pwr_cfg;
pm_genpd_init(&pd->pd, NULL, !on);
ret = of_genpd_add_provider_simple(np, &pd->pd);
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 06/10] pmdomain: samsung: don't hard-code offset for registers to 0 and 4
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (4 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 05/10] pmdomain: samsung: convert to using regmap André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd André Draszik
` (4 subsequent siblings)
10 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik, Marek Szyprowski
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 68b1e7ba8729..3aba00b9ddef 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\n");
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (5 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 06/10] pmdomain: samsung: don't hard-code offset for registers to 0 and 4 André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-18 15:27 ` [PATCH v8 08/10] pmdomain: samsung: use dev_err() instead of pr_err() André Draszik
` (3 subsequent siblings)
10 siblings, 1 reply; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik, Marek Szyprowski
On Google gs101, direct mmio register access to the PMU registers
doesn't work and access must happen via a regmap created by the PMU
driver instead.
Add a flag to the device match data to denote this case, and obtain
the regmap using the parent node in DT if true, while keeping to use
the traditional direct mmio regmap otherwise.
Additionally, the status is just one bit on gs101.
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v8:
- Update offset calculation into parent regmap. DT's ranges property
now properly denotes PD address space to be an offset into parent
node. Change code to account for that and subtract parent start
address to get the offset back.
v4:
- add 'use_parent_regmap' flag instead of going by 'syscon' compatible
in parent, as it's not a given that the parent provides a syscon-
compatible regmap (it actually doesn't anymore after recent changes
on gs101)
I've still kept Marek's Tested-by from v3, as legacy Exynos code
doesn't change.
We need the offset as we use the parent's regmap.
---
drivers/pmdomain/samsung/exynos-pm-domains.c | 74 ++++++++++++++++++++--------
1 file changed, 54 insertions(+), 20 deletions(-)
diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
index 3aba00b9ddef..f8c0d11e9b33 100644
--- a/drivers/pmdomain/samsung/exynos-pm-domains.c
+++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
@@ -12,6 +12,7 @@
#include <linux/err.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
+#include <linux/mfd/syscon.h>
#include <linux/pm_domain.h>
#include <linux/delay.h>
#include <linux/of.h>
@@ -21,6 +22,7 @@
struct exynos_pm_domain_config {
/* Value for LOCAL_PWR_CFG and STATUS fields for each domain */
u32 local_pwr_cfg;
+ bool use_parent_regmap;
};
/*
@@ -93,8 +95,16 @@ static const struct exynos_pm_domain_config exynos5433_cfg = {
.local_pwr_cfg = 0xf,
};
+static const struct exynos_pm_domain_config gs101_cfg = {
+ .local_pwr_cfg = BIT(0),
+ .use_parent_regmap = true,
+};
+
static const struct of_device_id exynos_pm_domain_of_match[] = {
{
+ .compatible = "google,gs101-pd",
+ .data = &gs101_cfg,
+ }, {
.compatible = "samsung,exynos4210-pd",
.data = &exynos4210_cfg,
}, {
@@ -122,17 +132,9 @@ static int exynos_pd_probe(struct platform_device *pdev)
struct of_phandle_args child, parent;
struct exynos_pm_domain *pd;
struct resource *res;
- void __iomem *base;
unsigned int val;
int on, ret;
- struct regmap_config reg_config = {
- .reg_bits = 32,
- .val_bits = 32,
- .reg_stride = 4,
- .use_relaxed_mmio = true,
- };
-
pm_domain_cfg = of_device_get_match_data(dev);
pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL);
if (!pd)
@@ -143,25 +145,57 @@ static int exynos_pd_probe(struct platform_device *pdev)
return -ENOMEM;
/*
- * The resource typically points into the address space of the PMU.
+ * The resource typically points into the address space of the PMU and
+ * we have to consider two cases:
+ * 1) some implementations require a custom regmap (from PMU parent)
+ * 2) this driver might map the same addresses as the PMU driver
* Therefore, avoid using devm_platform_get_and_ioremap_resource() and
- * instead use platform_get_resource() and devm_ioremap() to avoid
+ * instead use platform_get_resource() here, and below for case 1) use
+ * syscon_node_to_regmap() while for case 2) use devm_ioremap() to avoid
* conflicts due to address space overlap.
*/
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res)
return dev_err_probe(dev, -ENXIO, "missing IO resources\n");
- base = devm_ioremap(dev, res->start, resource_size(res));
- if (!base)
- return dev_err_probe(dev, -ENOMEM,
- "failed to ioremap PMU regs\n");
-
- reg_config.max_register = resource_size(res) - reg_config.reg_stride;
- pd->regmap = devm_regmap_init_mmio(dev, base, ®_config);
- if (IS_ERR(pd->regmap))
- return dev_err_probe(dev, PTR_ERR(base),
- "failed to init regmap\n");
+ if (pm_domain_cfg->use_parent_regmap) {
+ const struct resource *pres;
+
+ pres = platform_get_resource(to_platform_device(dev->parent),
+ IORESOURCE_MEM, 0);
+ if (!pres)
+ return dev_err_probe(dev, -ENXIO,
+ "missing parent IO resources\n");
+
+ pd->regmap = syscon_node_to_regmap(dev->parent->of_node);
+ if (IS_ERR(pd->regmap))
+ return dev_err_probe(dev, PTR_ERR(pd->regmap),
+ "failed to acquire PMU regmap\n");
+
+ pd->configuration_reg = res->start - pres->start;
+ pd->status_reg = res->start - pres->start;
+ } else {
+ void __iomem *base;
+
+ const struct regmap_config reg_config = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .reg_stride = 4,
+ .use_relaxed_mmio = true,
+ .max_register = (resource_size(res)
+ - reg_config.reg_stride),
+ };
+
+ base = devm_ioremap(dev, res->start, resource_size(res));
+ if (!base)
+ return dev_err_probe(dev, -ENOMEM,
+ "failed to ioremap PMU regs\n");
+
+ pd->regmap = devm_regmap_init_mmio(dev, base, ®_config);
+ if (IS_ERR(pd->regmap))
+ return dev_err_probe(dev, PTR_ERR(base),
+ "failed to init regmap\n");
+ }
pd->pd.power_off = exynos_pd_power_off;
pd->pd.power_on = exynos_pd_power_on;
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 08/10] pmdomain: samsung: use dev_err() instead of pr_err()
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (6 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 09/10] pmdomain: samsung: implement SMC to save / restore TZ config André Draszik
` (2 subsequent siblings)
10 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik, Marek Szyprowski,
Krzysztof Kozlowski
dev_err() gives us more consistent error messages, which include the
device. Switch to using dev_err().
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
drivers/pmdomain/samsung/exynos-pm-domains.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
index f8c0d11e9b33..6b0a0f395509 100644
--- a/drivers/pmdomain/samsung/exynos-pm-domains.c
+++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
@@ -30,6 +30,7 @@ struct exynos_pm_domain_config {
*/
struct exynos_pm_domain {
struct regmap *regmap;
+ struct device *dev;
struct generic_pm_domain pd;
u32 local_pwr_cfg;
u32 configuration_reg;
@@ -47,8 +48,9 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
pwr = power_on ? pd->local_pwr_cfg : 0;
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);
+ dev_err(pd->dev,
+ "Regmap write for power domain %s %sable failed: %d\n",
+ domain->name, power_on ? "en" : "dis", err);
return err;
}
@@ -71,8 +73,8 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
/* Only return timeout if no other error also occurred. */
err = -ETIMEDOUT;
if (err)
- pr_err("Power domain %s %sable failed: %d\n", domain->name,
- power_on ? "en" : "dis", err);
+ dev_err(pd->dev, "Power domain %s %sable failed: %d\n",
+ domain->name, power_on ? "en" : "dis", err);
return err;
}
@@ -140,6 +142,8 @@ static int exynos_pd_probe(struct platform_device *pdev)
if (!pd)
return -ENOMEM;
+ pd->dev = dev;
+
pd->pd.name = exynos_get_domain_name(dev, np);
if (!pd->pd.name)
return -ENOMEM;
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 09/10] pmdomain: samsung: implement SMC to save / restore TZ config
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (7 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 08/10] pmdomain: samsung: use dev_err() instead of pr_err() André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 10/10] pmdomain: samsung: implement domain-supply regulator André Draszik
2026-03-21 13:17 ` (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 Krzysztof Kozlowski
10 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik
Newer Exynos platforms have a Distributed Trust Zone Protection Control
(DTZPC) linked to each power domain. It controls the access permissions
to various registers from secure and non-secure world. An SMC call is
required to instruct the firmware that the power domain is about to be
turned off and again once it was turned on. This allows the firmware to
save and restore the DTZPC configuration. Without, register access to
various registers becomes impossible from Linux (causing SError), as
the PoR configuration doesn't allow access.
Neither the requirement for the SMC call, nor its arguments appear to
be specific to gs101, as at least Exynos E850 also uses the same as can
be seen in [1], hence prefix the new macros simply with EXYNOS_.
At least on gs101, this SMC call isn't implemented for all power
domains (e.g. it's missing for HSI2 (UFS)), therefore we issue a test
SMC to store the configuration during probe, and if it fails we mark a
domain as always-on to avoid the SErrors and to avoid unnecessarily
retrying for each domain on/off.
Link: https://lore.kernel.org/all/20230308233822.31180-4-semen.protsenko@linaro.org/ [1]
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
drivers/pmdomain/samsung/exynos-pm-domains.c | 96 ++++++++++++++++++++++++++--
1 file changed, 90 insertions(+), 6 deletions(-)
diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
index 6b0a0f395509..d2e00f8310ce 100644
--- a/drivers/pmdomain/samsung/exynos-pm-domains.c
+++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
@@ -9,6 +9,7 @@
// conjunction with runtime-pm. Support for both device-tree and non-device-tree
// based power domain support is included.
+#include <linux/arm-smccc.h>
#include <linux/err.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
@@ -16,12 +17,19 @@
#include <linux/pm_domain.h>
#include <linux/delay.h>
#include <linux/of.h>
+#include <linux/of_address.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
+#define EXYNOS_SMC_CMD_PREPARE_PD_ONOFF 0x82000410
+#define EXYNOS_GET_IN_PD_DOWN 0
+#define EXYNOS_WAKEUP_PD_DOWN 1
+#define EXYNOS_RUNTIME_PM_TZPC_GROUP 2
+
struct exynos_pm_domain_config {
/* Value for LOCAL_PWR_CFG and STATUS fields for each domain */
u32 local_pwr_cfg;
+ u32 smc_offset;
bool use_parent_regmap;
};
@@ -32,11 +40,28 @@ struct exynos_pm_domain {
struct regmap *regmap;
struct device *dev;
struct generic_pm_domain pd;
- u32 local_pwr_cfg;
+ const struct exynos_pm_domain_config *cfg;
u32 configuration_reg;
u32 status_reg;
+ phys_addr_t ac_pa;
};
+static int exynos_pd_access_controller_power(struct exynos_pm_domain *pd,
+ bool power_on)
+{
+ struct arm_smccc_res res;
+
+ if (!pd->ac_pa || !pd->cfg->smc_offset)
+ return 0;
+
+ arm_smccc_smc(EXYNOS_SMC_CMD_PREPARE_PD_ONOFF,
+ power_on ? EXYNOS_WAKEUP_PD_DOWN : EXYNOS_GET_IN_PD_DOWN,
+ pd->ac_pa + pd->cfg->smc_offset,
+ EXYNOS_RUNTIME_PM_TZPC_GROUP, 0, 0, 0, 0, &res);
+
+ return res.a0;
+}
+
static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
{
struct exynos_pm_domain *pd;
@@ -45,7 +70,17 @@ 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;
+ if (!power_on) {
+ err = exynos_pd_access_controller_power(pd, power_on);
+ if (err) {
+ dev_err(pd->dev,
+ "SMC for power domain %s %sable failed: %d\n",
+ domain->name, power_on ? "en" : "dis", err);
+ return err;
+ }
+ }
+
+ pwr = power_on ? pd->cfg->local_pwr_cfg : 0;
err = regmap_write(pd->regmap, pd->configuration_reg, pwr);
if (err) {
dev_err(pd->dev,
@@ -60,7 +95,7 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
unsigned int val;
err = regmap_read(pd->regmap, pd->status_reg, &val);
- if (err || ((val & pd->local_pwr_cfg) != pwr)) {
+ if (err || ((val & pd->cfg->local_pwr_cfg) != pwr)) {
cpu_relax();
usleep_range(80, 100);
continue;
@@ -72,9 +107,21 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
if (!timeout && !err)
/* Only return timeout if no other error also occurred. */
err = -ETIMEDOUT;
- if (err)
+ if (err) {
dev_err(pd->dev, "Power domain %s %sable failed: %d\n",
domain->name, power_on ? "en" : "dis", err);
+ return err;
+ }
+
+ if (power_on) {
+ err = exynos_pd_access_controller_power(pd, power_on);
+ if (err) {
+ dev_err(pd->dev,
+ "SMC for power domain %s %sable failed: %d\n",
+ domain->name, power_on ? "en" : "dis", err);
+ return err;
+ }
+ }
return err;
}
@@ -99,6 +146,7 @@ static const struct exynos_pm_domain_config exynos5433_cfg = {
static const struct exynos_pm_domain_config gs101_cfg = {
.local_pwr_cfg = BIT(0),
+ .smc_offset = 0x0204,
.use_parent_regmap = true,
};
@@ -126,6 +174,38 @@ static const char *exynos_get_domain_name(struct device *dev,
return devm_kstrdup_const(dev, name, GFP_KERNEL);
}
+static int exynos_pd_get_access_controller(struct exynos_pm_domain *pd)
+{
+ struct device_node *ac_np;
+ struct resource ac_res;
+ int ret;
+
+ ac_np = of_parse_phandle(pd->dev->of_node, "samsung,dtzpc", 0);
+ if (!ac_np)
+ return 0;
+
+ ret = of_address_to_resource(ac_np, 0, &ac_res);
+ of_node_put(ac_np);
+ if (ret)
+ return dev_err_probe(pd->dev, ret,
+ "failed to get access controller\n");
+
+ pd->ac_pa = ac_res.start;
+
+ /*
+ * For some domains, TZ save/restore might not be implemented. If that
+ * is the case, simply mark it as always on, as otherwise a power cycle
+ * will lead to lost TZ configuration, making it impossible to access
+ * registers from Linux afterwards.
+ */
+ if (exynos_pd_access_controller_power(pd, false) == -ENOENT) {
+ pd->ac_pa = 0;
+ pd->pd.flags |= GENPD_FLAG_ALWAYS_ON;
+ }
+
+ return 0;
+}
+
static int exynos_pd_probe(struct platform_device *pdev)
{
const struct exynos_pm_domain_config *pm_domain_cfg;
@@ -203,10 +283,14 @@ 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->cfg = pm_domain_cfg;
pd->configuration_reg += 0;
pd->status_reg += 4;
+ ret = exynos_pd_get_access_controller(pd);
+ if (ret)
+ return ret;
+
/*
* Some Samsung platforms with bootloaders turning on the splash-screen
* and handing it over to the kernel, requires the power-domains to be
@@ -220,7 +304,7 @@ static int exynos_pd_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(dev, ret, "failed to read status\n");
- on = val & pd->local_pwr_cfg;
+ on = val & pd->cfg->local_pwr_cfg;
pm_genpd_init(&pd->pd, NULL, !on);
ret = of_genpd_add_provider_simple(np, &pd->pd);
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v8 10/10] pmdomain: samsung: implement domain-supply regulator
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (8 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 09/10] pmdomain: samsung: implement SMC to save / restore TZ config André Draszik
@ 2026-03-18 15:27 ` André Draszik
2026-03-21 13:17 ` (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 Krzysztof Kozlowski
10 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-18 15:27 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, André Draszik
Some power domains on Exynos are fed by a regulator rail and therefore
regulator control needs be implemented for Exynos power domains.
On Google gs101, HSI0 (USB) is one example of such a power domain.
While at it, add a to_exynos_pd() to avoid direct use of
container_of() in various additional places, and update existing code
to use it.
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v8:
- add missing \n in some of the new log messages
---
drivers/pmdomain/samsung/exynos-pm-domains.c | 53 +++++++++++++++++++++++++---
1 file changed, 48 insertions(+), 5 deletions(-)
diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
index d2e00f8310ce..3b5e84ca2dec 100644
--- a/drivers/pmdomain/samsung/exynos-pm-domains.c
+++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
@@ -20,12 +20,15 @@
#include <linux/of_address.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
#define EXYNOS_SMC_CMD_PREPARE_PD_ONOFF 0x82000410
#define EXYNOS_GET_IN_PD_DOWN 0
#define EXYNOS_WAKEUP_PD_DOWN 1
#define EXYNOS_RUNTIME_PM_TZPC_GROUP 2
+#define to_exynos_pd(gpd) container_of_const(gpd, struct exynos_pm_domain, pd)
+
struct exynos_pm_domain_config {
/* Value for LOCAL_PWR_CFG and STATUS fields for each domain */
u32 local_pwr_cfg;
@@ -39,6 +42,7 @@ struct exynos_pm_domain_config {
struct exynos_pm_domain {
struct regmap *regmap;
struct device *dev;
+ struct regulator *supply;
struct generic_pm_domain pd;
const struct exynos_pm_domain_config *cfg;
u32 configuration_reg;
@@ -64,12 +68,10 @@ static int exynos_pd_access_controller_power(struct exynos_pm_domain *pd,
static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
{
- struct exynos_pm_domain *pd;
+ struct exynos_pm_domain *pd = to_exynos_pd(domain);
u32 timeout, pwr;
int err;
- pd = container_of(domain, struct exynos_pm_domain, pd);
-
if (!power_on) {
err = exynos_pd_access_controller_power(pd, power_on);
if (err) {
@@ -126,14 +128,45 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
return err;
}
+static int exynos_pd_regulator_enable(struct regulator *supply)
+{
+ return supply ? regulator_enable(supply) : 0;
+}
+
+static int exynos_pd_regulator_disable(struct regulator *supply)
+{
+ return supply ? regulator_disable(supply) : 0;
+}
+
static int exynos_pd_power_on(struct generic_pm_domain *domain)
{
- return exynos_pd_power(domain, true);
+ struct exynos_pm_domain *pd = to_exynos_pd(domain);
+ int ret;
+
+ ret = exynos_pd_regulator_enable(pd->supply);
+ if (ret)
+ return ret;
+
+ ret = exynos_pd_power(domain, true);
+ if (ret)
+ exynos_pd_regulator_disable(pd->supply);
+
+ return ret;
}
static int exynos_pd_power_off(struct generic_pm_domain *domain)
{
- return exynos_pd_power(domain, false);
+ struct exynos_pm_domain *pd = to_exynos_pd(domain);
+ int ret;
+
+ ret = exynos_pd_power(domain, false);
+ if (ret)
+ return ret;
+
+ /* Ignore regulator errors - the domain was disabled after all. */
+ exynos_pd_regulator_disable(pd->supply);
+
+ return 0;
}
static const struct exynos_pm_domain_config exynos4210_cfg = {
@@ -291,6 +324,16 @@ static int exynos_pd_probe(struct platform_device *pdev)
if (ret)
return ret;
+ /* get the domain power supply if required */
+ pd->supply = devm_regulator_get_optional(dev, "domain");
+ if (IS_ERR(pd->supply)) {
+ if (PTR_ERR(pd->supply) != -ENODEV)
+ return dev_err_probe(dev, PTR_ERR(pd->supply),
+ "failed to get domain supply\n");
+
+ pd->supply = NULL;
+ }
+
/*
* Some Samsung platforms with bootloaders turning on the splash-screen
* and handing it over to the kernel, requires the power-domains to be
--
2.53.0.851.ga537e3e6e9-goog
^ permalink raw reply related [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-18 15:27 ` [PATCH v8 05/10] pmdomain: samsung: convert to using regmap André Draszik
@ 2026-03-19 10:13 ` Ulf Hansson
2026-03-19 10:29 ` Marek Szyprowski
2026-03-21 13:16 ` Krzysztof Kozlowski
1 sibling, 1 reply; 36+ messages in thread
From: Ulf Hansson @ 2026-03-19 10:13 UTC (permalink / raw)
To: André Draszik
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On Wed, 18 Mar 2026 at 16:28, André Draszik <andre.draszik@linaro.org> wrote:
>
> 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.
>
> In preparation for supporting such SoCs convert the existing mmio
> accesses to using a regmap wrapper.
>
> With this change in place, a follow-up patch can update the driver to
> optionally acquire the PMU-created regmap without having to change the
> rest of the code.
>
> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: André Draszik <andre.draszik@linaro.org>
[...]
> @@ -36,31 +35,42 @@ struct exynos_pm_domain {
> static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
> {
> struct exynos_pm_domain *pd;
> - void __iomem *base;
> u32 timeout, pwr;
> - char *op;
> + int err;
>
> pd = container_of(domain, struct exynos_pm_domain, pd);
> - base = pd->base;
>
> pwr = power_on ? pd->local_pwr_cfg : 0;
> - writel_relaxed(pwr, base);
> + err = regmap_write(pd->regmap, 0, pwr);
> + if (err) {
> + pr_err("Regmap write for power domain %s %sable failed: %d\n",
> + domain->name, power_on ? "en" : "dis", err);
> + return err;
> + }
>
> /* Wait max 1ms */
> timeout = 10;
> -
> - while ((readl_relaxed(base + 0x4) & pd->local_pwr_cfg) != pwr) {
> - if (!timeout) {
> - op = (power_on) ? "enable" : "disable";
> - pr_err("Power domain %s %s failed\n", domain->name, op);
> - return -ETIMEDOUT;
> + while (timeout-- > 0) {
> + unsigned int val;
> +
> + err = regmap_read(pd->regmap, 0x4, &val);
> + if (err || ((val & pd->local_pwr_cfg) != pwr)) {
> + cpu_relax();
> + usleep_range(80, 100);
> + continue;
> }
> - timeout--;
> - cpu_relax();
> - usleep_range(80, 100);
> +
> + break;
> }
>
[...]
As a follow-up patch on top, please consider converting the open-coded
polling loop above into a readx_poll_timeout_atomic().
That said, the series looks ready to me, but I am awaiting an ack from
a DT maintainer on patch4 before applying.
Kind regards
Uffe
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-19 10:13 ` Ulf Hansson
@ 2026-03-19 10:29 ` Marek Szyprowski
2026-03-19 11:58 ` André Draszik
0 siblings, 1 reply; 36+ messages in thread
From: Marek Szyprowski @ 2026-03-19 10:29 UTC (permalink / raw)
To: Ulf Hansson, André Draszik
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
On 19.03.2026 11:13, Ulf Hansson wrote:
> On Wed, 18 Mar 2026 at 16:28, André Draszik <andre.draszik@linaro.org> wrote:
>> 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.
>>
>> In preparation for supporting such SoCs convert the existing mmio
>> accesses to using a regmap wrapper.
>>
>> With this change in place, a follow-up patch can update the driver to
>> optionally acquire the PMU-created regmap without having to change the
>> rest of the code.
>>
>> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> Signed-off-by: André Draszik <andre.draszik@linaro.org>
> [...]
>
>> @@ -36,31 +35,42 @@ struct exynos_pm_domain {
>> static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
>> {
>> struct exynos_pm_domain *pd;
>> - void __iomem *base;
>> u32 timeout, pwr;
>> - char *op;
>> + int err;
>>
>> pd = container_of(domain, struct exynos_pm_domain, pd);
>> - base = pd->base;
>>
>> pwr = power_on ? pd->local_pwr_cfg : 0;
>> - writel_relaxed(pwr, base);
>> + err = regmap_write(pd->regmap, 0, pwr);
>> + if (err) {
>> + pr_err("Regmap write for power domain %s %sable failed: %d\n",
>> + domain->name, power_on ? "en" : "dis", err);
>> + return err;
>> + }
>>
>> /* Wait max 1ms */
>> timeout = 10;
>> -
>> - while ((readl_relaxed(base + 0x4) & pd->local_pwr_cfg) != pwr) {
>> - if (!timeout) {
>> - op = (power_on) ? "enable" : "disable";
>> - pr_err("Power domain %s %s failed\n", domain->name, op);
>> - return -ETIMEDOUT;
>> + while (timeout-- > 0) {
>> + unsigned int val;
>> +
>> + err = regmap_read(pd->regmap, 0x4, &val);
>> + if (err || ((val & pd->local_pwr_cfg) != pwr)) {
>> + cpu_relax();
>> + usleep_range(80, 100);
>> + continue;
>> }
>> - timeout--;
>> - cpu_relax();
>> - usleep_range(80, 100);
>> +
>> + break;
>> }
>>
> [...]
>
> As a follow-up patch on top, please consider converting the open-coded
> polling loop above into a readx_poll_timeout_atomic().
This has been tried and it doesn't work in all cases required for power
domain driver:
https://lore.kernel.org/all/5c19e4ef-c4fd-4bf5-88b3-46c86751b14e@samsung.com/
Probably a comment about that could be added directly to this code to
avoid such conversion and breakage in the future.
> That said, the series looks ready to me, but I am awaiting an ack from
> a DT maintainer on patch4 before applying.
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-19 10:29 ` Marek Szyprowski
@ 2026-03-19 11:58 ` André Draszik
2026-03-19 15:57 ` Marek Szyprowski
0 siblings, 1 reply; 36+ messages in thread
From: André Draszik @ 2026-03-19 11:58 UTC (permalink / raw)
To: Marek Szyprowski, Ulf Hansson
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
Hi Marek,
On Thu, 2026-03-19 at 11:29 +0100, Marek Szyprowski wrote:
> On 19.03.2026 11:13, Ulf Hansson wrote:
> > As a follow-up patch on top, please consider converting the open-coded
> > polling loop above into a readx_poll_timeout_atomic().
>
> This has been tried and it doesn't work in all cases required for power
> domain driver:
>
> https://lore.kernel.org/all/5c19e4ef-c4fd-4bf5-88b3-46c86751b14e@samsung.com/
>
> Probably a comment about that could be added directly to this code to
> avoid such conversion and breakage in the future.
I am planning to revisit this in the future and am hoping that we can
figure out what goes wrong when using regmap_read_poll_timeout().
Hopefully such a comment would only be short-lived, so maybe not really
worth it? I can add it, though, if you prefer.
Cheers,
Andre'
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-19 11:58 ` André Draszik
@ 2026-03-19 15:57 ` Marek Szyprowski
2026-03-19 16:42 ` Ulf Hansson
0 siblings, 1 reply; 36+ messages in thread
From: Marek Szyprowski @ 2026-03-19 15:57 UTC (permalink / raw)
To: André Draszik, Ulf Hansson
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
On 19.03.2026 12:58, André Draszik wrote:
> On Thu, 2026-03-19 at 11:29 +0100, Marek Szyprowski wrote:
>> On 19.03.2026 11:13, Ulf Hansson wrote:
>>> As a follow-up patch on top, please consider converting the open-coded
>>> polling loop above into a readx_poll_timeout_atomic().
>> This has been tried and it doesn't work in all cases required for power
>> domain driver:
>>
>> https://lore.kernel.org/all/5c19e4ef-c4fd-4bf5-88b3-46c86751b14e@samsung.com/
>>
>> Probably a comment about that could be added directly to this code to
>> avoid such conversion and breakage in the future.
> I am planning to revisit this in the future and am hoping that we can
> figure out what goes wrong when using regmap_read_poll_timeout().
>
> Hopefully such a comment would only be short-lived, so maybe not really
> worth it? I can add it, though, if you prefer.
Well, I think I've already pointed what goes wrong with
regmap_read_poll_timeout() in the above mentioned thread. You would need
to use regmap_read_poll_timeout_atomic() and modify it the same way as
commit 7349a69cf312 did for read_poll_timeout_atomic().
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-19 15:57 ` Marek Szyprowski
@ 2026-03-19 16:42 ` Ulf Hansson
0 siblings, 0 replies; 36+ messages in thread
From: Ulf Hansson @ 2026-03-19 16:42 UTC (permalink / raw)
To: Marek Szyprowski
Cc: André Draszik, Krzysztof Kozlowski, Alim Akhtar, Rob Herring,
Conor Dooley, Krzysztof Kozlowski, Liam Girdwood, Mark Brown,
Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm
On Thu, 19 Mar 2026 at 16:57, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>
> On 19.03.2026 12:58, André Draszik wrote:
> > On Thu, 2026-03-19 at 11:29 +0100, Marek Szyprowski wrote:
> >> On 19.03.2026 11:13, Ulf Hansson wrote:
> >>> As a follow-up patch on top, please consider converting the open-coded
> >>> polling loop above into a readx_poll_timeout_atomic().
> >> This has been tried and it doesn't work in all cases required for power
> >> domain driver:
> >>
> >> https://lore.kernel.org/all/5c19e4ef-c4fd-4bf5-88b3-46c86751b14e@samsung.com/
> >>
> >> Probably a comment about that could be added directly to this code to
> >> avoid such conversion and breakage in the future.
> > I am planning to revisit this in the future and am hoping that we can
> > figure out what goes wrong when using regmap_read_poll_timeout().
> >
> > Hopefully such a comment would only be short-lived, so maybe not really
> > worth it? I can add it, though, if you prefer.
>
> Well, I think I've already pointed what goes wrong with
> regmap_read_poll_timeout() in the above mentioned thread. You would need
> to use regmap_read_poll_timeout_atomic() and modify it the same way as
> commit 7349a69cf312 did for read_poll_timeout_atomic().
Thanks a lot for bringing this to our attention!
To me, it looks like the regmap helpers should really use
readx_poll_timeout_atomic, rather than open-coding the loop from the
regular iopoll helpers.
Kind regards
Uffe
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd
2026-03-18 15:27 ` [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd André Draszik
@ 2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-30 10:52 ` André Draszik
0 siblings, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-21 13:16 UTC (permalink / raw)
To: André Draszik
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown,
Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm
On Wed, 18 Mar 2026 15:27:47 +0000, André Draszik <andre.draszik@linaro.org> wrote:
> diff --git a/Documentation/devicetree/bindings/power/pd-samsung.yaml b/Documentation/devicetree/bindings/power/pd-samsung.yaml
> index 9c2c51133457..3f1a2dc17862 100644
> --- a/Documentation/devicetree/bindings/power/pd-samsung.yaml
> +++ b/Documentation/devicetree/bindings/power/pd-samsung.yaml
> @@ -44,11 +45,28 @@ properties:
> power-domains:
> maxItems: 1
>
> + samsung,dtzpc:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + Distributed TrustZone Protection Control (DTZPC) node.
For what purpose?
Your patchset is organized in odd way - first patch for me, then not for
me, then again two patches for me. Please keep it consistent. Or better,
decouple since there are no dependencies according to cover letter.
Best regards,
Krzysztof
--
Krzysztof Kozlowski <krzk@kernel.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-18 15:27 ` [PATCH v8 05/10] pmdomain: samsung: convert to using regmap André Draszik
2026-03-19 10:13 ` Ulf Hansson
@ 2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-30 10:53 ` André Draszik
1 sibling, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-21 13:16 UTC (permalink / raw)
To: André Draszik
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown,
Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, Marek Szyprowski
On Wed, 18 Mar 2026 15:27:50 +0000, André Draszik <andre.draszik@linaro.org> wrote:
> diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
> index 5c3aa8983087..68b1e7ba8729 100644
> --- a/drivers/pmdomain/samsung/exynos-pm-domains.c
> +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
> @@ -120,9 +140,26 @@ static int exynos_pd_probe(struct platform_device *pdev)
> [ ... skip 20 lines ... ]
> +
> + reg_config.max_register = resource_size(res) - reg_config.reg_stride;
> + pd->regmap = devm_regmap_init_mmio(dev, base, ®_config);
> + if (IS_ERR(pd->regmap))
> + return dev_err_probe(dev, PTR_ERR(base),
> + "failed to init regmap\n");
PTR_ERR(pd->regmap)
--
Krzysztof Kozlowski <krzk@kernel.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd
2026-03-18 15:27 ` [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd André Draszik
@ 2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-30 10:55 ` André Draszik
0 siblings, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-21 13:16 UTC (permalink / raw)
To: André Draszik
Cc: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown,
Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, Marek Szyprowski
On Wed, 18 Mar 2026 15:27:52 +0000, André Draszik <andre.draszik@linaro.org> wrote:
> On Google gs101, direct mmio register access to the PMU registers
> doesn't work and access must happen via a regmap created by the PMU
> driver instead.
>
> Add a flag to the device match data to denote this case, and obtain
> the regmap using the parent node in DT if true, while keeping to use
> the traditional direct mmio regmap otherwise.
>
> Additionally, the status is just one bit on gs101.
>
> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: André Draszik <andre.draszik@linaro.org>
There are few reviews from Sashiko which seem legitimate. Please check
them. If they are false positives, just reply that you carefully went
through them.
--
Krzysztof Kozlowski <krzk@kernel.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
` (9 preceding siblings ...)
2026-03-18 15:27 ` [PATCH v8 10/10] pmdomain: samsung: implement domain-supply regulator André Draszik
@ 2026-03-21 13:17 ` Krzysztof Kozlowski
2026-03-23 11:13 ` Ulf Hansson
10 siblings, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-21 13:17 UTC (permalink / raw)
To: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, André Draszik
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm, Marek Szyprowski
On Wed, 18 Mar 2026 15:27:45 +0000, André Draszik wrote:
> This series adds support for the power domains on Google GS101.
>
> There are a few differences compared to SoCs already supported by this
> driver:
> * register access does not work via plain ioremap() / readl() /
> writel().
> Instead, the regmap created by the PMU driver must be used (which
> uses Arm SMCC calls under the hood).
> * DTZPC: a call needs to be made before and after power domain off/on,
> to inform the EL3 firmware of the request.
> * power domains can and are fed by a regulator rail and therefore
> regulator control needed be implemented.
>
> [...]
Applied, thanks!
[01/10] dt-bindings: soc: google: add google,gs101-dtzpc
https://git.kernel.org/krzk/linux/c/10084aeadadfab72648f6ed1cc78f7cd87b861ba
[03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
https://git.kernel.org/krzk/linux/c/3ec3c42b426fe5e2b48ff19c551dec50bc78788c
[04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
https://git.kernel.org/krzk/linux/c/c8229a5160eea145b796f54317d6e659cec9b080
Best regards,
--
Krzysztof Kozlowski <krzk@kernel.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
2026-03-18 15:27 ` [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children André Draszik
@ 2026-03-21 19:14 ` Krzysztof Kozlowski
2026-03-30 12:00 ` André Draszik
2026-03-22 23:08 ` Rob Herring (Arm)
1 sibling, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-21 19:14 UTC (permalink / raw)
To: André Draszik, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm
On 18/03/2026 16:27, André Draszik wrote:
> The power domains are a property of / implemented in the PMU. As such,
> they should be modelled as child nodes of the PMU.
>
> Note:
> Because the properties added are 'required', this commit breaks DT
> validation of the existing DT for Pixel 6, but a) that's simply because
> the DT is incomplete and b) a DT update will be posted once the binding
> is accepted.
> It is not possible to write the binding such that it supports old
> (incomplete) DTs in addition to the full version, but as per above
> it's not required to keep supporting old DTs.
>
> Signed-off-by: André Draszik <andre.draszik@linaro.org>
> ---
> v8:
> - move comment from commit message footer into body (Rob)
> - fix incorrect use of ranges in example (Rob)
>
> v7:
> - really be consistent with quoting (Krzysztof)
> - drop invalid tested-by tag (Krzysztof)
>
> v4:
> - consistent quoting using " (Krzysztof)
> - add samsung,dtzpc to example
> ---
> .../bindings/soc/google/google,gs101-pmu.yaml | 41 ++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
> index a06bd8ec3c20..52c47252b801 100644
> --- a/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
> +++ b/Documentation/devicetree/bindings/soc/google/google,gs101-pmu.yaml
> @@ -16,6 +16,14 @@ properties:
> reg:
> maxItems: 1
>
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 1
> +
> + ranges: true
> +
> reboot-mode:
> $ref: /schemas/power/reset/syscon-reboot-mode.yaml
> type: object
> @@ -39,9 +47,23 @@ properties:
> description:
> Phandle to PMU interrupt generation interface.
>
> +patternProperties:
> + "^power-domain@[0-9a-f]+$":
> + type: object
> + description: Child node describing one power domain within the PMU
> +
> + additionalProperties: true
> +
> + properties:
> + compatible:
> + const: google,gs101-pd
> +
> required:
> - compatible
> - reg
> + - "#address-cells"
> + - "#size-cells"
> + - ranges
This causes warnings, so I dropped the patches. I really do not
understand how this is organized. This is not a dependency for pm
domains driver but it is included here. It is a soft dependency for DTS,
but that is nowhere to be found.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
2026-03-18 15:27 ` [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children André Draszik
2026-03-21 19:14 ` Krzysztof Kozlowski
@ 2026-03-22 23:08 ` Rob Herring (Arm)
1 sibling, 0 replies; 36+ messages in thread
From: Rob Herring (Arm) @ 2026-03-22 23:08 UTC (permalink / raw)
To: André Draszik
Cc: Ulf Hansson, Conor Dooley, Krzysztof Kozlowski,
Krzysztof Kozlowski, devicetree, Peter Griffin, Will McVicker,
Mark Brown, kernel-team, Alim Akhtar, Liam Girdwood,
linux-samsung-soc, linux-kernel, linux-pm, linux-arm-kernel,
Tudor Ambarus, Juan Yescas
On Wed, 18 Mar 2026 15:27:49 +0000, André Draszik wrote:
> The power domains are a property of / implemented in the PMU. As such,
> they should be modelled as child nodes of the PMU.
>
> Note:
> Because the properties added are 'required', this commit breaks DT
> validation of the existing DT for Pixel 6, but a) that's simply because
> the DT is incomplete and b) a DT update will be posted once the binding
> is accepted.
> It is not possible to write the binding such that it supports old
> (incomplete) DTs in addition to the full version, but as per above
> it's not required to keep supporting old DTs.
>
> Signed-off-by: André Draszik <andre.draszik@linaro.org>
> ---
> v8:
> - move comment from commit message footer into body (Rob)
> - fix incorrect use of ranges in example (Rob)
>
> v7:
> - really be consistent with quoting (Krzysztof)
> - drop invalid tested-by tag (Krzysztof)
>
> v4:
> - consistent quoting using " (Krzysztof)
> - add samsung,dtzpc to example
> ---
> .../bindings/soc/google/google,gs101-pmu.yaml | 41 ++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-21 13:17 ` (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 Krzysztof Kozlowski
@ 2026-03-23 11:13 ` Ulf Hansson
2026-03-30 9:54 ` Krzysztof Kozlowski
0 siblings, 1 reply; 36+ messages in thread
From: Ulf Hansson @ 2026-03-23 11:13 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Liam Girdwood, Mark Brown, André Draszik, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
Hi Krzysztof,
On Sat, 21 Mar 2026 at 14:18, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
>
> On Wed, 18 Mar 2026 15:27:45 +0000, André Draszik wrote:
> > This series adds support for the power domains on Google GS101.
> >
> > There are a few differences compared to SoCs already supported by this
> > driver:
> > * register access does not work via plain ioremap() / readl() /
> > writel().
> > Instead, the regmap created by the PMU driver must be used (which
> > uses Arm SMCC calls under the hood).
> > * DTZPC: a call needs to be made before and after power domain off/on,
> > to inform the EL3 firmware of the request.
> > * power domains can and are fed by a regulator rail and therefore
> > regulator control needed be implemented.
> >
> > [...]
>
> Applied, thanks!
>
> [01/10] dt-bindings: soc: google: add google,gs101-dtzpc
> https://git.kernel.org/krzk/linux/c/10084aeadadfab72648f6ed1cc78f7cd87b861ba
> [03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
> https://git.kernel.org/krzk/linux/c/3ec3c42b426fe5e2b48ff19c551dec50bc78788c
> [04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
> https://git.kernel.org/krzk/linux/c/c8229a5160eea145b796f54317d6e659cec9b080
>
> Best regards,
Usually I pick up the power-domain related changes for the DT bindings
and host them via an immutable branch called "dt". If needed, SOC
maintainers can pull it to apply/test the corresponding DTS changes.
That said, I am open to whatever you think is best here. Perhaps it's
easier if you can drop the DT patches and provide your acks instead or
if you can share them via an immutable branch for me to pull?
Kind regards
Uffe
> --
> Krzysztof Kozlowski <krzk@kernel.org>
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-23 11:13 ` Ulf Hansson
@ 2026-03-30 9:54 ` Krzysztof Kozlowski
2026-03-30 10:13 ` Ulf Hansson
0 siblings, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-30 9:54 UTC (permalink / raw)
To: Ulf Hansson
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Liam Girdwood, Mark Brown, André Draszik, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On 23/03/2026 12:13, Ulf Hansson wrote:
> Hi Krzysztof,
>
> On Sat, 21 Mar 2026 at 14:18, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>
>>
>> On Wed, 18 Mar 2026 15:27:45 +0000, André Draszik wrote:
>>> This series adds support for the power domains on Google GS101.
>>>
>>> There are a few differences compared to SoCs already supported by this
>>> driver:
>>> * register access does not work via plain ioremap() / readl() /
>>> writel().
>>> Instead, the regmap created by the PMU driver must be used (which
>>> uses Arm SMCC calls under the hood).
>>> * DTZPC: a call needs to be made before and after power domain off/on,
>>> to inform the EL3 firmware of the request.
>>> * power domains can and are fed by a regulator rail and therefore
>>> regulator control needed be implemented.
>>>
>>> [...]
>>
>> Applied, thanks!
>>
>> [01/10] dt-bindings: soc: google: add google,gs101-dtzpc
>> https://git.kernel.org/krzk/linux/c/10084aeadadfab72648f6ed1cc78f7cd87b861ba
>> [03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
>> https://git.kernel.org/krzk/linux/c/3ec3c42b426fe5e2b48ff19c551dec50bc78788c
>> [04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
>> https://git.kernel.org/krzk/linux/c/c8229a5160eea145b796f54317d6e659cec9b080
>>
>> Best regards,
>
> Usually I pick up the power-domain related changes for the DT bindings
> and host them via an immutable branch called "dt". If needed, SOC
> maintainers can pull it to apply/test the corresponding DTS changes.
>
> That said, I am open to whatever you think is best here. Perhaps it's
> easier if you can drop the DT patches and provide your acks instead or
> if you can share them via an immutable branch for me to pull?
I did not pick up any pmdomain binding patches. I picked up only soc and
according to cover letter there are no dependencies between anything here.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-30 9:54 ` Krzysztof Kozlowski
@ 2026-03-30 10:13 ` Ulf Hansson
2026-03-30 10:17 ` Krzysztof Kozlowski
0 siblings, 1 reply; 36+ messages in thread
From: Ulf Hansson @ 2026-03-30 10:13 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Liam Girdwood, Mark Brown, André Draszik, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On Mon, 30 Mar 2026 at 11:54, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 23/03/2026 12:13, Ulf Hansson wrote:
> > Hi Krzysztof,
> >
> > On Sat, 21 Mar 2026 at 14:18, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>
> >>
> >> On Wed, 18 Mar 2026 15:27:45 +0000, André Draszik wrote:
> >>> This series adds support for the power domains on Google GS101.
> >>>
> >>> There are a few differences compared to SoCs already supported by this
> >>> driver:
> >>> * register access does not work via plain ioremap() / readl() /
> >>> writel().
> >>> Instead, the regmap created by the PMU driver must be used (which
> >>> uses Arm SMCC calls under the hood).
> >>> * DTZPC: a call needs to be made before and after power domain off/on,
> >>> to inform the EL3 firmware of the request.
> >>> * power domains can and are fed by a regulator rail and therefore
> >>> regulator control needed be implemented.
> >>>
> >>> [...]
> >>
> >> Applied, thanks!
> >>
> >> [01/10] dt-bindings: soc: google: add google,gs101-dtzpc
> >> https://git.kernel.org/krzk/linux/c/10084aeadadfab72648f6ed1cc78f7cd87b861ba
> >> [03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
> >> https://git.kernel.org/krzk/linux/c/3ec3c42b426fe5e2b48ff19c551dec50bc78788c
> >> [04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
> >> https://git.kernel.org/krzk/linux/c/c8229a5160eea145b796f54317d6e659cec9b080
> >>
> >> Best regards,
> >
> > Usually I pick up the power-domain related changes for the DT bindings
> > and host them via an immutable branch called "dt". If needed, SOC
> > maintainers can pull it to apply/test the corresponding DTS changes.
> >
> > That said, I am open to whatever you think is best here. Perhaps it's
> > easier if you can drop the DT patches and provide your acks instead or
> > if you can share them via an immutable branch for me to pull?
>
>
> I did not pick up any pmdomain binding patches. I picked up only soc and
> according to cover letter there are no dependencies between anything here.
As I understand it, they are all related and some even depend on each
other. I think keeping all four DT patches together makes sense.
Although, as I said, if you think it's best to funnel them through
your tree, please do and then share them via an immutable branch, so I
can apply the pmdomain driver changes.
Kind regards
Uffe
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-30 10:13 ` Ulf Hansson
@ 2026-03-30 10:17 ` Krzysztof Kozlowski
2026-03-30 11:12 ` Ulf Hansson
0 siblings, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-30 10:17 UTC (permalink / raw)
To: Ulf Hansson
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Liam Girdwood, Mark Brown, André Draszik, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On 30/03/2026 12:13, Ulf Hansson wrote:
> On Mon, 30 Mar 2026 at 11:54, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>
>> On 23/03/2026 12:13, Ulf Hansson wrote:
>>> Hi Krzysztof,
>>>
>>> On Sat, 21 Mar 2026 at 14:18, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>
>>>>
>>>> On Wed, 18 Mar 2026 15:27:45 +0000, André Draszik wrote:
>>>>> This series adds support for the power domains on Google GS101.
>>>>>
>>>>> There are a few differences compared to SoCs already supported by this
>>>>> driver:
>>>>> * register access does not work via plain ioremap() / readl() /
>>>>> writel().
>>>>> Instead, the regmap created by the PMU driver must be used (which
>>>>> uses Arm SMCC calls under the hood).
>>>>> * DTZPC: a call needs to be made before and after power domain off/on,
>>>>> to inform the EL3 firmware of the request.
>>>>> * power domains can and are fed by a regulator rail and therefore
>>>>> regulator control needed be implemented.
>>>>>
>>>>> [...]
>>>>
>>>> Applied, thanks!
>>>>
>>>> [01/10] dt-bindings: soc: google: add google,gs101-dtzpc
>>>> https://git.kernel.org/krzk/linux/c/10084aeadadfab72648f6ed1cc78f7cd87b861ba
>>>> [03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
>>>> https://git.kernel.org/krzk/linux/c/3ec3c42b426fe5e2b48ff19c551dec50bc78788c
>>>> [04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
>>>> https://git.kernel.org/krzk/linux/c/c8229a5160eea145b796f54317d6e659cec9b080
>>>>
>>>> Best regards,
>>>
>>> Usually I pick up the power-domain related changes for the DT bindings
>>> and host them via an immutable branch called "dt". If needed, SOC
>>> maintainers can pull it to apply/test the corresponding DTS changes.
>>>
>>> That said, I am open to whatever you think is best here. Perhaps it's
>>> easier if you can drop the DT patches and provide your acks instead or
>>> if you can share them via an immutable branch for me to pull?
>>
>>
>> I did not pick up any pmdomain binding patches. I picked up only soc and
>> according to cover letter there are no dependencies between anything here.
>
> As I understand it, they are all related and some even depend on each
I raised exactly that questions but no answers.
> other. I think keeping all four DT patches together makes sense.
Why? What is the dependency?
>
> Although, as I said, if you think it's best to funnel them through
> your tree, please do and then share them via an immutable branch, so I
> can apply the pmdomain driver changes.
soc must go via my tree, but there is no reason to take the pmdomain
binding patch. So I did not take.
But anyway, I just noticed that I dropped everything: this introduces
new warnings which were nowhere addressed or explained. So regardless
how this should go, please do not apply anything - it's broken and
author is silent.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd
2026-03-21 13:16 ` Krzysztof Kozlowski
@ 2026-03-30 10:52 ` André Draszik
2026-03-30 10:55 ` Krzysztof Kozlowski
0 siblings, 1 reply; 36+ messages in thread
From: André Draszik @ 2026-03-30 10:52 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
Hi Krzysztof,
On Sat, 2026-03-21 at 14:16 +0100, Krzysztof Kozlowski wrote:
> On Wed, 18 Mar 2026 15:27:47 +0000, André Draszik <andre.draszik@linaro.org> wrote:
> > diff --git a/Documentation/devicetree/bindings/power/pd-samsung.yaml b/Documentation/devicetree/bindings/power/pd-samsung.yaml
> > index 9c2c51133457..3f1a2dc17862 100644
> > --- a/Documentation/devicetree/bindings/power/pd-samsung.yaml
> > +++ b/Documentation/devicetree/bindings/power/pd-samsung.yaml
> > @@ -44,11 +45,28 @@ properties:
> > power-domains:
> > maxItems: 1
> >
> > + samsung,dtzpc:
> > + $ref: /schemas/types.yaml#/definitions/phandle
> > + description:
> > + Distributed TrustZone Protection Control (DTZPC) node.
>
> For what purpose?
It is part of the domain.
Furthermore, TZ configuration is lost as part of power-domain power
cycle, so this allows a driver to take necessary actions (inform the
EL3 firmware). I believe this handle to be similar to e.g. the existing
samsung,sysreg
> Your patchset is organized in odd way - first patch for me, then not for
> me, then again two patches for me. Please keep it consistent. Or better,
> decouple since there are no dependencies according to cover letter.
I'll update the cover letter to describe the dependencies. 4 depends on 2,
and 2 depends on 1, hence the ordering.
Cheers,
Andre
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 05/10] pmdomain: samsung: convert to using regmap
2026-03-21 13:16 ` Krzysztof Kozlowski
@ 2026-03-30 10:53 ` André Draszik
0 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-30 10:53 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On Sat, 2026-03-21 at 14:16 +0100, Krzysztof Kozlowski wrote:
> On Wed, 18 Mar 2026 15:27:50 +0000, André Draszik <andre.draszik@linaro.org> wrote:
> > diff --git a/drivers/pmdomain/samsung/exynos-pm-domains.c b/drivers/pmdomain/samsung/exynos-pm-domains.c
> > index 5c3aa8983087..68b1e7ba8729 100644
> > --- a/drivers/pmdomain/samsung/exynos-pm-domains.c
> > +++ b/drivers/pmdomain/samsung/exynos-pm-domains.c
> > @@ -120,9 +140,26 @@ static int exynos_pd_probe(struct platform_device *pdev)
> > [ ... skip 20 lines ... ]
> > +
> > + reg_config.max_register = resource_size(res) - reg_config.reg_stride;
> > + pd->regmap = devm_regmap_init_mmio(dev, base, ®_config);
> > + if (IS_ERR(pd->regmap))
> > + return dev_err_probe(dev, PTR_ERR(base),
> > + "failed to init regmap\n");
>
> PTR_ERR(pd->regmap)
Thanks!
A.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd
2026-03-30 10:52 ` André Draszik
@ 2026-03-30 10:55 ` Krzysztof Kozlowski
2026-03-30 10:59 ` André Draszik
0 siblings, 1 reply; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-30 10:55 UTC (permalink / raw)
To: André Draszik
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
On 30/03/2026 12:52, André Draszik wrote:
>> Your patchset is organized in odd way - first patch for me, then not for
>> me, then again two patches for me. Please keep it consistent. Or better,
>> decouple since there are no dependencies according to cover letter.
>
> I'll update the cover letter to describe the dependencies. 4 depends on 2,
How 4 (soc) patch depends on 2 (pm domains)? What is exactly the dependency?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd
2026-03-21 13:16 ` Krzysztof Kozlowski
@ 2026-03-30 10:55 ` André Draszik
0 siblings, 0 replies; 36+ messages in thread
From: André Draszik @ 2026-03-30 10:55 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On Sat, 2026-03-21 at 14:16 +0100, Krzysztof Kozlowski wrote:
> On Wed, 18 Mar 2026 15:27:52 +0000, André Draszik <andre.draszik@linaro.org> wrote:
> > On Google gs101, direct mmio register access to the PMU registers
> > doesn't work and access must happen via a regmap created by the PMU
> > driver instead.
> >
> > Add a flag to the device match data to denote this case, and obtain
> > the regmap using the parent node in DT if true, while keeping to use
> > the traditional direct mmio regmap otherwise.
> >
> > Additionally, the status is just one bit on gs101.
> >
> > Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
> > Signed-off-by: André Draszik <andre.draszik@linaro.org>
>
> There are few reviews from Sashiko which seem legitimate. Please check
> them. If they are false positives, just reply that you carefully went
> through them.
Thanks for pointing out Sashiko, seems like a useful tool! I'll go
through it.
A.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd
2026-03-30 10:55 ` Krzysztof Kozlowski
@ 2026-03-30 10:59 ` André Draszik
2026-03-30 11:03 ` Krzysztof Kozlowski
0 siblings, 1 reply; 36+ messages in thread
From: André Draszik @ 2026-03-30 10:59 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
On Mon, 2026-03-30 at 12:55 +0200, Krzysztof Kozlowski wrote:
> On 30/03/2026 12:52, André Draszik wrote:
> > > Your patchset is organized in odd way - first patch for me, then not for
> > > me, then again two patches for me. Please keep it consistent. Or better,
> > > decouple since there are no dependencies according to cover letter.
> >
> > I'll update the cover letter to describe the dependencies. 4 depends on 2,
>
>
> How 4 (soc) patch depends on 2 (pm domains)? What is exactly the dependency?
4 updates the soc-level pmu binding of gs101 to have gs101-power-domain
child-nodes, which are introduced in 2
A.
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd
2026-03-30 10:59 ` André Draszik
@ 2026-03-30 11:03 ` Krzysztof Kozlowski
0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-30 11:03 UTC (permalink / raw)
To: André Draszik
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Ulf Hansson, Liam Girdwood, Mark Brown, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm
On 30/03/2026 12:59, André Draszik wrote:
> On Mon, 2026-03-30 at 12:55 +0200, Krzysztof Kozlowski wrote:
>> On 30/03/2026 12:52, André Draszik wrote:
>>>> Your patchset is organized in odd way - first patch for me, then not for
>>>> me, then again two patches for me. Please keep it consistent. Or better,
>>>> decouple since there are no dependencies according to cover letter.
>>>
>>> I'll update the cover letter to describe the dependencies. 4 depends on 2,
>>
>>
>> How 4 (soc) patch depends on 2 (pm domains)? What is exactly the dependency?
>
> 4 updates the soc-level pmu binding of gs101 to have gs101-power-domain
> child-nodes, which are introduced in 2
>
You described what the patch is doing, but that was not my question.
What is the dependency exactly.
This is ping pong, so I finish discussions here, but to be clear -
entire patchset cannot be merged.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-30 10:17 ` Krzysztof Kozlowski
@ 2026-03-30 11:12 ` Ulf Hansson
2026-03-30 11:24 ` Krzysztof Kozlowski
0 siblings, 1 reply; 36+ messages in thread
From: Ulf Hansson @ 2026-03-30 11:12 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Liam Girdwood, Mark Brown, André Draszik, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On Mon, 30 Mar 2026 at 12:17, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 30/03/2026 12:13, Ulf Hansson wrote:
> > On Mon, 30 Mar 2026 at 11:54, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>
> >> On 23/03/2026 12:13, Ulf Hansson wrote:
> >>> Hi Krzysztof,
> >>>
> >>> On Sat, 21 Mar 2026 at 14:18, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>>>
> >>>>
> >>>> On Wed, 18 Mar 2026 15:27:45 +0000, André Draszik wrote:
> >>>>> This series adds support for the power domains on Google GS101.
> >>>>>
> >>>>> There are a few differences compared to SoCs already supported by this
> >>>>> driver:
> >>>>> * register access does not work via plain ioremap() / readl() /
> >>>>> writel().
> >>>>> Instead, the regmap created by the PMU driver must be used (which
> >>>>> uses Arm SMCC calls under the hood).
> >>>>> * DTZPC: a call needs to be made before and after power domain off/on,
> >>>>> to inform the EL3 firmware of the request.
> >>>>> * power domains can and are fed by a regulator rail and therefore
> >>>>> regulator control needed be implemented.
> >>>>>
> >>>>> [...]
> >>>>
> >>>> Applied, thanks!
> >>>>
> >>>> [01/10] dt-bindings: soc: google: add google,gs101-dtzpc
> >>>> https://git.kernel.org/krzk/linux/c/10084aeadadfab72648f6ed1cc78f7cd87b861ba
> >>>> [03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding
> >>>> https://git.kernel.org/krzk/linux/c/3ec3c42b426fe5e2b48ff19c551dec50bc78788c
> >>>> [04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
> >>>> https://git.kernel.org/krzk/linux/c/c8229a5160eea145b796f54317d6e659cec9b080
> >>>>
> >>>> Best regards,
> >>>
> >>> Usually I pick up the power-domain related changes for the DT bindings
> >>> and host them via an immutable branch called "dt". If needed, SOC
> >>> maintainers can pull it to apply/test the corresponding DTS changes.
> >>>
> >>> That said, I am open to whatever you think is best here. Perhaps it's
> >>> easier if you can drop the DT patches and provide your acks instead or
> >>> if you can share them via an immutable branch for me to pull?
> >>
> >>
> >> I did not pick up any pmdomain binding patches. I picked up only soc and
> >> according to cover letter there are no dependencies between anything here.
> >
> > As I understand it, they are all related and some even depend on each
>
> I raised exactly that questions but no answers.
>
> > other. I think keeping all four DT patches together makes sense.
>
> Why? What is the dependency?
I defer to André to clarify this for us.
>
> >
> > Although, as I said, if you think it's best to funnel them through
> > your tree, please do and then share them via an immutable branch, so I
> > can apply the pmdomain driver changes.
>
> soc must go via my tree, but there is no reason to take the pmdomain
> binding patch. So I did not take.
Yes, they belong to soc/platform, which is common for most
power-domain providers.
To allow us to merge/maintain power-domain provider *driver* changes
separately, we needed a way to manage the corresponding DT bindings.
That's why I am hosting the immutable "dt" branch for these, which
soc/platform maintainers can pull-in when they need it.
Of course, doing it the other way around is also possible. Just let me
know what you prefer.
>
> But anyway, I just noticed that I dropped everything: this introduces
> new warnings which were nowhere addressed or explained. So regardless
> how this should go, please do not apply anything - it's broken and
> author is silent.
Right, I will await your confirmation!
Kind regards
Uffe
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101
2026-03-30 11:12 ` Ulf Hansson
@ 2026-03-30 11:24 ` Krzysztof Kozlowski
0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-30 11:24 UTC (permalink / raw)
To: Ulf Hansson
Cc: Alim Akhtar, Rob Herring, Conor Dooley, Krzysztof Kozlowski,
Liam Girdwood, Mark Brown, André Draszik, Peter Griffin,
Tudor Ambarus, Juan Yescas, Will McVicker, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
linux-pm, Marek Szyprowski
On 30/03/2026 13:12, Ulf Hansson wrote:
>
>>
>>>
>>> Although, as I said, if you think it's best to funnel them through
>>> your tree, please do and then share them via an immutable branch, so I
>>> can apply the pmdomain driver changes.
>>
>> soc must go via my tree, but there is no reason to take the pmdomain
>> binding patch. So I did not take.
>
> Yes, they belong to soc/platform, which is common for most
> power-domain providers.
What does belong to soc/platform? pmdomain changes? No, they do not...
>
> To allow us to merge/maintain power-domain provider *driver* changes
> separately, we needed a way to manage the corresponding DT bindings.
Nothing stops that, there is no dependency. For a week I am saying there
are no dependencies. If there are, please provide any sort of
argument/proof, otherwise there is nothing to do here.
> That's why I am hosting the immutable "dt" branch for these, which
> soc/platform maintainers can pull-in when they need it.
>
> Of course, doing it the other way around is also possible. Just let me
> know what you prefer.
Nothing like that is necessary.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
2026-03-21 19:14 ` Krzysztof Kozlowski
@ 2026-03-30 12:00 ` André Draszik
2026-03-30 12:10 ` Krzysztof Kozlowski
0 siblings, 1 reply; 36+ messages in thread
From: André Draszik @ 2026-03-30 12:00 UTC (permalink / raw)
To: Krzysztof Kozlowski, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm
On Sat, 2026-03-21 at 20:14 +0100, Krzysztof Kozlowski wrote:
>
> This causes warnings, so I dropped the patches.
I assume warnings are because I didn't make it clear enough that patch
2 is actually required?
> I really do not
> understand how this is organized. This is not a dependency for pm
> domains driver but it is included here.
The binding is being updated, and the driver follows suit.
I particular, the driver needs to be aware that pd is (can be) a child
of pmu.
Yes, the driver does not depend on this binding update, but it shows what
the driver must support. I believe this is what we have done in the past:
binding and driver updates in same series.
I could move patches 3 and 4 from this series together with a DTS
update patch into a separate series, if that would be deemed a better
approach?
> It is a soft dependency for DTS,
> but that is nowhere to be found.
I was waiting for review of all binding changes before posting DTS.
Cheers,
Andre'
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children
2026-03-30 12:00 ` André Draszik
@ 2026-03-30 12:10 ` Krzysztof Kozlowski
0 siblings, 0 replies; 36+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-30 12:10 UTC (permalink / raw)
To: André Draszik, Alim Akhtar, Rob Herring, Conor Dooley,
Krzysztof Kozlowski, Ulf Hansson, Liam Girdwood, Mark Brown
Cc: Peter Griffin, Tudor Ambarus, Juan Yescas, Will McVicker,
kernel-team, linux-arm-kernel, linux-samsung-soc, devicetree,
linux-kernel, linux-pm
On 30/03/2026 14:00, André Draszik wrote:
> On Sat, 2026-03-21 at 20:14 +0100, Krzysztof Kozlowski wrote:
>>
>> This causes warnings, so I dropped the patches.
>
> I assume warnings are because I didn't make it clear enough that patch
> 2 is actually required?
No, these are obvious errors coming from bindings. You can try yourself
instead of asking maintainer to run the commands for you...
>
>> I really do not
>> understand how this is organized. This is not a dependency for pm
>> domains driver but it is included here.
>
> The binding is being updated, and the driver follows suit.
> I particular, the driver needs to be aware that pd is (can be) a child
> of pmu.
>
> Yes, the driver does not depend on this binding update, but it shows what
> the driver must support. I believe this is what we have done in the past:
> binding and driver updates in same series.
Yes, foo-binding goes with foo-driver to foo-subsystem. It does not mean
you put here completely different bindings. Why? Because just like foo
goes to foo-subsystem, then bar-binding goes with bar-driver to
bar-subsystem.
>
> I could move patches 3 and 4 from this series together with a DTS
> update patch into a separate series, if that would be deemed a better
> approach?
I asked you what are the dependencies and you answer there are some but
you can move it outside of patchset. So are there or are there not
dependencies? If there are, then you cannot move out. But then I ask
what are the dependencies.
It feels like question to trick the maintainer. Maintainer complained,
so you propose whatever he objected to without understanding whether
this is correct or not correct approach.
>
>> It is a soft dependency for DTS,
>> but that is nowhere to be found.
>
> I was waiting for review of all binding changes before posting DTS.
That would be fine explanation, if you also read maintainer soc profile
for Samsung and try what is written there. You would see that you
introduced new warnings without any fix possible as far as next is
concerned.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2026-03-30 12:11 UTC | newest]
Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-18 15:27 [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 André Draszik
2026-03-18 15:27 ` [PATCH v8 01/10] dt-bindings: soc: google: add google,gs101-dtzpc André Draszik
2026-03-18 15:27 ` [PATCH v8 02/10] dt-bindings: power: samsung: add google,gs101-pd André Draszik
2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-30 10:52 ` André Draszik
2026-03-30 10:55 ` Krzysztof Kozlowski
2026-03-30 10:59 ` André Draszik
2026-03-30 11:03 ` Krzysztof Kozlowski
2026-03-18 15:27 ` [PATCH v8 03/10] dt-bindings: soc: samsung: exynos-pmu: move gs101-pmu into separate binding André Draszik
2026-03-18 15:27 ` [PATCH v8 04/10] dt-bindings: soc: google: gs101-pmu: allow power domains as children André Draszik
2026-03-21 19:14 ` Krzysztof Kozlowski
2026-03-30 12:00 ` André Draszik
2026-03-30 12:10 ` Krzysztof Kozlowski
2026-03-22 23:08 ` Rob Herring (Arm)
2026-03-18 15:27 ` [PATCH v8 05/10] pmdomain: samsung: convert to using regmap André Draszik
2026-03-19 10:13 ` Ulf Hansson
2026-03-19 10:29 ` Marek Szyprowski
2026-03-19 11:58 ` André Draszik
2026-03-19 15:57 ` Marek Szyprowski
2026-03-19 16:42 ` Ulf Hansson
2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-30 10:53 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 06/10] pmdomain: samsung: don't hard-code offset for registers to 0 and 4 André Draszik
2026-03-18 15:27 ` [PATCH v8 07/10] pmdomain: samsung: add support for google,gs101-pd André Draszik
2026-03-21 13:16 ` Krzysztof Kozlowski
2026-03-30 10:55 ` André Draszik
2026-03-18 15:27 ` [PATCH v8 08/10] pmdomain: samsung: use dev_err() instead of pr_err() André Draszik
2026-03-18 15:27 ` [PATCH v8 09/10] pmdomain: samsung: implement SMC to save / restore TZ config André Draszik
2026-03-18 15:27 ` [PATCH v8 10/10] pmdomain: samsung: implement domain-supply regulator André Draszik
2026-03-21 13:17 ` (subset) [PATCH v8 00/10] pmdomain: samsung: add support for Google GS101 Krzysztof Kozlowski
2026-03-23 11:13 ` Ulf Hansson
2026-03-30 9:54 ` Krzysztof Kozlowski
2026-03-30 10:13 ` Ulf Hansson
2026-03-30 10:17 ` Krzysztof Kozlowski
2026-03-30 11:12 ` Ulf Hansson
2026-03-30 11:24 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox