diff --git a/configs/AM62AX/AM62AX_linux_toc.txt b/configs/AM62AX/AM62AX_linux_toc.txt index 5735c9ff7..bc8832860 100644 --- a/configs/AM62AX/AM62AX_linux_toc.txt +++ b/configs/AM62AX/AM62AX_linux_toc.txt @@ -94,6 +94,7 @@ linux/Foundational_Components/Power_Management/pm_low_power_modes linux/Foundational_Components/Power_Management/pm_wakeup_sources linux/Foundational_Components/Power_Management/pm_sw_arch linux/Foundational_Components/Power_Management/pm_debug +linux/Foundational_Components/Power_Management/pm_upstream linux/Foundational_Components/System_Security/Security_overview linux/Foundational_Components/System_Security/SELinux diff --git a/configs/AM62DX/AM62DX_linux_toc.txt b/configs/AM62DX/AM62DX_linux_toc.txt index 2c5946c59..49de07843 100644 --- a/configs/AM62DX/AM62DX_linux_toc.txt +++ b/configs/AM62DX/AM62DX_linux_toc.txt @@ -79,6 +79,7 @@ linux/Foundational_Components/Power_Management/pm_low_power_modes linux/Foundational_Components/Power_Management/pm_wakeup_sources linux/Foundational_Components/Power_Management/pm_sw_arch linux/Foundational_Components/Power_Management/pm_debug +linux/Foundational_Components/Power_Management/pm_upstream linux/Foundational_Components_Kernel_Users_Guide linux/Foundational_Components_Kernel_LTP-DDT_Validation diff --git a/configs/AM62LX/AM62LX_linux_toc.txt b/configs/AM62LX/AM62LX_linux_toc.txt index 315a27f23..805510b85 100644 --- a/configs/AM62LX/AM62LX_linux_toc.txt +++ b/configs/AM62LX/AM62LX_linux_toc.txt @@ -83,6 +83,7 @@ linux/Foundational_Components/Power_Management/pm_am62lx_low_power_modes linux/Foundational_Components/Power_Management/pm_psci_s2idle linux/Foundational_Components/Power_Management/pm_wakeup_sources linux/Foundational_Components/Power_Management/pm_am62lx_debug +linux/Foundational_Components/Power_Management/pm_upstream linux/Foundational_Components/System_Security/Security_overview #linux/Foundational_Components/System_Security/SELinux diff --git a/configs/AM62PX/AM62PX_linux_toc.txt b/configs/AM62PX/AM62PX_linux_toc.txt index c1455d5a4..9a247a5b7 100644 --- a/configs/AM62PX/AM62PX_linux_toc.txt +++ b/configs/AM62PX/AM62PX_linux_toc.txt @@ -99,6 +99,7 @@ linux/Foundational_Components/Power_Management/pm_low_power_modes linux/Foundational_Components/Power_Management/pm_wakeup_sources linux/Foundational_Components/Power_Management/pm_sw_arch linux/Foundational_Components/Power_Management/pm_debug +linux/Foundational_Components/Power_Management/pm_upstream linux/Foundational_Components/System_Security/Security_overview linux/Foundational_Components/System_Security/SELinux diff --git a/configs/AM62X/AM62X_linux_toc.txt b/configs/AM62X/AM62X_linux_toc.txt index 721591f5f..ab66e95c6 100644 --- a/configs/AM62X/AM62X_linux_toc.txt +++ b/configs/AM62X/AM62X_linux_toc.txt @@ -96,6 +96,7 @@ linux/Foundational_Components/Power_Management/pm_low_power_modes linux/Foundational_Components/Power_Management/pm_wakeup_sources linux/Foundational_Components/Power_Management/pm_sw_arch linux/Foundational_Components/Power_Management/pm_debug +linux/Foundational_Components/Power_Management/pm_upstream linux/Foundational_Components/System_Security/Security_overview linux/Foundational_Components/System_Security/SELinux diff --git a/source/linux/Foundational_Components/Power_Management/pm_upstream.rst b/source/linux/Foundational_Components/Power_Management/pm_upstream.rst new file mode 100644 index 000000000..1d1620d64 --- /dev/null +++ b/source/linux/Foundational_Components/Power_Management/pm_upstream.rst @@ -0,0 +1,331 @@ +.. _pm_upstream: + +############### +Upstream Status +############### + +At TI, developers practice an upstream-first mindset where all patches in the +SDK should be available in the upstream repositories as soon as possible. +However, because of the extensive community review process, getting patches +into the upstream repositories can take a long time, so features might appear +in the SDK before upstream. + +This page tracks the status of all low power features in upstream. We encourage +users to review any pending series listed. + +We update this page with each SDK release, so it might fall out of date as the +upstream community accepts new patches. + +.. note:: + + Upstream support for a wakeup source does not guarantee device tree + configuration. Refer to the + :ref:`"Wakeup Sources" ` section for more information + about how to configure wakeup sources. + +.. ifconfig:: CONFIG_part_variant in ('AM62X') + + .. list-table:: Feature Upstream Status + :widths: auto + :header-rows: 1 + + * - Feature + - Upstream + - Notes + * - DeepSleep + - Yes + - Remoteproc graceful shutdown is not upstream. See additional steps below. + * - MCU Only + - Yes + - Same remoteproc limitation as DeepSleep. + * - Partial I/O + - Yes + - + * - Dynamic Frequency Scaling + - Yes + - + * - Standby + - No + - + * - Runtime PM + - Yes + - + + .. list-table:: Wakeup Source Upstream Status + :widths: auto + :header-rows: 1 + + * - Wakeup Source + - DeepSleep + - MCU Only + - Partial I/O + - Notes + * - Real-Time Clock (RTC) + - Yes + - Yes + - + - + * - MCU (WKUP) GPIO + - Yes + - Yes + - + - + * - Main I/O Daisy Chain + - Partial + - Partial + - + - Upstream includes Main UART wakeup but not Main GPIO wakeup. + * - USB + - Yes + - Yes + - + - + * - WKUP UART + - Yes + - Yes + - + - + * - MCU IPC + - + - Yes + - + - + * - CAN I/O Daisy Chain + - No + - No + - Yes + - + +.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX', 'AM62PX') + + .. list-table:: Feature Upstream Status + :widths: auto + :header-rows: 1 + + * - Feature + - Upstream + - Notes + * - DeepSleep + - Yes + - + * - MCU Only + - Yes + - + * - Partial I/O + - Yes + - + * - I/O Only Plus DDR + - In progress + - Linux and U-Boot patches are pending review. + * - Dynamic Frequency Scaling + - Yes + - + * - Standby + - No + - + * - Runtime PM + - Yes + - + + .. list-table:: Wakeup Source Upstream Status + :widths: auto + :header-rows: 1 + + * - Wakeup Source + - DeepSleep + - MCU Only + - Partial I/O + - I/O Only Plus DDR + - Notes + * - Real-Time Clock (RTC) + - Yes + - Yes + - + - + - + * - WKUP GPIO + - Yes + - Yes + - + - + - + * - Main I/O Daisy Chain + - Partial + - Partial + - + - + - Upstream includes Main UART wakeup but not Main GPIO wakeup. + * - USB + - Yes + - Yes + - + - + - + * - WKUP UART + - Yes + - Yes + - + - + - + * - MCU IPC + - + - Yes + - + - + - + * - CAN I/O Daisy Chain + - No + - No + - Yes + - In progress + - I/O Only Plus DDR patches are in progress. + +.. ifconfig:: CONFIG_part_variant in ('AM62LX') + + .. important:: + + TI has not yet upstreamed all low power mode features in Arm Trusted + Firmware. The following list applies to upstream Linux only when using + the TI fork for TF-A. Refer to + :ref:`Arm Trusted Firmware ` section for how + to use the TI TF-A fork. + + .. list-table:: Feature Upstream Status + :widths: auto + :header-rows: 1 + + * - Feature + - Upstream + - Notes + * - DeepSleep + - Yes + - + * - RTC + I/O + DDR + - In progress + - Linux patches pending review. + * - RTC Only + - In progress + - + * - Standby + - In progress + - Linux patches pending review. + * - Dynamic Frequency Scaling + - Yes + - + * - Runtime PM + - Yes + - + * - Wakeup source detection + - No + - + + .. list-table:: Wakeup Source Upstream Status + :widths: auto + :header-rows: 1 + + * - Wakeup Source + - DeepSleep + - RTC + I/O + DDR + - RTC Only + - Notes + * - Real-Time Clock (RTC) + - No + - No + - No + - + * - WKUP GPIO + - Yes + - + - + - + * - Main I/O Daisy Chain + - Partial + - + - + - Upstream includes Main UART wakeup but not Main GPIO wakeup. + * - WKUP I/O Daisy Chain + - Yes + - Yes + - + - + * - WKUP UART + - Yes + - + - + - + * - USB + - Yes + - + - + - + * - RTC I/O + - No + - No + - No + - + +*********************** +Pending Upstream Series +*********************** + +.. ifconfig:: CONFIG_part_variant in ('AM62X') + + Currently, there are no pending upstream series for + |__PART_FAMILY_DEVICE_NAMES__|. + +.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX', 'AM62PX') + + .. list-table:: Pending Upstream Series + :widths: auto + :header-rows: 1 + + * - Series + - Feature Covered + - Codebase + * - `arm64: dts: ti: k3-am62a7-sk: Split r5f memory region `__ + - I/O Only Plus DDR + - `Linux `__ + * - `am62: IO+DDR resume support `__ + - I/O Only Plus DDR + - `U-Boot `__ + * - `IO+DDR low power mode bugfixes for AM62P and AM62A `__ + - I/O Only Plus DDR + - `U-Boot `__ + + Enable I/O Only Plus DDR in upstream by applying these patches to the + corresponding codebase. + +.. ifconfig:: CONFIG_part_variant in ('AM62LX') + + .. list-table:: Pending Upstream Series + :widths: auto + :header-rows: 1 + + * - Series + - Feature Covered + - Codebase + * - `PM: QoS/pmdomains: support resume latencies for system-wide PM `__ + - RTC + I/O + DDR, standby + - `Linux `__ + + This is not the complete list of patches needed to enable RTC + I/O + DDR + and standby. Additional series will be sent in the future. + +*********** +Workarounds +*********** + +.. ifconfig:: CONFIG_part_variant in ('AM62X') + + Remoteproc suspend/resume and graceful shutdown are not present upstream, + which prevents Linux from suspend/resume to low power states. To enable + suspend/resume on Linux remove the M4 remoteproc module by entering the + following command into the Linux console of the EVM: + + .. code-block:: console + + root@am62xx-evm:~# rmmod ti_k3_m4_remoteproc + +.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX', 'AM62PX', 'AM62LX') + + No workarounds are needed for |__PART_FAMILY_DEVICE_NAMES__|. diff --git a/source/linux/Foundational_Components_Power_Management.rst b/source/linux/Foundational_Components_Power_Management.rst index bd1b6e437..a3082ffaf 100644 --- a/source/linux/Foundational_Components_Power_Management.rst +++ b/source/linux/Foundational_Components_Power_Management.rst @@ -20,3 +20,4 @@ Power Management Foundational_Components/Power_Management/pm_sw_arch Foundational_Components/Power_Management/pm_debug Foundational_Components/Power_Management/pm_am62lx_debug + Foundational_Components/Power_Management/pm_upstream