| * Generic PM domains | |
| 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. | |
| 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. | |
| ==PM domain providers== | |
| Required properties: | |
| - #power-domain-cells : 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. | |
| Optional properties: | |
| - power-domains : 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. More details about power domain specifier are | |
| available in the next section. | |
| Example: | |
| 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. | |
| Example 2: | |
| parent: power-controller@12340000 { | |
| compatible = "foo,power-controller"; | |
| reg = <0x12340000 0x1000>; | |
| #power-domain-cells = <1>; | |
| }; | |
| child: power-controller@12341000 { | |
| compatible = "foo,power-controller"; | |
| reg = <0x12341000 0x1000>; | |
| power-domains = <&parent 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. | |
| ==PM domain consumers== | |
| Required properties: | |
| - power-domains : A phandle and PM domain specifier as defined by bindings of | |
| the power controller specified by phandle. | |
| Example: | |
| leaky-device@12350000 { | |
| compatible = "foo,i-leak-current"; | |
| reg = <0x12350000 0x1000>; | |
| power-domains = <&power 0>; | |
| }; | |
| The node above defines a typical PM domain consumer device, which is located | |
| inside a PM domain with index 0 of a power controller represented by a node | |
| with the label "power". |