Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
646ebf4
feat(linux): Revert "docs(power_management): AM62Lx: Update LPM featu…
kwillis01 Oct 6, 2025
2fb8905
fix(linux): Remove Linux changes for LPM workarounds
kwillis01 Oct 7, 2025
f548f18
chore(linux): Reword LPM workarounds
kwillis01 Oct 7, 2025
7046f4d
chore(linux): Add capitalization
kwillis01 Oct 7, 2025
552d9ee
fix(linux): Fix broken ATF link
kwillis01 Oct 8, 2025
44bd0e7
fix(pm_am62lx_low_power_modes): Note LPM workaround for RTC Only + DDR
kwillis01 Oct 7, 2025
d0a1148
feat(pm_am62lx_low_power_modes): Disable USB for RTC + DDR entry
kwillis01 Oct 7, 2025
32dc7f6
feat(pm_am62lx_low_power_modes): Add memory usage table for LPM
kwillis01 Oct 9, 2025
672389c
feat(linux): Revert "fix(AM62LX): remove invalid slug from toc"
kwillis01 Oct 8, 2025
9a0c4a1
feat(pm_wakeup_sources): Update Main UART wakeup enable
kwillis01 Oct 8, 2025
a686435
feat(pm_wakeup_sources): Update Main GPIO wakeup explanation
kwillis01 Oct 8, 2025
bd4bfd9
feat(pm_wakeup_sources): Add AM62L rtcwake output
kwillis01 Oct 8, 2025
186d001
feat(pm_wakeup_sources): Disable invalid wakeup sources for AM62L
kwillis01 Oct 7, 2025
7d7e2d4
feat(pm_wakeup_sources): Move I/O Daisy Chain info for AM62L
kwillis01 Oct 8, 2025
db6b509
feat(pm_wakeup_sources): Add table for AM62L wakeup sources
kwillis01 Oct 7, 2025
1790f82
feat(linux): Add LPM wakeup sources page to toc
kwillis01 Oct 8, 2025
8fbaf8b
refactor(pm_wakeup_sources): Generalize references to LPM
kwillis01 Oct 9, 2025
cfa1b1c
fix(pm_low_power_modes): Update disabled wakeup sources for I/O + DDR
kwillis01 Oct 6, 2025
b866211
style(pm_wakeup_sources): Change USB command prefix
kwillis01 Oct 13, 2025
d5c3420
refactor(pm_wakeup_sources): Fix inconsistent style for DTS node
kwillis01 Oct 13, 2025
22414ac
refactor(pm_wakeup_sources): Rephrase MCU GPIO wakeup
kwillis01 Oct 13, 2025
9d16b44
fix(Power_Management): Change LPM reference for AM62L
kwillis01 Oct 13, 2025
2051f39
fix(pm_wakeup_sources): Use pinned versions of MCU+ SDK
kwillis01 Oct 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions configs/AM62LX/AM62LX_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ devices/AM62LX/linux/Release_Specific_Migration_Guide
devices/AM62LX/linux/Release_Specific_Kernel_Performance_Guide
devices/AM62LX/linux/Linux_Performance_Guide
devices/AM62LX/linux/RT_Linux_Performance_Guide
devices/AM62LX/linux/Release_Specific_Workarounds
devices/AM62LX/linux/Release_Specific_Supported_Platforms_and_Versions

linux/Overview_Building_the_SDK
Expand Down Expand Up @@ -75,6 +76,7 @@ linux/Foundational_Components_Power_Management
linux/Foundational_Components/Power_Management/pm_overview
linux/Foundational_Components/Power_Management/pm_cpuidle
linux/Foundational_Components/Power_Management/pm_am62lx_low_power_modes
linux/Foundational_Components/Power_Management/pm_wakeup_sources

