Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) %YAML 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) $id: http://devicetree.org/schemas/power/power-domain.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) $schema: http://devicetree.org/meta-schemas/core.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) title: Generic PM domains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) maintainers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)   - Rafael J. Wysocki <rjw@rjwysocki.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)   - Kevin Hilman <khilman@kernel.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)   - Ulf Hansson <ulf.hansson@linaro.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) description: |+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)   System on chip designs are often divided into multiple PM domains that can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)   used for power gating of selected IP blocks for power saving by reduced leakage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)   current.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)   This device tree binding can be used to bind PM domain consumer devices with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)   their PM domains provided by PM domain providers. A PM domain provider can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)   represented by any node in the device tree and can provide one or more PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)   domains. A consumer node can refer to the provider by a phandle and a set of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)   phandle arguments (so called PM domain specifiers) of length specified by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)   \#power-domain-cells property in the PM domain provider node.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)   $nodename:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)     pattern: "^(power-controller|power-domain)([@-].*)?$"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)   domain-idle-states:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)     $ref: /schemas/types.yaml#/definitions/phandle-array
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)     description: |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)       Phandles of idle states that defines the available states for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)       power-domain provider. The idle state definitions are compatible with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)       domain-idle-state bindings, specified in ./domain-idle-state.yaml.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)       Note that, the domain-idle-state property reflects the idle states of this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)       PM domain and not the idle states of the devices or sub-domains in the PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39)       domain. Devices and sub-domains have their own idle states independent of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)       the parent domain's idle states. In the absence of this property, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)       domain would be considered as capable of being powered-on or powered-off.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)   operating-points-v2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)     $ref: /schemas/types.yaml#/definitions/phandle-array
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45)     description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46)       Phandles to the OPP tables of power domains provided by a power domain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47)       provider. If the provider provides a single power domain only or all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48)       the power domains provided by the provider have identical OPP tables,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49)       then this shall contain a single phandle. Refer to ../opp/opp.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)       for more information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52)   "#power-domain-cells":
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53)     description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54)       Number of cells in a PM domain specifier. Typically 0 for nodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55)       representing a single PM domain and 1 for nodes providing multiple PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)       domains (e.g. power controllers), but can be any value as specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)       by device tree binding documentation of particular provider.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59)   power-domains:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60)     description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)       A phandle and PM domain specifier as defined by bindings of the power
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)       controller specified by phandle. Some power domains might be powered
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)       from another power domain (or have other hardware specific
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)       dependencies). For representing such dependency a standard PM domain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)       consumer binding is used. When provided, all domains created
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66)       by the given provider should be subdomains of the domain specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67)       by this binding.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) required:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70)   - "#power-domain-cells"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) additionalProperties: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)   - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)     power: power-controller@12340000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)         compatible = "foo,power-controller";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)         reg = <0x12340000 0x1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79)         #power-domain-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)     // The node above defines a power controller that is a PM domain provider and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83)     // expects one cell as its phandle argument.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85)   - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86)     parent2: power-controller@12340000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87)         compatible = "foo,power-controller";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88)         reg = <0x12340000 0x1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89)         #power-domain-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92)     child2: power-controller@12341000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93)         compatible = "foo,power-controller";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94)         reg = <0x12341000 0x1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95)         power-domains = <&parent2 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96)         #power-domain-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99)     // The nodes above define two power controllers: 'parent' and 'child'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)     // Domains created by the 'child' power controller are subdomains of '0' power
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)     // domain provided by the 'parent' power controller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)   - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)     parent3: power-controller@12340000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)         compatible = "foo,power-controller";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)         reg = <0x12340000 0x1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)         #power-domain-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)         domain-idle-states = <&DOMAIN_RET>, <&DOMAIN_PWR_DN>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)     child3: power-controller@12341000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)         compatible = "foo,power-controller";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)         reg = <0x12341000 0x1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)         power-domains = <&parent3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)         #power-domain-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)         domain-idle-states = <&DOMAIN_PWR_DN>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)     domain-idle-states {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)         DOMAIN_RET: domain-retention {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)             compatible = "domain-idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)             entry-latency-us = <1000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)             exit-latency-us = <2000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)             min-residency-us = <10000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)         DOMAIN_PWR_DN: domain-pwr-dn {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)             compatible = "domain-idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)             entry-latency-us = <5000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)             exit-latency-us = <8000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)             min-residency-us = <7000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)     };