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