1d17f8338SKrzysztof Kozlowski* Generic PM domains 2d17f8338SKrzysztof Kozlowski 3d17f8338SKrzysztof KozlowskiSystem on chip designs are often divided into multiple PM domains that can be 4d17f8338SKrzysztof Kozlowskiused for power gating of selected IP blocks for power saving by reduced leakage 5d17f8338SKrzysztof Kozlowskicurrent. 6d17f8338SKrzysztof Kozlowski 7d17f8338SKrzysztof KozlowskiThis device tree binding can be used to bind PM domain consumer devices with 8d17f8338SKrzysztof Kozlowskitheir PM domains provided by PM domain providers. A PM domain provider can be 9d17f8338SKrzysztof Kozlowskirepresented by any node in the device tree and can provide one or more PM 10d17f8338SKrzysztof Kozlowskidomains. A consumer node can refer to the provider by a phandle and a set of 11d17f8338SKrzysztof Kozlowskiphandle arguments (so called PM domain specifiers) of length specified by the 12d17f8338SKrzysztof Kozlowski#power-domain-cells property in the PM domain provider node. 13d17f8338SKrzysztof Kozlowski 14d17f8338SKrzysztof Kozlowski==PM domain providers== 15d17f8338SKrzysztof Kozlowski 16d17f8338SKrzysztof KozlowskiSee power-domain.yaml. 17d17f8338SKrzysztof Kozlowski 18d17f8338SKrzysztof Kozlowski==PM domain consumers== 19d17f8338SKrzysztof Kozlowski 20d17f8338SKrzysztof KozlowskiRequired properties: 21d17f8338SKrzysztof Kozlowski - power-domains : A list of PM domain specifiers, as defined by bindings of 22d17f8338SKrzysztof Kozlowski the power controller that is the PM domain provider. 23d17f8338SKrzysztof Kozlowski 24d17f8338SKrzysztof KozlowskiOptional properties: 25d17f8338SKrzysztof Kozlowski - power-domain-names : A list of power domain name strings sorted in the same 26d17f8338SKrzysztof Kozlowski order as the power-domains property. Consumers drivers will use 27d17f8338SKrzysztof Kozlowski power-domain-names to match power domains with power-domains 28d17f8338SKrzysztof Kozlowski specifiers. 29d17f8338SKrzysztof Kozlowski 30d17f8338SKrzysztof KozlowskiExample: 31d17f8338SKrzysztof Kozlowski 32d17f8338SKrzysztof Kozlowski leaky-device@12350000 { 33d17f8338SKrzysztof Kozlowski compatible = "foo,i-leak-current"; 34d17f8338SKrzysztof Kozlowski reg = <0x12350000 0x1000>; 35d17f8338SKrzysztof Kozlowski power-domains = <&power 0>; 36d17f8338SKrzysztof Kozlowski power-domain-names = "io"; 37d17f8338SKrzysztof Kozlowski }; 38d17f8338SKrzysztof Kozlowski 39d17f8338SKrzysztof Kozlowski leaky-device@12351000 { 40d17f8338SKrzysztof Kozlowski compatible = "foo,i-leak-current"; 41d17f8338SKrzysztof Kozlowski reg = <0x12351000 0x1000>; 42d17f8338SKrzysztof Kozlowski power-domains = <&power 0>, <&power 1> ; 43d17f8338SKrzysztof Kozlowski power-domain-names = "io", "clk"; 44d17f8338SKrzysztof Kozlowski }; 45d17f8338SKrzysztof Kozlowski 46d17f8338SKrzysztof KozlowskiThe first example above defines a typical PM domain consumer device, which is 47d17f8338SKrzysztof Kozlowskilocated inside a PM domain with index 0 of a power controller represented by a 48d17f8338SKrzysztof Kozlowskinode with the label "power". 49d17f8338SKrzysztof KozlowskiIn the second example the consumer device are partitioned across two PM domains, 50d17f8338SKrzysztof Kozlowskithe first with index 0 and the second with index 1, of a power controller that 51d17f8338SKrzysztof Kozlowskiis represented by a node with the label "power". 52d17f8338SKrzysztof Kozlowski 53d17f8338SKrzysztof KozlowskiOptional properties: 54d17f8338SKrzysztof Kozlowski- required-opps: This contains phandle to an OPP node in another device's OPP 55d17f8338SKrzysztof Kozlowski table. It may contain an array of phandles, where each phandle points to an 56d17f8338SKrzysztof Kozlowski OPP of a different device. It should not contain multiple phandles to the OPP 57d17f8338SKrzysztof Kozlowski nodes in the same OPP table. This specifies the minimum required OPP of the 58d17f8338SKrzysztof Kozlowski device(s), whose OPP's phandle is present in this property, for the 59d17f8338SKrzysztof Kozlowski functioning of the current device at the current OPP (where this property is 60d17f8338SKrzysztof Kozlowski present). 61d17f8338SKrzysztof Kozlowski 62d17f8338SKrzysztof KozlowskiExample: 63d17f8338SKrzysztof Kozlowski- OPP table for domain provider that provides two domains. 64d17f8338SKrzysztof Kozlowski 65d17f8338SKrzysztof Kozlowski domain0_opp_table: opp-table0 { 66d17f8338SKrzysztof Kozlowski compatible = "operating-points-v2"; 67d17f8338SKrzysztof Kozlowski 68d17f8338SKrzysztof Kozlowski domain0_opp_0: opp-1000000000 { 69d17f8338SKrzysztof Kozlowski opp-hz = /bits/ 64 <1000000000>; 70d17f8338SKrzysztof Kozlowski opp-microvolt = <975000 970000 985000>; 71d17f8338SKrzysztof Kozlowski }; 72d17f8338SKrzysztof Kozlowski domain0_opp_1: opp-1100000000 { 73d17f8338SKrzysztof Kozlowski opp-hz = /bits/ 64 <1100000000>; 74d17f8338SKrzysztof Kozlowski opp-microvolt = <1000000 980000 1010000>; 75d17f8338SKrzysztof Kozlowski }; 76d17f8338SKrzysztof Kozlowski }; 77d17f8338SKrzysztof Kozlowski 78d17f8338SKrzysztof Kozlowski domain1_opp_table: opp-table1 { 79d17f8338SKrzysztof Kozlowski compatible = "operating-points-v2"; 80d17f8338SKrzysztof Kozlowski 81d17f8338SKrzysztof Kozlowski domain1_opp_0: opp-1200000000 { 82d17f8338SKrzysztof Kozlowski opp-hz = /bits/ 64 <1200000000>; 83d17f8338SKrzysztof Kozlowski opp-microvolt = <975000 970000 985000>; 84d17f8338SKrzysztof Kozlowski }; 85d17f8338SKrzysztof Kozlowski domain1_opp_1: opp-1300000000 { 86d17f8338SKrzysztof Kozlowski opp-hz = /bits/ 64 <1300000000>; 87d17f8338SKrzysztof Kozlowski opp-microvolt = <1000000 980000 1010000>; 88d17f8338SKrzysztof Kozlowski }; 89d17f8338SKrzysztof Kozlowski }; 90d17f8338SKrzysztof Kozlowski 91d17f8338SKrzysztof Kozlowski power: power-controller@12340000 { 92d17f8338SKrzysztof Kozlowski compatible = "foo,power-controller"; 93d17f8338SKrzysztof Kozlowski reg = <0x12340000 0x1000>; 94d17f8338SKrzysztof Kozlowski #power-domain-cells = <1>; 95d17f8338SKrzysztof Kozlowski operating-points-v2 = <&domain0_opp_table>, <&domain1_opp_table>; 96d17f8338SKrzysztof Kozlowski }; 97d17f8338SKrzysztof Kozlowski 98d17f8338SKrzysztof Kozlowski leaky-device0@12350000 { 99d17f8338SKrzysztof Kozlowski compatible = "foo,i-leak-current"; 100d17f8338SKrzysztof Kozlowski reg = <0x12350000 0x1000>; 101d17f8338SKrzysztof Kozlowski power-domains = <&power 0>; 102d17f8338SKrzysztof Kozlowski required-opps = <&domain0_opp_0>; 103d17f8338SKrzysztof Kozlowski }; 104d17f8338SKrzysztof Kozlowski 105d17f8338SKrzysztof Kozlowski leaky-device1@12350000 { 106d17f8338SKrzysztof Kozlowski compatible = "foo,i-leak-current"; 107d17f8338SKrzysztof Kozlowski reg = <0x12350000 0x1000>; 108d17f8338SKrzysztof Kozlowski power-domains = <&power 1>; 109d17f8338SKrzysztof Kozlowski required-opps = <&domain1_opp_1>; 110d17f8338SKrzysztof Kozlowski }; 111d17f8338SKrzysztof Kozlowski 112*3261227dSUlf Hansson[1]. Documentation/devicetree/bindings/power/domain-idle-state.yaml 113