[PATCH] ARM: stm32: Power cycle Buck3 in reset on DHSOM
Patrick DELAUNAY
patrick.delaunay at foss.st.com
Fri Jun 16 15:04:19 CEST 2023
Hi,
On 6/15/23 08:44, Marek Vasut wrote:
> On 5/29/23 03:57, Marek Vasut wrote:
>
> Hello again,
>
> [...]
>
>>> So the backup domain is loosed on ST board with STPMIC1 only when
>>> the power
>>>
>>> is removed and not for reset or for power off.
>>
>> Thank you for the clarification.
>>
>> I should check suspend/resume on EV1 soon ...
>
> We do have this problem on EV1 too I'm afraid:
>
> # U-Boot 2f4664f5c3e ("Merge branch '2023-06-14-assorted-fixes'")
> $ git clean -fqdx ; make stm32mp15_basic_defconfig && make -j$(nproc)
> $ dd if=u-boot-spl.stm32 of=/dev/sdX1 && dd if=u-boot-spl.stm32
> of=/dev/sdX2 && dd if=u-boot.img of=/dev/sdX3
>
> # Linux next 925294c9aa184 ("Add linux-next specific files for 20230615")
>
> U-Boot SPL 2023.07-rc4-00008-g2f4664f5c3e (Jun 15 2023 - 08:36:52 +0200)
> RAM: DDR3-DDR3L 32bits 533000kHz
> WDT: Started watchdog at 5a002000 with servicing every 1000ms (32s
> timeout)
> image entry point: 0xc0100000
>
>
> U-Boot 2023.07-rc4-00008-g2f4664f5c3e (Jun 15 2023 - 08:36:52 +0200)
>
> CPU: STM32MP157FAA Rev.Z
> Model: STMicroelectronics STM32MP157C eval daughter on eval mother
> Board: stm32mp1 in basic mode (st,stm32mp157c-ev1)
> Board: MB1263 Var4.0 Rev.C-03
> ...
> boot as usual into Linux with initramfs for simplicity sake
> ...
> $ cat /proc/cmdline
> console=ttySTM0,115200 no_console_suspend
>
> # Suspend the system repeatedly (failure happens after 2-3 wake up
> cycles)
> $ while true ; do rtcwake -s 100 -m mem ; done
> wakeup from "mem" at Sat Jan 1 00:03:11 2000
> [ 39.316598] PM: suspend entry (deep)
> [ 39.318905] Filesystems sync: 0.000 seconds
> [ 39.324327] Freezing user space processes
> [ 39.328194] Freezing user space processes completed (elapsed 0.001
> seconds)
> [ 39.334006] OOM killer disabled.
> [ 39.337158] Freezing remaining freezable tasks
> [ 39.342777] Freezing remaining freezable tasks completed (elapsed
> 0.001 seconds)
> [ 39.426015] Disabling non-boot CPUs ...
> [ 39.448635] Retrying again to check for CPU kill
> [ 39.451909] CPU1 killed.
> U-Boot SPL 2023.07-rc4-00008-g2f4664f5c3e (Jun 15 2023 - 08:36:52 +0200)
> RAM: DDR3-DDR3L 32bits 533000kHz
> DDR invalid size : 0x4, expected 0x40000000
> DRAM init failed: -22
> ### ERROR ### Please RESET the board ###
>
> Press RESET button
>
> U-Boot SPL 2023.07-rc4-00008-g2f4664f5c3e (Jun 15 2023 - 08:36:52 +0200)
> RAM: DDR3-DDR3L 32bits 533000kHz
> DDR invalid size : 0x4, expected 0x40000000
> DRAM init failed: -22
> ### ERROR ### Please RESET the board ###
>
>
I try it with the latest STMicroelectronics OSS image.
I just change in U-Boot config to be aligned the expected SD-Card
partionning
configs/stm32mp15_basic_defconfig:
-CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=5
But low power is not supported in this downstream config :-<
I got the error:
.......
U-Boot SPL 2023.07-rc4-00008-g2f4664f5c3ed-dirty (Jun 16 2023 - 11:37:52
+0200)
RAM: DDR3-DDR3L 32bits 533000kHz
WDT: Started watchdog at 5a002000 with servicing every 1000ms (32s timeout)
image entry point: 0xc0100000
U-Boot 2023.07-rc4-00008-g2f4664f5c3ed-dirty (Jun 16 2023 - 11:37:52 +0200)
CPU: STM32MP157FAA Rev.Z
Model: STMicroelectronics STM32MP157C eval daughter on eval mother
Board: stm32mp1 in basic mode (st,stm32mp157c-ev1)
Board: MB1263 Var4.0 Rev.C-03
DRAM: 1 GiB
Clocks:
- MPU : 800 MHz
- MCU : 208.878 MHz
- AXI : 266.500 MHz
- PER : 24 MHz
- DDR : 533 MHz
Core: 288 devices, 42 uclasses, devicetree: separate
WDT: Started watchdog at 5a002000 with servicing every 1000ms (32s timeout)
NAND: 1024 MiB
MMC: STM32 SD/MMC: 0, STM32 SD/MMC: 1
Loading Environment from MMC... Invalid ENV offset in MMC, copy=0
In: serial
Out: serial
Err: serial
Net: eth0: ethernet at 5800a000
Hit any key to stop autoboot: 0
....
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.4.0-rc6 (oe-user at oe-host)
(arm-ostl-linux-gnueabi-gcc (GCC) 12.2.0, GNU ld (GNU Binutils)
2.40.20230119) #1 SMP PREEMPT Sun Jun 11 21:35:30 UTC 2023
....
root at stm32mp1-disco-oss:~# while true ; do rtcwake -s 100 -m mem ; done
rtcwake: unrecognized suspend state 'mem'
I check also with downstream (OpenSTLinux V4.0),
and I can't reproduced the issue but we are using TF-A / OP-TEE / SCMI
to support all the low power modes.
And this low power support (in TF-A/ OP-TEE / Linux with SCMI) is not
yet up streamed.
PS: if you are not able to restart even after a RESET,
I assume something is wrong in the PMIC configuration
(for example in NVM or in initial regulator configuration)
so you have no power cycle on DDR during reset...
=> something is wrong in PMIC configuration in linux ?
before you configure the low power mode in U-Boot and set
the DDR in self-refresh in PSCI FW
u-boot/arch/arm/mach-stm32mp/psci.c
Even if we don't support officially the lower power mode with U-Boot SPL,
you can contact directly the STMicroelectonics support on online support :
https://community.st.com/s/onlinesupport
or post a message on STM32MPUs forum:
https://community.st.com/s/topic/0TO0X0000003u2AWAQ/stm32-mpus
Regards
Patrick
More information about the U-Boot
mailing list