#linux/Foundational_Components/System_Security/SELinux
linux/Foundational_Components/System_Security/Auth_boot
Expand Down
1 change: 1 addition & 0 deletions source/devices/AM62LX/linux/Release_Specific.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ Release Specific
Release_Specific_Yocto_layer_Configuration
Release_Specific_Migration_Guide
Release_Specific_Kernel_Performance_Guide
Release_Specific_Workarounds
Release_Specific_Supported_Platforms_and_Versions
44 changes: 44 additions & 0 deletions source/devices/AM62LX/linux/Release_Specific_Workarounds.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
.. _am62l_suspend_workarounds:

###############################
System Suspend Mode Workarounds

Check warning on line 4 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Headings] Use sentence-style capitalization in 'System Suspend Mode Workarounds'. Raw Output: {"message": "[RedHat.Headings] Use sentence-style capitalization in 'System Suspend Mode Workarounds'.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 4, "column": 1}}}, "severity": "INFO"}
###############################

ARM Trusted Firmware changes

Check warning on line 7 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Headings] Use sentence-style capitalization in 'ARM Trusted Firmware changes'. Raw Output: {"message": "[RedHat.Headings] Use sentence-style capitalization in 'ARM Trusted Firmware changes'.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 7, "column": 1}}}, "severity": "INFO"}
****************************

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 :file:`tispl.bin` file to ensure
the changes take effect. To learn more about TF-A and how to rebuild it, see :ref:`foundational-components-atf`.
For rebuilding U-Boot and generating the new :file:`tispl.bin` follow :ref:`Build-U-Boot-label`.

.. code-block:: diff

diff --git a/plat/ti/k3/common/am62l_psci.c b/plat/ti/k3/common/am62l_psci.c
index 70f2aecdd..115729f4a 100644
--- a/plat/ti/k3/common/am62l_psci.c
+++ b/plat/ti/k3/common/am62l_psci.c
@@ -133,7 +133,7 @@ static void am62l_pwr_domain_suspend(const psci_power_state_t *target_state)
/* TODO: Pass the mode passed from kernel using s2idle
* For now make mode=6 for RTC only + DDR and mdoe=0 for deepsleep
*/
- uint32_t mode = 0;
+ uint32_t mode = 6;

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

This modifies :file:`plat/ti/k3/common/am62l_psci.c`, which is the new Power

Check warning on line 31 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Slash] Use either 'or' or 'and' in 'plat/ti' Raw Output: {"message": "[RedHat.Slash] Use either 'or' or 'and' in 'plat/ti'", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 31, "column": 22}}}, "severity": "WARNING"}
State Coordination Interface (PSCI) driver for AM62L in Arm Trusted Firmware.
The :func:`am62l_pwr_domain_suspend` function will change the default system
suspend mode from Deep Sleep to RTC Only + DDR.

Check warning on line 34 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'DDR') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'DDR') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 34, "column": 44}}}, "severity": "INFO"}

Check warning on line 34 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'RTC') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'RTC') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 34, "column": 33}}}, "severity": "INFO"}

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

Check warning on line 38 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'DDR') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'DDR') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 38, "column": 51}}}, "severity": "INFO"}

Check warning on line 38 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'RTC') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'RTC') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 38, "column": 40}}}, "severity": "INFO"}

Check warning on line 38 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'DDR') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'DDR') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 38, "column": 16}}}, "severity": "INFO"}

Check warning on line 38 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'RTC') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'RTC') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 38, "column": 5}}}, "severity": "INFO"}
consumption profile, but at the cost of higher wake-up latency.

Check warning on line 39 in source/devices/AM62LX/linux/Release_Specific_Workarounds.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.TermsSuggestions] Depending on the context, consider using 'later' rather than 'higher'. Raw Output: {"message": "[RedHat.TermsSuggestions] Depending on the context, consider using 'later' rather than 'higher'.", "location": {"path": "source/devices/AM62LX/linux/Release_Specific_Workarounds.rst", "range": {"start": {"line": 39, "column": 41}}}, "severity": "INFO"}

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 :file:`tispl.bin` is rebuilt and packaged, continue with entering LPM as described in :ref:`lpm_modes`.
Binary file added source/images/am62l_lpm_wakeup_evm_pin.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.. _am62lx-power-management:
.. _lpm_modes:

