AM625: DeepSleep mode does not work in PSDK11

Part Number: AM625
Other Parts Discussed in Thread: SK-AM62B-P1, TPS65219

Tool/software:

Hello support,

We are confirming the operation of DeepSleepMode on AM62xx.
It worked correctly with PSDK9 in the follow environment.
However, it does not work when upgrading to PSDK11.
Could you tell me how to solve it?

* Environment 
PSDK:PROCESSOR-SDK-LINUX-AM62X (Not RT Linux)
Version:11.00.09.04
SoC:AM6251
PCB: My custom board

I compared the logs for PSDK9 and 11, so please check them.

* PSDK11 log

root@am62xx-myboard:~# echo mem > /sys/power/state
[   81.644493] PM: suspend entry (deep)
[   81.666063] Filesystems sync: 0.017 seconds


* PSDK9 log

root@am62xx-myboard:~/# echo mem > /sys/power/state								
[ 2320.965421] PM: suspend entry (deep)								
[ 2320.994262] Filesystems sync: 0.025 seconds								
[ 2321.000363] Freezing user space processes								
[ 2321.011314] Freezing user space processes completed (elapsed 0.002 seconds)								
[ 2321.018527] OOM killer disabled.								
[ 2321.021926] Freezing remaining freezable tasks								
[ 2321.028132] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)								
[ 2321.035631] printk: Suspending console(s) (use no_console_suspend to debug)								


Wakeup source is main_uart0. Device tree is the same both PSDK 9 and 11.

&main_uart0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart0_pins_default>;
        interrupts-extended = <&gic500 GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>,
                                <&main_pmx0 0x1c8>; /* (D14) UART0_RXD PADCONFIG114 */
        interrupt-names = "irq", "wakeup";
};


