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