Re: [PATCH] arm64: dts: imx8mp: add vpu pgc nodes

From: Greg Ungerer
Date: Mon Mar 27 2023 - 22:34:22 EST




On 28/3/23 12:15, Peng Fan wrote:


-----Original Message-----
From: Greg Ungerer <gerg@xxxxxxxxxxxxxx>
Sent: 2023年3月27日 21:24
To: Peng Fan <peng.fan@xxxxxxx>; Peng Fan (OSS)
<peng.fan@xxxxxxxxxxx>
Cc: Markus.Niebel@xxxxxxxxxxxxxxx; aford173@xxxxxxxxx; Aisheng Dong
<aisheng.dong@xxxxxxx>; alexander.stein@xxxxxxxxxxxxxxx;
devicetree@xxxxxxxxxxxxxxx; festevam@xxxxxxxxx; kernel@xxxxxxxxxxxxxx;
krzysztof.kozlowski+dt@xxxxxxxxxx; l.stach@xxxxxxxxxxxxxx;
laurent.pinchart@xxxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
dl-linux-imx <linux-imx@xxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx;
marex@xxxxxxx; paul.elder@xxxxxxxxxxxxxxxx; robh+dt@xxxxxxxxxx;
s.hauer@xxxxxxxxxxxxxx; shawnguo@xxxxxxxxxx; gerg@xxxxxxxxxx
Subject: Re: [PATCH] arm64: dts: imx8mp: add vpu pgc nodes

Hi Peng,

On 27/3/23 20:01, Peng Fan wrote:
Subject: Re: [PATCH] arm64: dts: imx8mp: add vpu pgc nodes

On 22/8/22 14:45, Peng Fan wrote:
Add i.MX8MP PGC nodes for vpu, which are used to supply power for
VPU.

Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
Signed-off-by: Shawn Guo <shawnguo@xxxxxxxxxx>
---
arch/arm64/boot/dts/freescale/imx8mp.dtsi | 27
+++++++++++++++++++++++
1 file changed, 27 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
index 0b165f98a82c..34af983b0210 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
@@ -598,6 +598,33 @@ pgc_ispdwp: power-domain@18 {
reg =
<IMX8MP_POWER_DOMAIN_MEDIAMIX_ISPDWP>;
clocks = <&clk
IMX8MP_CLK_MEDIA_ISP_ROOT>;
};
+
+ pgc_vpumix: power-domain@19 {
+ #power-domain-cells = <0>;
+ reg = <IMX8MP_POWER_DOMAIN_VPUMIX>;
+ clocks =<&clk IMX8MP_CLK_VPU_ROOT>;
+ };
+
+ pgc_vpu_g1: power-domain@20 {
+ #power-domain-cells = <0>;
+ power-domains = <&pgc_vpumix>;
+ reg = <IMX8MP_POWER_DOMAIN_VPU_G1>;
+ clocks = <&clk IMX8MP_CLK_VPU_G1_ROOT>;
+ };
+
+ pgc_vpu_g2: power-domain@21 {
+ #power-domain-cells = <0>;
+ power-domains = <&pgc_vpumix>;
+ reg = <IMX8MP_POWER_DOMAIN_VPU_G2>;
+ clocks = <&clk IMX8MP_CLK_VPU_G2_ROOT>;
+ };
+
+ pgc_vpu_vc8000e: power-domain@22 {
+ #power-domain-cells = <0>;
+ power-domains = <&pgc_vpumix>;
+ reg =
<IMX8MP_POWER_DOMAIN_VPU_VC8000E>;
+ clocks = <&clk
IMX8MP_CLK_VPU_VC8KE_ROOT>;
+ };
};
};
};

This change causes new error messages to come out during boot, for
example:

...
imx-pgc imx-pgc-domain.8: failed to command PGC
imx-pgc imx-pgc-domain.8: failed to command PGC
imx-pgc imx-pgc-domain.8: failed to command PGC
30890000.serial: ttymxc1 at MMIO 0x30890000 (irq = 197,
base_baud =
1500000) is a IMX
...
hwmon hwmon1: temp1_input not attached to any thermal zone
imx-pgc imx-pgc-domain.8: failed to command PGC
imx-pgc imx-pgc-domain.8: failed to command PGC
imx-pgc imx-pgc-domain.8: failed to command PGC
...

They don't seem to cause any problems on the hardware I am using,
well, at least not that I have found so far.

This first appeared for me in linux-6.1. But it is the same in todays
linux 6.3- rc4. Reverting this change (not completely trivial due to
a couple of commits after it that rely on it) fixes it - no more errors.
[Peng Fan]

The VPU BLK CTRL seems not enabled.

How to enable it?
I have the blk-ctrl config options enabled:

#
# i.MX SoC drivers
#
CONFIG_IMX_GPCV2_PM_DOMAINS=y
CONFIG_SOC_IMX8M=y
CONFIG_SOC_IMX9=y
CONFIG_IMX8M_BLK_CTRL=y
CONFIG_IMX9_BLK_CTRL=y
# end of i.MX SoC drivers

Running with the full arm64 defconfig and using the imx8mp-evk.dtb still
outputs these messages:

[ 18.150679] imx-pgc imx-pgc-domain.8: failed to command PGC
[ 18.159241] imx-pgc imx-pgc-domain.8: failed to command PGC
[ 18.167822] imx-pgc imx-pgc-domain.8: failed to command PGC

Or do you mean something more fundamental, like the hardware block not
being enabled by boot loader? (Something to keep in mind is that the
platform I am using has no video output, only serial console).
[Peng Fan]

The imx8mp vpu blk ctrl already in imx8m-blk-ctrl.c, so it should work.
Have you enabled imx8mp interconnect driver?
CONFIG_INTERCONNECT_IMX8MP

Yes, it is enabled:

CONFIG_INTERCONNECT=y
CONFIG_INTERCONNECT_IMX=y
# CONFIG_INTERCONNECT_IMX8MM is not set
# CONFIG_INTERCONNECT_IMX8MN is not set
# CONFIG_INTERCONNECT_IMX8MQ is not set
CONFIG_INTERCONNECT_IMX8MP=y

Regards
Greg