1* Rockchip Power Domains
2
3Rockchip processors include support for multiple power domains which can be
4powered up/down by software based on different application scenes to save power.
5
6Required properties for power domain controller:
7- compatible: Should be one of the following.
8	"rockchip,px30-power-controller" - for PX30 SoCs.
9	"rockchip,rk3036-power-controller" - for RK3036 SoCs.
10	"rockchip,rk3066-power-controller" - for RK3066 SoCs.
11	"rockchip,rk3128-power-controller" - for RK3128 SoCs.
12	"rockchip,rk3188-power-controller" - for RK3188 SoCs.
13	"rockchip,rk3228-power-controller" - for RK3228 SoCs.
14	"rockchip,rk3288-power-controller" - for RK3288 SoCs.
15	"rockchip,rk3328-power-controller" - for RK3328 SoCs.
16	"rockchip,rk3366-power-controller" - for RK3366 SoCs.
17	"rockchip,rk3368-power-controller" - for RK3368 SoCs.
18	"rockchip,rk3399-power-controller" - for RK3399 SoCs.
19- #power-domain-cells: Number of cells in a power-domain specifier.
20	Should be 1 for multiple PM domains.
21- #address-cells: Should be 1.
22- #size-cells: Should be 0.
23
24Required properties for power domain sub nodes:
25- reg: index of the power domain, should use macros in:
26	"include/dt-bindings/power/px30-power.h" - for PX30 type power domain.
27	"include/dt-bindings/power/rk3036-power.h" - for RK3036 type power domain.
28	"include/dt-bindings/power/rk3066-power.h" - for RK3066 type power domain.
29	"include/dt-bindings/power/rk3128-power.h" - for RK3128 type power domain.
30	"include/dt-bindings/power/rk3188-power.h" - for RK3188 type power domain.
31	"include/dt-bindings/power/rk3228-power.h" - for RK3228 type power domain.
32	"include/dt-bindings/power/rk3288-power.h" - for RK3288 type power domain.
33	"include/dt-bindings/power/rk3328-power.h" - for RK3328 type power domain.
34	"include/dt-bindings/power/rk3366-power.h" - for RK3366 type power domain.
35	"include/dt-bindings/power/rk3368-power.h" - for RK3368 type power domain.
36	"include/dt-bindings/power/rk3399-power.h" - for RK3399 type power domain.
37- clocks (optional): phandles to clocks which need to be enabled while power domain
38	switches state.
39- pm_qos (optional): phandles to qos blocks which need to be saved and restored
40	while power domain switches state.
41
42Qos Example:
43
44	qos_gpu: qos_gpu@ffaf0000 {
45		compatible ="syscon";
46		reg = <0x0 0xffaf0000 0x0 0x20>;
47	};
48
49Example:
50
51	power: power-controller {
52		compatible = "rockchip,rk3288-power-controller";
53		#power-domain-cells = <1>;
54		#address-cells = <1>;
55		#size-cells = <0>;
56
57		pd_gpu {
58			reg = <RK3288_PD_GPU>;
59			clocks = <&cru ACLK_GPU>;
60			pm_qos = <&qos_gpu>;
61		};
62	};
63
64	 power: power-controller {
65                compatible = "rockchip,rk3368-power-controller";
66                #power-domain-cells = <1>;
67                #address-cells = <1>;
68                #size-cells = <0>;
69
70                pd_gpu_1 {
71                        reg = <RK3368_PD_GPU_1>;
72                        clocks = <&cru ACLK_GPU_CFG>;
73                };
74        };
75
76Example 2:
77		power: power-controller {
78			compatible = "rockchip,rk3399-power-controller";
79			#power-domain-cells = <1>;
80			#address-cells = <1>;
81			#size-cells = <0>;
82
83			pd_vio {
84				#address-cells = <1>;
85				#size-cells = <0>;
86				reg = <RK3399_PD_VIO>;
87
88				pd_vo {
89					#address-cells = <1>;
90					#size-cells = <0>;
91					reg = <RK3399_PD_VO>;
92
93					pd_vopb {
94						reg = <RK3399_PD_VOPB>;
95					};
96
97					pd_vopl {
98						reg = <RK3399_PD_VOPL>;
99					};
100				};
101			};
102		};
103
104Node of a device using power domains must have a power-domains property,
105containing a phandle to the power device node and an index specifying which
106power domain to use.
107The index should use macros in:
108	"include/dt-bindings/power/px30-power.h" - for px30 type power domain.
109	"include/dt-bindings/power/rk3036-power.h" - for rk3036 type power domain.
110	"include/dt-bindings/power/rk3128-power.h" - for rk3128 type power domain.
111	"include/dt-bindings/power/rk3128-power.h" - for rk3228 type power domain.
112	"include/dt-bindings/power/rk3288-power.h" - for rk3288 type power domain.
113	"include/dt-bindings/power/rk3328-power.h" - for rk3328 type power domain.
114	"include/dt-bindings/power/rk3366-power.h" - for rk3366 type power domain.
115	"include/dt-bindings/power/rk3368-power.h" - for rk3368 type power domain.
116	"include/dt-bindings/power/rk3399-power.h" - for rk3399 type power domain.
117
118Example of the node using power domain:
119
120	node {
121		/* ... */
122		power-domains = <&power RK3288_PD_GPU>;
123		/* ... */
124	};
125
126	node {
127                /* ... */
128                power-domains = <&power RK3368_PD_GPU_1>;
129                /* ... */
130        };
131
132	node {
133		/* ... */
134		power-domains = <&power RK3399_PD_VOPB>;
135		/* ... */
136	};
137