cancel
Showing results for 
Search instead for 
Did you mean: 

STM32MP157 "E/TC:0 do_pm_callback:75 Suspend vref_ddr (0xde003d9d) failed: 0xffff0000"

loupi
Associate II

Hello,
I developed a custom board very close to the STM32MP157D-DK1.

I use the STM32mp157 and the power manager the STPMIC1A

I use "openstlinux-6.1-yocto-mickledore-mpu-v24.06.26"

I can't get my card to go into deep low power, I directly get a problem related to vref_ddr

https://wiki.st.com/stm32mpu/wiki/Power_overview

here is the error i get on the console :

root@stm32mp1-display:~# systemctl suspend
root@stm32mp1-display:~#
root@stm32mp1-display:~# [ 149.909535] PM: suspend entry (deep)
[ 149.918601] Filesystems sync: 0.006 seconds
[ 149.922403] Freezing user space processes
[ 149.927460] Freezing user space processes completed (elapsed 0.001 seconds)
[ 149.933074] OOM killer disabled.
[ 149.936396] Freezing remaining freezable tasks
[ 149.942086] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[ 150.116577] dwc2 49000000.usb-otg: suspending usb gadget configfs-gadget.g1
[ 150.141203] Disabling non-boot CPUs ...
[ 150.144797] CPU1 killed.
E/TC:0 do_pm_callback:75 Suspend vref_ddr (0xde003d9d) failed: 0xffff0000
[ 150.147200] Enabling non-boot CPUs ...
I/TC: SeiI/TC: Secondary CPU 1 switching to normal world boot
[ 150.157052] CPU1 is up
[ 150.173154] dwmac4: Master AXI performs any burst length
[ 150.177168] stm32-dwmac 5800a000.ethernet end0: No Safety Features support found
[ 150.184485] stm32-dwmac 5800a000.ethernet end0: IEEE 1588-2008 Advanced Timestamp supported
[ 150.192905] stm32-dwmac 5800a000.ethernet end0: configuring for phy/rmii link mode
[ 150.280993] dwc2 49000000.usb-otg: resuming usb gadget configfs-gadget.g1
[ 150.446398] OOM killer enabled.
[ 150.448159] Restarting tasks ... done.
[ 150.452854] random: crng reseeded on system resumption
[ 150.458269] PM: suspend exit

Here is the description of the node &i2c4 and &pwr_regulators in optee-os :

 

 

