[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