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