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