&i2c4{
	pinctrl-names = "default";
	pinctrl-0 = <&i2c4_pins_mx>;
	status = "okay";

	/* USER CODE BEGIN i2c4 */
	compatible = "st,stm32mp15-i2c-non-secure";
	i2c-scl-rising-time-ns = <185>;
	i2c-scl-falling-time-ns = <20>;
	clock-frequency = <400000>;
	/delete-property/ dmas;
	/delete-property/ dma-names;

	pmic:stpmic@33{
		compatible = "st,stpmic1";
		reg = <0x33>;
		interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
		interrupt-controller;
		#interrupt-cells = <2>;
		status = "okay";

		regulators{
			compatible = "st,stpmic1-regulators";
			buck1-supply = <&vin>;
			buck2-supply = <&vin>;
			buck3-supply = <&vin>;
			buck4-supply = <&vin>;
			ldo1-supply = <&v3v3>;
			ldo2-supply = <&vin>;
			ldo3-supply = <&vdd_ddr>;
			ldo4-supply = <&vin>;
			ldo5-supply = <&vin>;
			ldo6-supply = <&v3v3>;
			vref_ddr-supply = <&vin>;
			boost-supply = <&vin>;
			pwr_sw1-supply = <&bst_out>;
			pwr_sw2-supply = <&bst_out>;

			vddcore:buck1{
				regulator-name = "vddcore";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-initial-mode = <0>;
				regulator-over-current-protection;

				lp-stop{
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1200000>;
				};

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			vdd_ddr:buck2{
				regulator-name = "vdd_ddr";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-initial-mode = <0>;
				regulator-over-current-protection;

				lp-stop{
					regulator-suspend-microvolt = <1350000>;
					regulator-on-in-suspend;
				};

				standby-ddr-sr{
					regulator-suspend-microvolt = <1350000>;
					regulator-on-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			vdd:buck3{
				regulator-name = "vdd";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				st,mask-reset;
				regulator-initial-mode = <0>;
				regulator-over-current-protection;

				lp-stop{
					regulator-suspend-microvolt = <3300000>;
					regulator-on-in-suspend;
				};

				standby-ddr-sr{
					regulator-suspend-microvolt = <3300000>;
					regulator-on-in-suspend;
				};

				standby-ddr-off{
					regulator-suspend-microvolt = <3300000>;
					regulator-on-in-suspend;
				};
			};

			v3v3:buck4{
				regulator-name = "v3v3";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-over-current-protection;
				regulator-initial-mode = <0>;

				lp-stop{
					regulator-suspend-microvolt = <3300000>;
					regulator-on-in-suspend;
				};

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			v1v8_audio:ldo1{
				regulator-name = "v1v8_audio";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				interrupts = <IT_CURLIM_LDO1 0>;

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			v3v3_hdmi:ldo2{
				regulator-name = "v3v3_hdmi";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				interrupts = <IT_CURLIM_LDO2 0>;

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			vtt_ddr:ldo3{
				regulator-name = "vtt_ddr";
				regulator-always-on;
				regulator-over-current-protection;
				st,regulator-sink-source;

				lp-stop{
					regulator-off-in-suspend;
				};

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			vdd_usb:ldo4{
				regulator-name = "vdd_usb";
				interrupts = <IT_CURLIM_LDO4 0>;

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			vdda:ldo5{
				regulator-name = "vdda";
				regulator-min-microvolt = <2900000>;
				regulator-max-microvolt = <2900000>;
				regulator-always-on;
				interrupts = <IT_CURLIM_LDO5 0>;

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			v1v2_hdmi:ldo6{
				regulator-name = "v1v2_hdmi";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				interrupts = <IT_CURLIM_LDO6 0>;

				standby-ddr-sr{
					regulator-off-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			vref_ddr:vref_ddr{
				regulator-name = "vref_ddr";
				regulator-always-on;

				lp-stop{
					regulator-on-in-suspend;
				};

				standby-ddr-sr{
					regulator-on-in-suspend;
				};

				standby-ddr-off{
					regulator-off-in-suspend;
				};
			};

			bst_out:boost{
				regulator-name = "bst_out";
				interrupts = <IT_OCP_BOOST 0>;
			};

			vbus_otg:pwr_sw1{
				regulator-name = "vbus_otg";
				interrupts = <IT_OCP_OTG 0>;
			};

			vbus_sw:pwr_sw2{
				regulator-name = "vbus_sw";
				interrupts = <IT_OCP_SWOUT 0>;
				regulator-active-discharge = <1>;
			};
		};
	};
	/* USER CODE END i2c4 */
};

&pwr_regulators{
	status = "okay";

	/* USER CODE BEGIN pwr_regulators */
	system_suspend_supported_soc_modes = <
		STM32_PM_CSLEEP_RUN
		STM32_PM_CSTOP_ALLOW_LP_STOP
		STM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR
	>;
	system_off_soc_mode = <STM32_PM_CSTOP_ALLOW_STANDBY_DDR_OFF>;
	vdd-supply = <&vdd>;
	vdd_3v3_usbfs-supply = <&vdd_usb>;
	/* USER CODE END pwr_regulators */
};

 

 

 

I thank you in advance for your support because I have been stuck on this part for some time now despite all my research.

1 ACCEPTED SOLUTION

Accepted Solutions

Good morning,

I added the complete logs since startup "Log20241111.log"

I wonder if my problem is not related to SCMI Driver

I have these anomalies at startup :


[ 0.130929] Driver 'scmi-optee' was unable to register with bus_type 'tee' because the bus was not initialized.

 

[ 2.650138] stpmic1 2-0033: PMIC Chip Version: 0x21
[ 2.656723] platform 5c002000.i2c:stpmic@33:regulators: Fixed dependency cycle(s) with /soc/etzpc@5c007000/i2c@5c002000/stpmic@33/regulators/boost
[ 2.668630] platform 5c002000.i2c:stpmic@33:regulators: Fixed dependency cycle(s) with /soc/etzpc@5c007000/i2c@5c002000/stpmic@33/regulators/buck2
[ 2.681660] platform 5c002000.i2c:stpmic@33:regulators: Fixed dependency cycle(s) with /soc/etzpc@5c007000/i2c@5c002000/stpmic@33/regulators/buck4
[ 2.735227] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.744079] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.754445] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.764703] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.774969] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.785218] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.795489] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.805741] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033

I hope to receive some leads soon

Thank you

 

View solution in original post

2 REPLIES 2
loupi
Associate II

Hello, 

In the wiki "PMIC hardware components", it is noted this :

 

 

3.4.2. OP-TEE
STPMIC1 is used by OP-TEE OS to configure the regulators for system suspend and system shutdown.

Driver source code:

core/include/drivers/stpmic1.h
core/drivers/stpmic1.c
3.4.2.1. SCMI Driver
As most of regulators handled by OP-TEE, the STPMIC1 regulators can be shared via SCMI voltage domains protocol to the non secure world.

It is the default configuration for STM32MP13x lines 

 

 

 

Do I need to adapt the DeviceTree of the "STM32MP157D-DK1" to start system suspend since Linux Kernel with SCMI like in STM32mp13x lines ?

 

Thank you

 

 

 

Good morning,

I added the complete logs since startup "Log20241111.log"

I wonder if my problem is not related to SCMI Driver

I have these anomalies at startup :


[ 0.130929] Driver 'scmi-optee' was unable to register with bus_type 'tee' because the bus was not initialized.

 

[ 2.650138] stpmic1 2-0033: PMIC Chip Version: 0x21
[ 2.656723] platform 5c002000.i2c:stpmic@33:regulators: Fixed dependency cycle(s) with /soc/etzpc@5c007000/i2c@5c002000/stpmic@33/regulators/boost
[ 2.668630] platform 5c002000.i2c:stpmic@33:regulators: Fixed dependency cycle(s) with /soc/etzpc@5c007000/i2c@5c002000/stpmic@33/regulators/buck2
[ 2.681660] platform 5c002000.i2c:stpmic@33:regulators: Fixed dependency cycle(s) with /soc/etzpc@5c007000/i2c@5c002000/stpmic@33/regulators/buck4
[ 2.735227] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.744079] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.754445] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.764703] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.774969] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.785218] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.795489] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033
[ 2.805741] stpmic1-regulator 5c002000.i2c:stpmic@33:regulators: Failed to create device link (0x180) with 2-0033

I hope to receive some leads soon

Thank you