Regards,
TO

  • Hello 
    Do you also have the EVM and have you tried that this works correctly on the EVM on SDK11x? 

  • Hello Bhatnagar,
    Yes, it has been confirmed to work on the PSDK 11 EVM.
    Is this caused by differences in the device tree?
    It was working on PSDK9, so what is the problem?

    Regards,
    TO

  • Hello,
    I need your information in order to solve this problem.

    Regards,
    TO

  • Hi TO,

    Apologies for the delay. I was able to validate Deep Sleep on both Linux SDK versions 11.0 and 11.1 on a TI EVM.

    First, lets check RTC wakeup to ensure the Deep Sleep sequence is executing. Please run 'rtcwake -m mem -s 10' which should use the internal RTC timer to wakeup the SoC in 10 seconds.

    If RTC wakeup doesn't work, then the custom software might be impacting the suspend sequence.

    If you plan to use main_uart0, the console logs needs to be suspended and the wakeup source needs to be enabled. This process is demonstrated in this bash script: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_00_09_04/exports/docs/linux/Foundational_Components/Power_Management/pm_wakeup_sources.html#main-uart

    root@am62xx-evm:~# echo mem > /sys/power/state
    root@am62xx-evm:~# 
    

    The logs you provided for using main_uart0 show more than this.

    Best Regards,

    Anshu

  • Hello Anshu,

    Thank you for your support.

    I confirmed RTC wakeup on my custom board.
    The RTC (RX8111 @ EPSON) on the custom board does not support Wakeup events.

    root@am62xx-myborad:~# rtcwake -m show -v
    rtcwake: assuming RTC uses UTC ...
    Using UTC time.
    rtcwake: cannot open /sys/class/rtc/rtc0/device/power/wakeup: No such file or directory
    rtcwake: /dev/rtc0 not enabled for wakeup events

    MAIN_UART0 was also set as a wakeup source, but Deep Sleep fails.

    root@am62xx-myboard:~# cat /sys/devices/platform/bus@f0000/2800000.serial/power/autosuspend_delay_ms
    3000
    root@am62xx-myboard:~# cat /sys/devices/platform/bus@f0000/2800000.serial/power/wakeup
    enabled
    root@am62xx-myboard:~# cat /sys/devices/platform/bus@f0000/2800000.serial/power/control
    auto
    root@am62xx-myboard:~# cat /sys/class/tty/ttyS2/power/wakeup
    enabled

    Since DeepSleep was working with PSDK9, I don't think there is an issue with the above.

    The device tree for am62xx-evm has been changed from PSDK9 to PSDK11.
    Does this difference affect Deep Sleep? My custom board was ported by referring to the device tree used in PSDK9.

    Regards,
    TO

  • Hi TO,

    Please share any device tree changes you have made. The Linux SDK default device tree changes from SDK 9.0 to 11.0 does not impact the functionality of Deep Sleep. PSCI and OPTEE are critical parts of the low power mode sequence and needs to be discovered by the device tree so lets make sure these are included.

    Are there any other software components changed or rebuilt?

    Thanks,

    Anshu

  • Hi TO,

    Also the rtcwake should be able to source the internal RTC module, not the external one. This likely means the RTC driver is not loaded.


    Thanks,

    Anshu

  • Hello Anshu,

    Thank you for your support.
    I enabled the internal RTC and checked, but the result was the same.

    root@am62xx-myboard:~# rtcwake -s 10 -m mem -d /dev/rtc1
    rtcwake: assuming RTC uses UTC ...
    rtcwake: wakeup from "mem" using /dev/rtc1 at Thu Jan  1 00:03:15 1970
    [  178.052502] PM: suspend entry (deep)
    [  178.056375] Filesystems sync: 0.000 seconds

    It works correctly in the PSDK9 environment.
    root@am62xx-myboard:~# rtcwake -s 10 -m mem -d /dev/rtc1
    rtcwake: assuming RTC uses UTC ...
    rtcwake: wakeup from "mem" using /dev/rtc1 at Thu Jan  1 00:02:25 1970
    [  128.431445] PM: suspend entry (deep)
    [  128.435395] Filesystems sync: 0.000 seconds
    [  128.445274] Freezing user space processes
    [  128.453062] Freezing user space processes completed (elapsed 0.002 seconds)
    [  128.460194] OOM killer disabled.
    [  128.463592] Freezing remaining freezable tasks
    [  128.469410] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
    [  128.476847] printk: Suspending console(s) (use no_console_suspend to debug)
    [  128.502337] am65-cpsw-nuss 8000000.ethernet eth0: Link is Down
    [  128.508422] omap8250 2800000.serial: PM domain pd:146 will not be powered off
    [  128.518177] Disabling non-boot CPUs ...
    [  128.518824] ti-sci 44043000.system-controller: ti_sci_resume: wakeup source: 0x50
    [  128.630516] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [  128.639445] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:01] driver [TI DP83822] (irq=POLL)
    [  128.639490] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rmii link mode
    [  128.647487] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:09] driver [TI DP83822] (irq=POLL)
    [  128.647510] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rmii link mode
    [  128.988991] OOM killer enabled.
    [  128.992191] Restarting tasks ... done.
    [  129.024767] random: crng reseeded on system resumption
    [  129.041517] PM: suspend exit
    root@am62xx-myboard:~#


    PSCI and OPTEE are critical parts of the low power mode sequence and needs to be discovered by the device tree so lets make sure these are included.

    Are there any other software components changed or rebuilt?

    ATF and OPTEE have not been modified. I tried the following in the same Yocto setting:

    1.MACHINE=myboard bitbake my_custom_image  
    Result: Deep Sleep fail

    2.MACHINE=am62xx-evm bitbake my_custom_image
    Result: Deep Sleep success

    Regards,
    TO

  • Hi, Anshu


    I need your information in order to to operate Deep Sleep Mode.
    I look forward to hearing from you.

    Best Regards,
    TO

  • Hi,
    Please let us know the current status regarding the question.
    Best Regards,
    TO

  • Hi TO,

    I was out of office and returning today. Please allow me sometime to review the thread and get back to you.

    Thanks,

    Anshu

  • Hi TO,

    Can you run 'mkimage -l tispl.bin' on the boot image? I want to make sure the TIFS stub is addressed correctly.

    Thanks,

    Anshu

  • Hi Anshu,

    The result of 'mkimage' command is as follows. Could you please check the log data.

    tisdk@9e535ee6642a:~/psdk-linux-rt-11.00.09.04/build/deploy-ti/images/am62xx-myboard$ mkimage -l tispl.bin
    FIT description: Configuration to load ATF and SPL
    Created:         Tue Mar 25 16:14:37 2025
     Image 0 (atf)
      Description:  ARM Trusted Firmware
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    58692 Bytes = 57.32 KiB = 0.06 MiB
      Architecture: AArch64
      OS:           ARM Trusted Firmware
      Load Address: 0x80000000
     Image 1 (tee)
      Description:  OP-TEE
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Trusted Execution Environment Image
      Compression:  uncompressed
      Data Size:    492532 Bytes = 480.99 KiB = 0.47 MiB
     Image 2 (dm)
      Description:  DM binary
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    195640 Bytes = 191.05 KiB = 0.19 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x89000000
     Image 3 (spl)
      Description:  SPL (64-bit)
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Standalone Program
      Compression:  uncompressed
      Data Size:    307900 Bytes = 300.68 KiB = 0.29 MiB
      Architecture: AArch64
      Load Address: 0x80080000
      Entry Point:  0x80080000
     Image 4 (tifsstub-hs)
      Description:  TIFSSTUB
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    32133 Bytes = 31.38 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9dc00000
     Image 5 (tifsstub-fs)
      Description:  TIFSSTUB
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    30387 Bytes = 29.67 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9dc00000
     Image 6 (tifsstub-gp)
      Description:  TIFSSTUB
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    29643 Bytes = 28.95 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9dc00000
     Image 7 (fdt-0)
      Description:  k3-am625-myboard
      Created:      Tue Mar 25 16:14:37 2025
      Type:         Flat Device Tree
      Compression:  uncompressed
      Data Size:    18247 Bytes = 17.82 KiB = 0.02 MiB
      Architecture: ARM
     Default Configuration: 'conf-0'
     Configuration 0 (conf-0)
      Description:  k3-am625-myboard
      Kernel:       unavailable
      Firmware:     atf
      FDT:          fdt-0
      Loadables:    tee
                    tifsstub-hs
                    tifsstub-fs
                    tifsstub-gp
                    dm
                    spl


    Best Regards,
    TO

  • Hi TO,

    From your output, you are building RT Linux which doesn't support low power modes.

    Since RT Linux needs a level of determinism, low power modes are not recommended because it modifies clocking of the SoC.

    Thanks,

    Anshu  

  • Hi Anshu,

    You probably thought it was RTLinux from the directory name.
    However, according to the "uname -a" command, it is Normal Linux.
    The variable ARAGO_RT_ENABLE is not used in bitbake.

    root@am62xx-myboard:~# uname -a
    Linux am62xx-myboard 6.12.17-ti-00771-gc85877d40f8e-dirty #1 SMP PREEMPT Tue Mar 25 12:45:29 UTC 2025 aarch64 GNU/Linux

    Best regards,
    TO

  • Hi TO,

    Thanks for the clarification. The tispl.bin image seems correct.

    Can you share the defconfig used?

    Thanks,

    Anshu

  • Hi Anshu,

    Thank you for checking the file.
    I will send you the defconfig files. Please confirm the attached file.

    3872.defconfig.zip

    Best regards,
    TO

  • Hi TO,

    From the output, it seems like those files are for U-Boot. Can you share the Linux .config file?

    The config that needs to be enabled is 'CONFIG_PM=y' which enables the low power modes.

    Does the custom board use a PMIC? If so, which PMIC and is it also enabled in the config file?

    For example, the SK-AM62B-P1 uses the TPS65219 so it enables 'CONFIG_REGULATOR_TPS65219=y'

    Thanks,

    Anshu

  • Hi Anshu,

    Can you share the Linux .config file?

    The config that needs to be enabled is 'CONFIG_PM=y' which enables the low power modes.

    I will attach the .config file for Linux. Also, CONFIG_PM was set to Y.
    7128..config.zip

    Does the custom board use a PMIC? If so, which PMIC and is it also enabled in the config file?

    For example, the SK-AM62B-P1 uses the TPS65219 so it enables 'CONFIG_REGULATOR_TPS65219=y'

    The PMIC uses the same TPS65219 as the SK-AM62B-P1Also, CONFIG_REGULATOR_TPS65219 was set to Y.

    Best regards,
    TO

  • Hi TO,

    Can you try applying this patch to the PMIC Linux driver: https://lore.kernel.org/all/20250620154541.2713036-1-s-ramamoorthy@ti.com/

    https://git.ti.com/gitweb?p=ti-linux-kernel/ti-linux-kernel.git;a=commit;h=1775b052ddbbeb4aa47cff748144637813181b6f

    Both links are the same patch.

    If that doesn't work, can you try to disable the PMIC in the Linux device tree?

    I want to check if its related to the bug reported here: https://sir.ext.ti.com/jira/browse/EXT_EP-12340

    Thanks,

    Anshu