162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/power/mediatek,power-controller.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Mediatek Power Domains Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - MandyJH Liu <mandyjh.liu@mediatek.com> 1162306a36Sopenharmony_ci - Matthias Brugger <mbrugger@suse.com> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cidescription: | 1462306a36Sopenharmony_ci Mediatek processors include support for multiple power domains which can be 1562306a36Sopenharmony_ci powered up/down by software based on different application scenes to save power. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci IP cores belonging to a power domain should contain a 'power-domains' 1862306a36Sopenharmony_ci property that is a phandle for SCPSYS node representing the domain. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciproperties: 2162306a36Sopenharmony_ci $nodename: 2262306a36Sopenharmony_ci pattern: '^power-controller(@[0-9a-f]+)?$' 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci compatible: 2562306a36Sopenharmony_ci enum: 2662306a36Sopenharmony_ci - mediatek,mt6795-power-controller 2762306a36Sopenharmony_ci - mediatek,mt8167-power-controller 2862306a36Sopenharmony_ci - mediatek,mt8173-power-controller 2962306a36Sopenharmony_ci - mediatek,mt8183-power-controller 3062306a36Sopenharmony_ci - mediatek,mt8186-power-controller 3162306a36Sopenharmony_ci - mediatek,mt8188-power-controller 3262306a36Sopenharmony_ci - mediatek,mt8192-power-controller 3362306a36Sopenharmony_ci - mediatek,mt8195-power-controller 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci '#power-domain-cells': 3662306a36Sopenharmony_ci const: 1 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci '#address-cells': 3962306a36Sopenharmony_ci const: 1 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci '#size-cells': 4262306a36Sopenharmony_ci const: 0 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cipatternProperties: 4562306a36Sopenharmony_ci "^power-domain@[0-9a-f]+$": 4662306a36Sopenharmony_ci $ref: "#/$defs/power-domain-node" 4762306a36Sopenharmony_ci patternProperties: 4862306a36Sopenharmony_ci "^power-domain@[0-9a-f]+$": 4962306a36Sopenharmony_ci $ref: "#/$defs/power-domain-node" 5062306a36Sopenharmony_ci patternProperties: 5162306a36Sopenharmony_ci "^power-domain@[0-9a-f]+$": 5262306a36Sopenharmony_ci $ref: "#/$defs/power-domain-node" 5362306a36Sopenharmony_ci patternProperties: 5462306a36Sopenharmony_ci "^power-domain@[0-9a-f]+$": 5562306a36Sopenharmony_ci $ref: "#/$defs/power-domain-node" 5662306a36Sopenharmony_ci unevaluatedProperties: false 5762306a36Sopenharmony_ci unevaluatedProperties: false 5862306a36Sopenharmony_ci unevaluatedProperties: false 5962306a36Sopenharmony_ci unevaluatedProperties: false 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci$defs: 6262306a36Sopenharmony_ci power-domain-node: 6362306a36Sopenharmony_ci type: object 6462306a36Sopenharmony_ci description: | 6562306a36Sopenharmony_ci Represents the power domains within the power controller node as documented 6662306a36Sopenharmony_ci in Documentation/devicetree/bindings/power/power-domain.yaml. 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci properties: 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci '#power-domain-cells': 7162306a36Sopenharmony_ci description: 7262306a36Sopenharmony_ci Must be 0 for nodes representing a single PM domain and 1 for nodes 7362306a36Sopenharmony_ci providing multiple PM domains. 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci '#address-cells': 7662306a36Sopenharmony_ci const: 1 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci '#size-cells': 7962306a36Sopenharmony_ci const: 0 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci reg: 8262306a36Sopenharmony_ci description: | 8362306a36Sopenharmony_ci Power domain index. Valid values are defined in: 8462306a36Sopenharmony_ci "include/dt-bindings/power/mt6795-power.h" - for MT8167 type power domain. 8562306a36Sopenharmony_ci "include/dt-bindings/power/mt8167-power.h" - for MT8167 type power domain. 8662306a36Sopenharmony_ci "include/dt-bindings/power/mt8173-power.h" - for MT8173 type power domain. 8762306a36Sopenharmony_ci "include/dt-bindings/power/mt8183-power.h" - for MT8183 type power domain. 8862306a36Sopenharmony_ci "include/dt-bindings/power/mediatek,mt8188-power.h" - for MT8188 type power domain. 8962306a36Sopenharmony_ci "include/dt-bindings/power/mt8192-power.h" - for MT8192 type power domain. 9062306a36Sopenharmony_ci "include/dt-bindings/power/mt8195-power.h" - for MT8195 type power domain. 9162306a36Sopenharmony_ci maxItems: 1 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci clocks: 9462306a36Sopenharmony_ci description: | 9562306a36Sopenharmony_ci A number of phandles to clocks that need to be enabled during domain 9662306a36Sopenharmony_ci power-up sequencing. 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci clock-names: 9962306a36Sopenharmony_ci description: | 10062306a36Sopenharmony_ci List of names of clocks, in order to match the power-up sequencing 10162306a36Sopenharmony_ci for each power domain we need to group the clocks by name. BASIC 10262306a36Sopenharmony_ci clocks need to be enabled before enabling the corresponding power 10362306a36Sopenharmony_ci domain, and should not have a '-' in their name (i.e mm, mfg, venc). 10462306a36Sopenharmony_ci SUSBYS clocks need to be enabled before releasing the bus protection, 10562306a36Sopenharmony_ci and should contain a '-' in their name (i.e mm-0, isp-0, cam-0). 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci In order to follow properly the power-up sequencing, the clocks must 10862306a36Sopenharmony_ci be specified by order, adding first the BASIC clocks followed by the 10962306a36Sopenharmony_ci SUSBSYS clocks. 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci domain-supply: 11262306a36Sopenharmony_ci description: domain regulator supply. 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci mediatek,infracfg: 11562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 11662306a36Sopenharmony_ci description: phandle to the device containing the INFRACFG register range. 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci mediatek,smi: 11962306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 12062306a36Sopenharmony_ci description: phandle to the device containing the SMI register range. 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci required: 12362306a36Sopenharmony_ci - reg 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_cirequired: 12662306a36Sopenharmony_ci - compatible 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ciadditionalProperties: false 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ciexamples: 13162306a36Sopenharmony_ci - | 13262306a36Sopenharmony_ci #include <dt-bindings/clock/mt8173-clk.h> 13362306a36Sopenharmony_ci #include <dt-bindings/power/mt8173-power.h> 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci soc { 13662306a36Sopenharmony_ci #address-cells = <2>; 13762306a36Sopenharmony_ci #size-cells = <2>; 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci scpsys: syscon@10006000 { 14062306a36Sopenharmony_ci compatible = "mediatek,mt8173-scpsys", "syscon", "simple-mfd"; 14162306a36Sopenharmony_ci reg = <0 0x10006000 0 0x1000>; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci spm: power-controller { 14462306a36Sopenharmony_ci compatible = "mediatek,mt8173-power-controller"; 14562306a36Sopenharmony_ci #address-cells = <1>; 14662306a36Sopenharmony_ci #size-cells = <0>; 14762306a36Sopenharmony_ci #power-domain-cells = <1>; 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci /* power domains of the SoC */ 15062306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_VDEC { 15162306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_VDEC>; 15262306a36Sopenharmony_ci clocks = <&topckgen CLK_TOP_MM_SEL>; 15362306a36Sopenharmony_ci clock-names = "mm"; 15462306a36Sopenharmony_ci #power-domain-cells = <0>; 15562306a36Sopenharmony_ci }; 15662306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_VENC { 15762306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_VENC>; 15862306a36Sopenharmony_ci clocks = <&topckgen CLK_TOP_MM_SEL>, 15962306a36Sopenharmony_ci <&topckgen CLK_TOP_VENC_SEL>; 16062306a36Sopenharmony_ci clock-names = "mm", "venc"; 16162306a36Sopenharmony_ci #power-domain-cells = <0>; 16262306a36Sopenharmony_ci }; 16362306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_ISP { 16462306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_ISP>; 16562306a36Sopenharmony_ci clocks = <&topckgen CLK_TOP_MM_SEL>; 16662306a36Sopenharmony_ci clock-names = "mm"; 16762306a36Sopenharmony_ci #power-domain-cells = <0>; 16862306a36Sopenharmony_ci }; 16962306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_MM { 17062306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_MM>; 17162306a36Sopenharmony_ci clocks = <&topckgen CLK_TOP_MM_SEL>; 17262306a36Sopenharmony_ci clock-names = "mm"; 17362306a36Sopenharmony_ci #power-domain-cells = <0>; 17462306a36Sopenharmony_ci mediatek,infracfg = <&infracfg>; 17562306a36Sopenharmony_ci }; 17662306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_VENC_LT { 17762306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_VENC_LT>; 17862306a36Sopenharmony_ci clocks = <&topckgen CLK_TOP_MM_SEL>, 17962306a36Sopenharmony_ci <&topckgen CLK_TOP_VENC_LT_SEL>; 18062306a36Sopenharmony_ci clock-names = "mm", "venclt"; 18162306a36Sopenharmony_ci #power-domain-cells = <0>; 18262306a36Sopenharmony_ci }; 18362306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_AUDIO { 18462306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_AUDIO>; 18562306a36Sopenharmony_ci #power-domain-cells = <0>; 18662306a36Sopenharmony_ci }; 18762306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_USB { 18862306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_USB>; 18962306a36Sopenharmony_ci #power-domain-cells = <0>; 19062306a36Sopenharmony_ci }; 19162306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC { 19262306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_MFG_ASYNC>; 19362306a36Sopenharmony_ci clocks = <&clk26m>; 19462306a36Sopenharmony_ci clock-names = "mfg"; 19562306a36Sopenharmony_ci #address-cells = <1>; 19662306a36Sopenharmony_ci #size-cells = <0>; 19762306a36Sopenharmony_ci #power-domain-cells = <1>; 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_MFG_2D { 20062306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_MFG_2D>; 20162306a36Sopenharmony_ci #address-cells = <1>; 20262306a36Sopenharmony_ci #size-cells = <0>; 20362306a36Sopenharmony_ci #power-domain-cells = <1>; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci power-domain@MT8173_POWER_DOMAIN_MFG { 20662306a36Sopenharmony_ci reg = <MT8173_POWER_DOMAIN_MFG>; 20762306a36Sopenharmony_ci #power-domain-cells = <0>; 20862306a36Sopenharmony_ci mediatek,infracfg = <&infracfg>; 20962306a36Sopenharmony_ci }; 21062306a36Sopenharmony_ci }; 21162306a36Sopenharmony_ci }; 21262306a36Sopenharmony_ci }; 21362306a36Sopenharmony_ci }; 21462306a36Sopenharmony_ci }; 215