Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / soc / rockchip / power_domain.txt
1 * Rockchip Power Domains
2
3 Rockchip processors include support for multiple power domains which can be
4 powered up/down by software based on different application scenes to save power.
5
6 Required 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
24 Required 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
42 Qos Example:
43
44         qos_gpu: qos_gpu@ffaf0000 {
45                 compatible ="syscon";
46                 reg = <0x0 0xffaf0000 0x0 0x20>;
47         };
48
49 Example:
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
76 Example 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
104 Node of a device using power domains must have a power-domains property,
105 containing a phandle to the power device node and an index specifying which
106 power domain to use.
107 The 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
118 Example 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         };