Commit d2334a91 authored by Ulf Hansson's avatar Ulf Hansson Committed by Rob Herring

dt-bindings: arm: Fixup the DT bindings for hierarchical PSCI states

The hierarchical topology with power-domain should be described through
child nodes, rather than as currently described in the PSCI root node. Fix
this by adding a patternProperties with a corresponding reference to the
power-domain DT binding.

Additionally, update the example to conform to the new pattern, but also to
the adjusted domain-idle-state DT binding.

Fixes: a3f048b5 ("dt: psci: Update DT bindings to support hierarchical PSCI states")
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
[robh: Add missing allOf, tweak power-domain node name]
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 14ee09a0
...@@ -102,11 +102,12 @@ properties: ...@@ -102,11 +102,12 @@ properties:
[1] Kernel documentation - ARM idle states bindings [1] Kernel documentation - ARM idle states bindings
Documentation/devicetree/bindings/arm/idle-states.yaml Documentation/devicetree/bindings/arm/idle-states.yaml
"#power-domain-cells": patternProperties:
description: "^power-domain-":
The number of cells in a PM domain specifier as per binding in [3]. allOf:
Must be 0 as to represent a single PM domain. - $ref: "../power/power-domain.yaml#"
type: object
description: |
ARM systems can have multiple cores, sometimes in an hierarchical ARM systems can have multiple cores, sometimes in an hierarchical
arrangement. This often, but not always, maps directly to the processor arrangement. This often, but not always, maps directly to the processor
power topology of the system. Individual nodes in a topology have their power topology of the system. Individual nodes in a topology have their
...@@ -122,15 +123,9 @@ properties: ...@@ -122,15 +123,9 @@ properties:
helps to implement support for OSI mode and OS implementations may choose helps to implement support for OSI mode and OS implementations may choose
to mandate it. to mandate it.
[3] Documentation/devicetree/bindings/power/power_domain.txt [3] Documentation/devicetree/bindings/power/power-domain.yaml
[4] Documentation/devicetree/bindings/power/domain-idle-state.yaml [4] Documentation/devicetree/bindings/power/domain-idle-state.yaml
power-domains:
$ref: '/schemas/types.yaml#/definitions/phandle-array'
description:
List of phandles and PM domain specifiers, as defined by bindings of the
PM domain provider.
required: required:
- compatible - compatible
- method - method
...@@ -224,6 +219,9 @@ examples: ...@@ -224,6 +219,9 @@ examples:
exit-latency-us = <10>; exit-latency-us = <10>;
min-residency-us = <100>; min-residency-us = <100>;
}; };
};
domain-idle-states {
CLUSTER_RET: cluster-retention { CLUSTER_RET: cluster-retention {
compatible = "domain-idle-state"; compatible = "domain-idle-state";
...@@ -247,19 +245,19 @@ examples: ...@@ -247,19 +245,19 @@ examples:
compatible = "arm,psci-1.0"; compatible = "arm,psci-1.0";
method = "smc"; method = "smc";
CPU_PD0: cpu-pd0 { CPU_PD0: power-domain-cpu0 {
#power-domain-cells = <0>; #power-domain-cells = <0>;
domain-idle-states = <&CPU_PWRDN>; domain-idle-states = <&CPU_PWRDN>;
power-domains = <&CLUSTER_PD>; power-domains = <&CLUSTER_PD>;
}; };
CPU_PD1: cpu-pd1 { CPU_PD1: power-domain-cpu1 {
#power-domain-cells = <0>; #power-domain-cells = <0>;
domain-idle-states = <&CPU_PWRDN>; domain-idle-states = <&CPU_PWRDN>;
power-domains = <&CLUSTER_PD>; power-domains = <&CLUSTER_PD>;
}; };
CLUSTER_PD: cluster-pd { CLUSTER_PD: power-domain-cluster {
#power-domain-cells = <0>; #power-domain-cells = <0>;
domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>; domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment