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