Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[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,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
22 Required 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
38 Qos Example:
39
40         qos_gpu: qos_gpu@ffaf0000 {
41                 compatible ="syscon";
42                 reg = <0x0 0xffaf0000 0x0 0x20>;
43         };
44
45 Example:
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
72 Example 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
100 Node of a device using power domains must have a power-domains property,
101 containing a phandle to the power device node and an index specifying which
102 power domain to use.
103 The 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
114 Example 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         };