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.