| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- # SPDX-License-Identifier: GPL-2.0
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/power/power-domain.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Generic PM domains
- maintainers:
- - Rafael J. Wysocki <rjw@rjwysocki.net>
- - Kevin Hilman <khilman@kernel.org>
- - Ulf Hansson <ulf.hansson@linaro.org>
- description: |+
- System on chip designs are often divided into multiple PM domains that can be
- used for power gating of selected IP blocks for power saving by reduced
- leakage current. Moreover, in some cases the similar PM domains may also be
- capable of scaling performance for a group of IP blocks.
- This device tree binding can be used to bind PM domain consumer devices with
- their PM domains provided by PM domain providers. A PM domain provider can be
- represented by any node in the device tree and can provide one or more PM
- domains. A consumer node can refer to the provider by a phandle and a set of
- phandle arguments (so called PM domain specifiers) of length specified by the
- \#power-domain-cells property in the PM domain provider node.
- properties:
- $nodename:
- pattern: "^(power-controller|power-domain|performance-domain)([@-].*)?$"
- domain-idle-states:
- $ref: /schemas/types.yaml#/definitions/phandle-array
- items:
- maxItems: 1
- description: |
- Phandles of idle states that defines the available states for the
- power-domain provider. The idle state definitions are compatible with the
- domain-idle-state bindings, specified in ./domain-idle-state.yaml.
- Note that, the domain-idle-state property reflects the idle states of this
- PM domain and not the idle states of the devices or sub-domains in the PM
- domain. Devices and sub-domains have their own idle states independent of
- the parent domain's idle states. In the absence of this property, the
- domain would be considered as capable of being powered-on or powered-off.
- operating-points-v2:
- description:
- Phandles to the OPP tables of power domains that are capable of scaling
- performance, provided by a power domain provider. If the provider provides
- a single power domain only or all the power domains provided by the
- provider have identical OPP tables, then this shall contain a single
- phandle. Refer to ../opp/opp-v2-base.yaml for more information.
- "#power-domain-cells":
- description:
- Number of cells in a PM domain specifier. Typically 0 for nodes
- representing a single PM domain and 1 for nodes providing multiple PM
- domains (e.g. power controllers), but can be any value as specified
- by device tree binding documentation of particular provider.
- power-domains:
- description:
- A phandle and PM domain specifier as defined by bindings of the power
- controller specified by phandle. Some power domains might be powered
- from another power domain (or have other hardware specific
- dependencies). For representing such dependency a standard PM domain
- consumer binding is used. When provided, all domains created
- by the given provider should be subdomains of the domain specified
- by this binding.
- required:
- - "#power-domain-cells"
- additionalProperties: true
- examples:
- - |
- power: power-controller@12340000 {
- compatible = "foo,power-controller";
- reg = <0x12340000 0x1000>;
- #power-domain-cells = <1>;
- };
- // The node above defines a power controller that is a PM domain provider and
- // expects one cell as its phandle argument.
- - |
- parent2: power-controller@12340000 {
- compatible = "foo,power-controller";
- reg = <0x12340000 0x1000>;
- #power-domain-cells = <1>;
- };
- child2: power-controller@12341000 {
- compatible = "foo,power-controller";
- reg = <0x12341000 0x1000>;
- power-domains = <&parent2 0>;
- #power-domain-cells = <1>;
- };
- // The nodes above define two power controllers: 'parent' and 'child'.
- // Domains created by the 'child' power controller are subdomains of '0' power
- // domain provided by the 'parent' power controller.
- - |
- parent3: power-controller@12340000 {
- compatible = "foo,power-controller";
- reg = <0x12340000 0x1000>;
- #power-domain-cells = <0>;
- domain-idle-states = <&DOMAIN_RET>, <&DOMAIN_PWR_DN>;
- };
- child3: power-controller@12341000 {
- compatible = "foo,power-controller";
- reg = <0x12341000 0x1000>;
- power-domains = <&parent3>;
- #power-domain-cells = <0>;
- domain-idle-states = <&DOMAIN_PWR_DN>;
- };
- domain-idle-states {
- DOMAIN_RET: domain-retention {
- compatible = "domain-idle-state";
- entry-latency-us = <1000>;
- exit-latency-us = <2000>;
- min-residency-us = <10000>;
- };
- DOMAIN_PWR_DN: domain-pwr-dn {
- compatible = "domain-idle-state";
- entry-latency-us = <5000>;
- exit-latency-us = <8000>;
- min-residency-us = <7000>;
- };
- };
|