1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/power/mediatek,power-controller.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Mediatek Power Domains Controller
10 - Weiyi Lu <weiyi.lu@mediatek.com>
11 - Matthias Brugger <mbrugger@suse.com>
14 Mediatek processors include support for multiple power domains which can be
15 powered up/down by software based on different application scenes to save power.
17 IP cores belonging to a power domain should contain a 'power-domains'
18 property that is a phandle for SCPSYS node representing the domain.
22 const: power-controller
26 - mediatek,mt6795-power-controller
27 - mediatek,mt8167-power-controller
28 - mediatek,mt8173-power-controller
29 - mediatek,mt8183-power-controller
30 - mediatek,mt8186-power-controller
31 - mediatek,mt8192-power-controller
32 - mediatek,mt8195-power-controller
34 '#power-domain-cells':
44 "^power-domain@[0-9a-f]+$":
47 Represents the power domains within the power controller node as documented
48 in Documentation/devicetree/bindings/power/power-domain.yaml.
52 '#power-domain-cells':
54 Must be 0 for nodes representing a single PM domain and 1 for nodes
55 providing multiple PM domains.
65 Power domain index. Valid values are defined in:
66 "include/dt-bindings/power/mt6795-power.h" - for MT8167 type power domain.
67 "include/dt-bindings/power/mt8167-power.h" - for MT8167 type power domain.
68 "include/dt-bindings/power/mt8173-power.h" - for MT8173 type power domain.
69 "include/dt-bindings/power/mt8183-power.h" - for MT8183 type power domain.
70 "include/dt-bindings/power/mt8192-power.h" - for MT8192 type power domain.
71 "include/dt-bindings/power/mt8195-power.h" - for MT8195 type power domain.
76 A number of phandles to clocks that need to be enabled during domain
81 List of names of clocks, in order to match the power-up sequencing
82 for each power domain we need to group the clocks by name. BASIC
83 clocks need to be enabled before enabling the corresponding power
84 domain, and should not have a '-' in their name (i.e mm, mfg, venc).
85 SUSBYS clocks need to be enabled before releasing the bus protection,
86 and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
88 In order to follow properly the power-up sequencing, the clocks must
89 be specified by order, adding first the BASIC clocks followed by the
93 description: domain regulator supply.
96 $ref: /schemas/types.yaml#/definitions/phandle
97 description: phandle to the device containing the INFRACFG register range.
100 $ref: /schemas/types.yaml#/definitions/phandle
101 description: phandle to the device containing the SMI register range.
104 "^power-domain@[0-9a-f]+$":
107 Represents a power domain child within a power domain parent node.
111 '#power-domain-cells':
113 Must be 0 for nodes representing a single PM domain and 1 for nodes
114 providing multiple PM domains.
127 A number of phandles to clocks that need to be enabled during domain
132 List of names of clocks, in order to match the power-up sequencing
133 for each power domain we need to group the clocks by name. BASIC
134 clocks need to be enabled before enabling the corresponding power
135 domain, and should not have a '-' in their name (i.e mm, mfg, venc).
136 SUSBYS clocks need to be enabled before releasing the bus protection,
137 and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
139 In order to follow properly the power-up sequencing, the clocks must
140 be specified by order, adding first the BASIC clocks followed by the
144 description: domain regulator supply.
147 $ref: /schemas/types.yaml#/definitions/phandle
148 description: phandle to the device containing the INFRACFG register range.
151 $ref: /schemas/types.yaml#/definitions/phandle
152 description: phandle to the device containing the SMI register range.
155 "^power-domain@[0-9a-f]+$":
158 Represents a power domain child within a power domain parent node.
162 '#power-domain-cells':
164 Must be 0 for nodes representing a single PM domain and 1 for nodes
165 providing multiple PM domains.
178 A number of phandles to clocks that need to be enabled during domain
183 List of names of clocks, in order to match the power-up sequencing
184 for each power domain we need to group the clocks by name. BASIC
185 clocks need to be enabled before enabling the corresponding power
186 domain, and should not have a '-' in their name (i.e mm, mfg, venc).
187 SUSBYS clocks need to be enabled before releasing the bus protection,
188 and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
190 In order to follow properly the power-up sequencing, the clocks must
191 be specified by order, adding first the BASIC clocks followed by the
195 description: domain regulator supply.
198 $ref: /schemas/types.yaml#/definitions/phandle
199 description: phandle to the device containing the INFRACFG register range.
202 $ref: /schemas/types.yaml#/definitions/phandle
203 description: phandle to the device containing the SMI register range.
208 additionalProperties: false
213 additionalProperties: false
218 additionalProperties: false
223 additionalProperties: false
227 #include <dt-bindings/clock/mt8173-clk.h>
228 #include <dt-bindings/power/mt8173-power.h>
231 #address-cells = <2>;
234 scpsys: syscon@10006000 {
235 compatible = "syscon", "simple-mfd";
236 reg = <0 0x10006000 0 0x1000>;
238 spm: power-controller {
239 compatible = "mediatek,mt8173-power-controller";
240 #address-cells = <1>;
242 #power-domain-cells = <1>;
244 /* power domains of the SoC */
245 power-domain@MT8173_POWER_DOMAIN_VDEC {
246 reg = <MT8173_POWER_DOMAIN_VDEC>;
247 clocks = <&topckgen CLK_TOP_MM_SEL>;
249 #power-domain-cells = <0>;
251 power-domain@MT8173_POWER_DOMAIN_VENC {
252 reg = <MT8173_POWER_DOMAIN_VENC>;
253 clocks = <&topckgen CLK_TOP_MM_SEL>,
254 <&topckgen CLK_TOP_VENC_SEL>;
255 clock-names = "mm", "venc";
256 #power-domain-cells = <0>;
258 power-domain@MT8173_POWER_DOMAIN_ISP {
259 reg = <MT8173_POWER_DOMAIN_ISP>;
260 clocks = <&topckgen CLK_TOP_MM_SEL>;
262 #power-domain-cells = <0>;
264 power-domain@MT8173_POWER_DOMAIN_MM {
265 reg = <MT8173_POWER_DOMAIN_MM>;
266 clocks = <&topckgen CLK_TOP_MM_SEL>;
268 #power-domain-cells = <0>;
269 mediatek,infracfg = <&infracfg>;
271 power-domain@MT8173_POWER_DOMAIN_VENC_LT {
272 reg = <MT8173_POWER_DOMAIN_VENC_LT>;
273 clocks = <&topckgen CLK_TOP_MM_SEL>,
274 <&topckgen CLK_TOP_VENC_LT_SEL>;
275 clock-names = "mm", "venclt";
276 #power-domain-cells = <0>;
278 power-domain@MT8173_POWER_DOMAIN_AUDIO {
279 reg = <MT8173_POWER_DOMAIN_AUDIO>;
280 #power-domain-cells = <0>;
282 power-domain@MT8173_POWER_DOMAIN_USB {
283 reg = <MT8173_POWER_DOMAIN_USB>;
284 #power-domain-cells = <0>;
286 power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC {
287 reg = <MT8173_POWER_DOMAIN_MFG_ASYNC>;
290 #address-cells = <1>;
292 #power-domain-cells = <1>;
294 power-domain@MT8173_POWER_DOMAIN_MFG_2D {
295 reg = <MT8173_POWER_DOMAIN_MFG_2D>;
296 #address-cells = <1>;
298 #power-domain-cells = <1>;
300 power-domain@MT8173_POWER_DOMAIN_MFG {
301 reg = <MT8173_POWER_DOMAIN_MFG>;
302 #power-domain-cells = <0>;
303 mediatek,infracfg = <&infracfg>;