| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/power/mediatek,power-controller.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Mediatek Power Domains Controller
- maintainers:
- - MandyJH Liu <mandyjh.liu@mediatek.com>
- - Matthias Brugger <mbrugger@suse.com>
- description: |
- Mediatek processors include support for multiple power domains which can be
- powered up/down by software based on different application scenes to save power.
- IP cores belonging to a power domain should contain a 'power-domains'
- property that is a phandle for SCPSYS node representing the domain.
- properties:
- $nodename:
- pattern: '^power-controller(@[0-9a-f]+)?$'
- compatible:
- enum:
- - mediatek,mt6795-power-controller
- - mediatek,mt8167-power-controller
- - mediatek,mt8173-power-controller
- - mediatek,mt8183-power-controller
- - mediatek,mt8186-power-controller
- - mediatek,mt8188-power-controller
- - mediatek,mt8192-power-controller
- - mediatek,mt8195-power-controller
- - mediatek,mt8365-power-controller
- '#power-domain-cells':
- const: 1
- '#address-cells':
- const: 1
- '#size-cells':
- const: 0
- patternProperties:
- "^power-domain@[0-9a-f]+$":
- $ref: "#/$defs/power-domain-node"
- patternProperties:
- "^power-domain@[0-9a-f]+$":
- $ref: "#/$defs/power-domain-node"
- patternProperties:
- "^power-domain@[0-9a-f]+$":
- $ref: "#/$defs/power-domain-node"
- patternProperties:
- "^power-domain@[0-9a-f]+$":
- $ref: "#/$defs/power-domain-node"
- unevaluatedProperties: false
- unevaluatedProperties: false
- unevaluatedProperties: false
- unevaluatedProperties: false
- $defs:
- power-domain-node:
- type: object
- description: |
- Represents the power domains within the power controller node as documented
- in Documentation/devicetree/bindings/power/power-domain.yaml.
- properties:
- '#power-domain-cells':
- description:
- Must be 0 for nodes representing a single PM domain and 1 for nodes
- providing multiple PM domains.
- '#address-cells':
- const: 1
- '#size-cells':
- const: 0
- reg:
- description: |
- Power domain index. Valid values are defined in:
- "include/dt-bindings/power/mt6795-power.h" - for MT8167 type power domain.
- "include/dt-bindings/power/mt8167-power.h" - for MT8167 type power domain.
- "include/dt-bindings/power/mt8173-power.h" - for MT8173 type power domain.
- "include/dt-bindings/power/mt8183-power.h" - for MT8183 type power domain.
- "include/dt-bindings/power/mediatek,mt8188-power.h" - for MT8188 type power domain.
- "include/dt-bindings/power/mt8192-power.h" - for MT8192 type power domain.
- "include/dt-bindings/power/mt8195-power.h" - for MT8195 type power domain.
- "include/dt-bindings/power/mediatek,mt8365-power.h" - for MT8365 type power domain.
- maxItems: 1
- clocks:
- description: |
- A number of phandles to clocks that need to be enabled during domain
- power-up sequencing.
- clock-names:
- description: |
- List of names of clocks, in order to match the power-up sequencing
- for each power domain we need to group the clocks by name. BASIC
- clocks need to be enabled before enabling the corresponding power
- domain, and should not have a '-' in their name (i.e mm, mfg, venc).
- SUSBYS clocks need to be enabled before releasing the bus protection,
- and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
- In order to follow properly the power-up sequencing, the clocks must
- be specified by order, adding first the BASIC clocks followed by the
- SUSBSYS clocks.
- domain-supply:
- description: domain regulator supply.
- mediatek,infracfg:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: phandle to the device containing the INFRACFG register range.
- mediatek,infracfg-nao:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: phandle to the device containing the INFRACFG-NAO register range.
- mediatek,smi:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: phandle to the device containing the SMI register range.
- required:
- - reg
- required:
- - compatible
- additionalProperties: false
- examples:
- - |
- #include <dt-bindings/clock/mt8173-clk.h>
- #include <dt-bindings/power/mt8173-power.h>
- soc {
- #address-cells = <2>;
- #size-cells = <2>;
- scpsys: syscon@10006000 {
- compatible = "mediatek,mt8173-scpsys", "syscon", "simple-mfd";
- reg = <0 0x10006000 0 0x1000>;
- spm: power-controller {
- compatible = "mediatek,mt8173-power-controller";
- #address-cells = <1>;
- #size-cells = <0>;
- #power-domain-cells = <1>;
- /* power domains of the SoC */
- power-domain@MT8173_POWER_DOMAIN_VDEC {
- reg = <MT8173_POWER_DOMAIN_VDEC>;
- clocks = <&topckgen CLK_TOP_MM_SEL>;
- clock-names = "mm";
- #power-domain-cells = <0>;
- };
- power-domain@MT8173_POWER_DOMAIN_VENC {
- reg = <MT8173_POWER_DOMAIN_VENC>;
- clocks = <&topckgen CLK_TOP_MM_SEL>,
- <&topckgen CLK_TOP_VENC_SEL>;
- clock-names = "mm", "venc";
- #power-domain-cells = <0>;
- };
- power-domain@MT8173_POWER_DOMAIN_ISP {
- reg = <MT8173_POWER_DOMAIN_ISP>;
- clocks = <&topckgen CLK_TOP_MM_SEL>;
- clock-names = "mm";
- #power-domain-cells = <0>;
- };
- power-domain@MT8173_POWER_DOMAIN_MM {
- reg = <MT8173_POWER_DOMAIN_MM>;
- clocks = <&topckgen CLK_TOP_MM_SEL>;
- clock-names = "mm";
- #power-domain-cells = <0>;
- mediatek,infracfg = <&infracfg>;
- };
- power-domain@MT8173_POWER_DOMAIN_VENC_LT {
- reg = <MT8173_POWER_DOMAIN_VENC_LT>;
- clocks = <&topckgen CLK_TOP_MM_SEL>,
- <&topckgen CLK_TOP_VENC_LT_SEL>;
- clock-names = "mm", "venclt";
- #power-domain-cells = <0>;
- };
- power-domain@MT8173_POWER_DOMAIN_AUDIO {
- reg = <MT8173_POWER_DOMAIN_AUDIO>;
- #power-domain-cells = <0>;
- };
- power-domain@MT8173_POWER_DOMAIN_USB {
- reg = <MT8173_POWER_DOMAIN_USB>;
- #power-domain-cells = <0>;
- };
- power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC {
- reg = <MT8173_POWER_DOMAIN_MFG_ASYNC>;
- clocks = <&clk26m>;
- clock-names = "mfg";
- #address-cells = <1>;
- #size-cells = <0>;
- #power-domain-cells = <1>;
- power-domain@MT8173_POWER_DOMAIN_MFG_2D {
- reg = <MT8173_POWER_DOMAIN_MFG_2D>;
- #address-cells = <1>;
- #size-cells = <0>;
- #power-domain-cells = <1>;
- power-domain@MT8173_POWER_DOMAIN_MFG {
- reg = <MT8173_POWER_DOMAIN_MFG>;
- #power-domain-cells = <0>;
- mediatek,infracfg = <&infracfg>;
- };
- };
- };
- };
- };
- };
|