2.6. System Suspend Mode Workarounds

2.6.1. ARM Trusted Firmware changes

This patch updates the system suspend mode for the AM62L platform. After making the following changes, re-build the ARM Trusted Firmware and then re-package it in the tispl.bin file to ensure the changes take effect. To learn more about TF-A and how to rebuild it, see ARM Trusted Firmware-A. For rebuilding U-Boot and generating the new tispl.bin follow Build U-Boot.

diff --git a/plat/ti/k3/common/am62l_psci.c b/plat/ti/k3/common/am62l_psci.c
index 3df4986e5..945da5908 100644
--- a/plat/ti/k3/common/am62l_psci.c
+++ b/plat/ti/k3/common/am62l_psci.c
@@ -317,6 +317,7 @@ static void am62l_pwr_domain_suspend(const psci_power_state_t *target_state)
         * mode=6 for RTC only + DDR and mode=0 for deepsleep
         */
        uint32_t mode = am62l_lpm_state;
+       mode = 6;

        core = plat_my_core_pos();
        proc_id = PLAT_PROC_START_ID + core;

This modifies plat/ti/k3/common/am62l_psci.c, which is the new Power State Coordination Interface (PSCI) driver for AM62L in Arm Trusted Firmware. The am62l_pwr_domain_suspend() function will change the default system suspend mode from Deep Sleep to RTC Only + DDR.

The default mode of 0 is the Deep Sleep state. Deep Sleep provides the lowest latency wake-up but also uses more power. The updated default mode of 6 is the RTC only + DDR state. In contrast, RTC only + DDR offers a lower power consumption profile, but at the cost of higher wake-up latency.

This change is a temporary solution. A more robust solution is under development to pass a suspend parameter from the kernel by leveraging the s2idle mechanism.

Once tispl.bin is rebuilt and packaged, continue with entering LPM as described in Low Power Modes.