# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/power/fsl,imx-gpc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Freescale i.MX General Power Controller maintainers: - Philipp Zabel description: | The i.MX6 General Power Control (GPC) block contains DVFS load tracking counters and Power Gating Control (PGC). The power domains are generic power domain providers as documented in Documentation/devicetree/bindings/power/power-domain.yaml. They are described as subnodes of the power gating controller 'pgc' node of the GPC. IP cores belonging to a power domain should contain a 'power-domains' property that is a phandle pointing to the power domain the device belongs to. properties: compatible: oneOf: - enum: - fsl,imx6q-gpc - items: - enum: - fsl,imx6qp-gpc - fsl,imx6sl-gpc - fsl,imx6sx-gpc - fsl,imx6ul-gpc - const: fsl,imx6q-gpc reg: maxItems: 1 interrupts: maxItems: 1 interrupt-controller: true '#interrupt-cells': const: 3 clocks: maxItems: 1 clock-names: const: ipg pgc: type: object additionalProperties: false description: list of power domains provided by this controller. properties: '#address-cells': const: 1 '#size-cells': const: 0 patternProperties: "power-domain@[0-9]$": type: object additionalProperties: false properties: '#power-domain-cells': const: 0 reg: description: | The following DOMAIN_INDEX values are valid for i.MX6Q: ARM_DOMAIN 0 PU_DOMAIN 1 The following additional DOMAIN_INDEX value is valid for i.MX6SL: DISPLAY_DOMAIN 2 The following additional DOMAIN_INDEX value is valid for i.MX6SX: PCI_DOMAIN 3 maxItems: 1 clocks: description: | A number of phandles to clocks that need to be enabled during domain power-up sequencing to ensure reset propagation into devices located inside this power domain. minItems: 1 maxItems: 7 power-supply: true required: - '#power-domain-cells' - reg required: - '#address-cells' - '#size-cells' required: - compatible - reg - interrupts - clocks - clock-names - pgc additionalProperties: false examples: - | #include #include gpc@20dc000 { compatible = "fsl,imx6q-gpc"; reg = <0x020dc000 0x4000>; interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6QDL_CLK_IPG>; clock-names = "ipg"; pgc { #address-cells = <1>; #size-cells = <0>; power-domain@0 { reg = <0>; #power-domain-cells = <0>; }; pd_pu: power-domain@1 { reg = <1>; #power-domain-cells = <0>; power-supply = <®_pu>; clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>, <&clks IMX6QDL_CLK_GPU3D_SHADER>, <&clks IMX6QDL_CLK_GPU2D_CORE>, <&clks IMX6QDL_CLK_GPU2D_AXI>, <&clks IMX6QDL_CLK_OPENVG_AXI>, <&clks IMX6QDL_CLK_VPU_AXI>; }; }; };