###############
Low Power Modes
Expand All @@ -7,10 +7,6 @@ Low Power Modes
Overview
********

.. important::

For this release, low power mode support is disabled. It will be enabled in 11.1 release.

The following sections describe a high-level description of the different low power modes (LPM) of the
device. If your application requires inactive power management, you must determine which
low power mode described below satisfies your requirements. Each mode must be evaluated
Expand All @@ -25,43 +21,56 @@ to highest power consumption):
RTC Only Plus DDR
*****************

RTC Only + DDR mode is the deepest low power mode that allows the system to enter a state of lowest power consumption
while still retaining the DDR RAM context.
.. note::

In order to enter RTC Only + DDR mode,
For this release, the RTC Only + DDR low power mode requires special steps
to enter. The steps are documented in :ref:`am62l_suspend_workarounds`.

.. code-block:: console
RTC Only + DDR mode is the deepest low power mode that allows the system to enter a state of lowest power consumption
while still retaining the DDR RAM context.

root@am62lxx-evm:~# echo mem > /sys/power/state
[ 67.335138] PM: suspend entry (deep)
[ 67.358190] Filesystems sync: 0.019 seconds
[ 67.363206] Freezing user space processes
[ 67.368991] Freezing user space processes completed (elapsed 0.001 seconds)
[ 67.376038] OOM killer disabled.
[ 67.379271] Freezing remaining freezable tasks
[ 67.384973] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[ 67.392398] printk: Suspending console(s) (use no_console_suspend to debug)
NOTICE: bl1_plat_arch_setup arch setup
NOTICE: Booting Trusted Firmware
NOTICE: BL1: v2.12.0(release):11.00.04-7-gaa3963759-dirty
NOTICE: BL1: Built : 15:56:37, Feb 25 2025
NOTICE: lpdd4_init <--
NOTICE: DDR ram size =80000000
NOTICE: bl1_platform_setup DDR init done
NOTICE: k3_bl1_handoff sent message to tifs
ERROR: Wake up src 0x0
ERROR: Wake up interrupt 0xc
[ 67.405953] Disabling non-boot CPUs ...
[ 67.408032] psci: CPU1 killed (polled 0 ms)
[ 67.408974] Enabling non-boot CPUs ...
[ 67.409281] Detected VIPT I-cache on CPU1
[ 67.409330] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
[ 67.409393] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[ 67.410371] CPU1 is up
[ 67.446329] OOM killer enabled.
[ 67.449479] Restarting tasks ... done.
[ 67.454324] random: crng reseeded on system resumption
[ 67.459689] PM: suspend exit
In order to enter RTC Only + DDR mode, first disable USB0 and USB1 as wakeup
sources.

.. code-block:: console

root@am62lxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.dwc3-usb/power/wakeup
root@am62lxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.dwc3-usb/power/wakeup

Now the SoC can be suspended using the following command.

.. code-block:: console

root@am62lxx-evm:~# echo mem > /sys/power/state
[ 67.335138] PM: suspend entry (deep)
[ 67.358190] Filesystems sync: 0.019 seconds
[ 67.363206] Freezing user space processes
[ 67.368991] Freezing user space processes completed (elapsed 0.001 seconds)
[ 67.376038] OOM killer disabled.
[ 67.379271] Freezing remaining freezable tasks
[ 67.384973] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[ 67.392398] printk: Suspending console(s) (use no_console_suspend to debug)
NOTICE: bl1_plat_arch_setup arch setup
NOTICE: Booting Trusted Firmware
NOTICE: BL1: v2.12.0(release):11.00.04-7-gaa3963759-dirty
NOTICE: BL1: Built : 15:56:37, Feb 25 2025
NOTICE: lpdd4_init <--
NOTICE: DDR ram size =80000000
NOTICE: bl1_platform_setup DDR init done
NOTICE: k3_bl1_handoff sent message to tifs
ERROR: Wake up src 0x0
ERROR: Wake up interrupt 0xc
[ 67.405953] Disabling non-boot CPUs ...
[ 67.408032] psci: CPU1 killed (polled 0 ms)
[ 67.408974] Enabling non-boot CPUs ...
[ 67.409281] Detected VIPT I-cache on CPU1
[ 67.409330] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
[ 67.409393] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[ 67.410371] CPU1 is up
[ 67.446329] OOM killer enabled.
[ 67.449479] Restarting tasks ... done.
[ 67.454324] random: crng reseeded on system resumption
[ 67.459689] PM: suspend exit


