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

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
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -102,11 +102,12 @@ properties:
      [1] Kernel documentation - ARM idle states bindings
        Documentation/devicetree/bindings/arm/idle-states.yaml

  "#power-domain-cells":
    description:
      The number of cells in a PM domain specifier as per binding in [3].
      Must be 0 as to represent a single PM domain.

patternProperties:
  "^power-domain-":
    allOf:
      - $ref: "../power/power-domain.yaml#"
    type: object
    description: |
      ARM systems can have multiple cores, sometimes in an hierarchical
      arrangement. This often, but not always, maps directly to the processor
      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
      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

  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:
  - compatible
  - method
@@ -224,6 +219,9 @@ examples:
          exit-latency-us = <10>;
          min-residency-us = <100>;
        };
      };

      domain-idle-states {

        CLUSTER_RET: cluster-retention {
          compatible = "domain-idle-state";
@@ -247,19 +245,19 @@ examples:
      compatible = "arm,psci-1.0";
      method = "smc";

      CPU_PD0: cpu-pd0 {
      CPU_PD0: power-domain-cpu0 {
        #power-domain-cells = <0>;
        domain-idle-states = <&CPU_PWRDN>;
        power-domains = <&CLUSTER_PD>;
      };

      CPU_PD1: cpu-pd1 {
      CPU_PD1: power-domain-cpu1 {
        #power-domain-cells = <0>;
        domain-idle-states =  <&CPU_PWRDN>;
        power-domains = <&CLUSTER_PD>;
      };

      CLUSTER_PD: cluster-pd {
      CLUSTER_PD: power-domain-cluster {
        #power-domain-cells = <0>;
        domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
      };