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