DeepSleep
Expand Down Expand Up @@ -104,3 +113,37 @@ In order to enter DeepSleep,
[ 88.642801] random: crng reseeded on system resumption
[ 88.649913] PM: suspend exit
root@am62lxx-evm:~#

Memory Usage
************

The following table summarizes the usage of memory in different modes of
operation of the device.

+--------+-------------+----------------------+------------------+------------+-------------------+
| Domain | Memory | Boot Operation | Normal Operation | Deep Sleep | RTC Only + DDR |
+========+=============+======================+==================+============+===================+
| WKUP | TIFS SRAM | TIFS load (144 KB) | TIFS (144 KB) | TIFS | TIFS (144 KB) |
| | (196 KB) | + Sec ROM (20 KB) | | (144 KB) | |
| | | | | | SEC ROM (20 KB) |
| | | | | | |
| | | | | | TIFS_STUB (32 KB) |
+--------+-------------+----------------------+------------------+------------+-------------------+
| WKUP | WKUP PSRAM | Pub ROM (64 KB) | | A53 Stub, | Pub ROM (64 KB) |
| | (512 KB) | or (exclusively) | | TF-A Stub | |
| | | PreBL Stack & | | (64 KB) | |
| | | runtime data (64 KB) | | | |
+--------+-------------+----------------------+------------------+------------+-------------------+
| Main | MAIN MSRAM | PreBL (64 KB) | TIFS IPC (24 KB) | TIFS IPC | PreBL (64 KB) |
| | (96 KB) | DDR initialization | | (24 KB) | Non-destructive |
| | | | | | DDR initializtion |
| | | Pub ROM (8 KB) | | | |
| | | | | | TIFS IPC + |
| | | ROM IPC (8 KB) | | | ROM IPC (24 KB) |
| | | | | | |
| | | | | | Pub ROM (8 KB) |
+--------+-------------+----------------------+------------------+------------+-------------------+
| Main | DDR | Linux | Linux | Linux | Linux |
| | | | | | |
| | | TF-A | TF-A | TF-A | TF-A |
+--------+-------------+----------------------+------------------+------------+-------------------+
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,16 @@ I/O Only Plus DDR

Atleast one of the wakeup sources listed above must be enabled to wakeup from I/O Only Plus DDR mode.

.. rubric:: To enter I/O Only Plus DDR mode, first disable wakeup from RTC, USB0 and USB1 as these wakeup
sources are not supported for this mode.
.. rubric:: To enter I/O Only Plus DDR mode, first disable wakeup from RTC,
Main UART, USB0, and USB1 as these wakeup sources are not
supported for this mode.

.. ifconfig:: CONFIG_part_variant in ('AM62AX')

.. code-block:: console

root@am62axx-evm:~# echo disabled > /sys/class/rtc/rtc0/device/power/wakeup
root@am62axx-evm:~# echo disabled > /sys/bus/platform/devices/2800000.serial/power/wakeup
root@am62axx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.dwc3-usb/power/wakeup
root@am62axx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f910000.dwc3-usb/power/wakeup

Expand All @@ -155,6 +157,7 @@ I/O Only Plus DDR
.. code-block:: console

root@am62pxx-evm:~# echo disabled > /sys/class/rtc/rtc0/device/power/wakeup
root@am62pxx-evm:~# echo disabled > /sys/bus/platform/devices/2800000.serial/power/wakeup
root@am62pxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.usb/power/wakeup
root@am62pxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f910000.usb/power/wakeup

Expand Down
Loading
Loading