2024-11-07 10:09 PM - edited 2024-11-07 10:18 PM
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.
Solved! Go to Solution.
2024-11-11 01:43 AM
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
2024-11-08 01:35 PM - edited 2024-11-08 01:36 PM
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
2024-11-11 01:43 AM
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