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