1
0
Fork 0

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: a3f048b542 ("dt: psci: Update DT bindings to support hierarchical PSCI states")
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
[robh: Add missing allOf, tweak power-domain node name]
Signed-off-by: Rob Herring <robh@kernel.org>
alistair/sensors
Ulf Hansson 2020-03-03 16:07:47 +01:00 committed by Rob Herring
parent 14ee09a05e
commit d2334a91a3
1 changed files with 13 additions and 15 deletions

View File

@ -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:
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:
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:
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>;
}; };