dt-bindings: add multidomain support to i.MX GPC DT binding
This adds a new binding for the Freescale i.MX GPC block, which allows to describe multiple power domains in a more natural way. The driver will continue to support the old binding for existing DTBs, but new features like the additional domains present on i.MX6SX will only be usable with the new binding. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
parent
c1ae3cfa0e
commit
b7a24a7d9e
@ -1,22 +1,40 @@
|
|||||||
Freescale i.MX General Power Controller
|
Freescale i.MX General Power Controller
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
The i.MX6Q General Power Control (GPC) block contains DVFS load tracking
|
The i.MX6 General Power Control (GPC) block contains DVFS load tracking
|
||||||
counters and Power Gating Control (PGC) for the CPU and PU (GPU/VPU) power
|
counters and Power Gating Control (PGC).
|
||||||
domains.
|
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: Should be "fsl,imx6q-gpc" or "fsl,imx6sl-gpc"
|
- compatible: Should be "fsl,imx6q-gpc" or "fsl,imx6sl-gpc"
|
||||||
- reg: should be register base and length as documented in the
|
- reg: should be register base and length as documented in the
|
||||||
datasheet
|
datasheet
|
||||||
- interrupts: Should contain GPC interrupt request 1
|
- interrupts: Should contain one interrupt specifier for the GPC interrupt
|
||||||
- pu-supply: Link to the LDO regulator powering the PU power domain
|
- clocks: Must contain an entry for each entry in clock-names.
|
||||||
- clocks: Clock phandles to devices in the PU power domain that need
|
See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details.
|
||||||
to be enabled during domain power-up for reset propagation.
|
- clock-names: Must include the following entries:
|
||||||
- #power-domain-cells: Should be 1, see below:
|
- ipg
|
||||||
|
|
||||||
The gpc node is a power-controller as documented by the generic power domain
|
The power domains are generic power domain providers as documented in
|
||||||
bindings in Documentation/devicetree/bindings/power/power_domain.txt.
|
Documentation/devicetree/bindings/power/power_domain.txt. They are described as
|
||||||
|
subnodes of the power gating controller 'pgc' node of the GPC and should
|
||||||
|
contain the following:
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- reg: the DOMAIN_INDEX as used by the client devices to refer to this
|
||||||
|
power domain
|
||||||
|
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
|
||||||
|
|
||||||
|
- #power-domain-cells: Should be 0
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- clocks: 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
|
||||||
|
- power-supply: a phandle to the regulator powering this domain
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@ -25,14 +43,29 @@ Example:
|
|||||||
reg = <0x020dc000 0x4000>;
|
reg = <0x020dc000 0x4000>;
|
||||||
interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 90 IRQ_TYPE_LEVEL_HIGH>;
|
<0 90 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
pu-supply = <®_pu>;
|
clocks = <&clks IMX6QDL_CLK_IPG>;
|
||||||
clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,
|
clock-names = "ipg";
|
||||||
<&clks IMX6QDL_CLK_GPU3D_SHADER>,
|
|
||||||
<&clks IMX6QDL_CLK_GPU2D_CORE>,
|
pgc {
|
||||||
<&clks IMX6QDL_CLK_GPU2D_AXI>,
|
#address-cells = <1>;
|
||||||
<&clks IMX6QDL_CLK_OPENVG_AXI>,
|
#size-cells = <0>;
|
||||||
<&clks IMX6QDL_CLK_VPU_AXI>;
|
|
||||||
#power-domain-cells = <1>;
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -40,20 +73,13 @@ Specifying power domain for IP modules
|
|||||||
======================================
|
======================================
|
||||||
|
|
||||||
IP cores belonging to a power domain should contain a 'power-domains' property
|
IP cores belonging to a power domain should contain a 'power-domains' property
|
||||||
that is a phandle pointing to the gpc device node and a DOMAIN_INDEX specifying
|
that is a phandle pointing to the power domain the device belongs to.
|
||||||
the power domain the device belongs to.
|
|
||||||
|
|
||||||
Example of a device that is part of the PU power domain:
|
Example of a device that is part of the PU power domain:
|
||||||
|
|
||||||
vpu: vpu@02040000 {
|
vpu: vpu@02040000 {
|
||||||
reg = <0x02040000 0x3c000>;
|
reg = <0x02040000 0x3c000>;
|
||||||
/* ... */
|
/* ... */
|
||||||
power-domains = <&gpc 1>;
|
power-domains = <&pd_pu>;
|
||||||
/* ... */
|
/* ... */
|
||||||
};
|
};
|
||||||
|
|
||||||
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
|
|
||||||
|
Loading…
Reference in New Issue
Block a user