From 88e5798a910218d4ab44cff1d5b93b8e573dcb01 Mon Sep 17 00:00:00 2001 From: Kendall Willis Date: Tue, 14 Apr 2026 10:28:31 -0500 Subject: [PATCH 1/2] feat(linux): Power_Management: add AM62D support For all Power_Management files that apply to AM62D, make sure that to add AM62D to any applicable ifconfig or create a new ifconfig for AM62D if needed. Signed-off-by: Kendall Willis --- configs/AM62DX/AM62DX_linux_toc.txt | 10 ++- .../Power_Management/pm_cpuidle.rst | 2 +- .../Power_Management/pm_dfs.rst | 6 +- .../Power_Management/pm_low_power_modes.rst | 25 ++++++-- .../Power_Management/pm_overview.rst | 4 +- .../Power_Management/pm_runtime_pm.rst | 4 ++ .../Power_Management/pm_sw_arch.rst | 2 +- .../Power_Management/pm_wakeup_sources.rst | 61 +++++++++++++++---- 8 files changed, 89 insertions(+), 25 deletions(-) diff --git a/configs/AM62DX/AM62DX_linux_toc.txt b/configs/AM62DX/AM62DX_linux_toc.txt index c0d239688..5ec6206b9 100644 --- a/configs/AM62DX/AM62DX_linux_toc.txt +++ b/configs/AM62DX/AM62DX_linux_toc.txt @@ -64,7 +64,15 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/UBIFS linux/Foundational_Components/Kernel/Kernel_Drivers/VTM linux/Foundational_Components/Kernel/Kernel_Drivers/Watchdog -#linux/Foundational_Components_Power_Management +linux/Foundational_Components_Power_Management +linux/Foundational_Components/Power_Management/pm_overview +linux/Foundational_Components/Power_Management/pm_dfs +linux/Foundational_Components/Power_Management/pm_cpuidle +linux/Foundational_Components/Power_Management/pm_runtime_pm +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_Kernel_Users_Guide linux/Foundational_Components_Kernel_LTP-DDT_Validation diff --git a/source/linux/Foundational_Components/Power_Management/pm_cpuidle.rst b/source/linux/Foundational_Components/Power_Management/pm_cpuidle.rst index 225c7abb1..5e6ce99b5 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_cpuidle.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_cpuidle.rst @@ -16,7 +16,7 @@ C-state. Governor decides whether to continue in current state/ transition to a different state. Current 'driver' is called to transition to the selected state. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'J722S') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'J722S', 'AM62DX') .. rubric:: Standby Mode diff --git a/source/linux/Foundational_Components/Power_Management/pm_dfs.rst b/source/linux/Foundational_Components/Power_Management/pm_dfs.rst index 24f9271d2..225a1be75 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_dfs.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_dfs.rst @@ -197,7 +197,7 @@ To view supported OPP's (frequency in kHz), $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 750000000 1000000000 1500000000 2000000000 -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'J722S') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'J722S', 'AM62DX') .. code-block:: console @@ -248,7 +248,7 @@ table. }; }; -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') The OPP table defined in the following files allows defining of a different set of OPPs for each different SoC: @@ -257,7 +257,7 @@ table. :file:`arch/arm64/boot/dts/ti/k3-am625.dtsi` - .. ifconfig:: CONFIG_part_variant in ('AM62AX') + .. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX') :file:`arch/arm64/boot/dts/ti/k3-am62a7.dtsi` diff --git a/source/linux/Foundational_Components/Power_Management/pm_low_power_modes.rst b/source/linux/Foundational_Components/Power_Management/pm_low_power_modes.rst index bea1efba1..4aa9b4749 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_low_power_modes.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_low_power_modes.rst @@ -59,6 +59,19 @@ overlay is loaded. Please refer to :ref:`How to enable DT overlays:~# devmem2 0x4084024 w 0x20050000 # MCU_PADCONFIG9 for wkup_uart0 + Enter Partial I/O mode with the following command: .. code-block:: console @@ -88,7 +101,7 @@ I/O Only Plus DDR This mode is not applicable for AM62X. -.. ifconfig:: CONFIG_part_variant in ('AM62AX' , 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62AX' , 'AM62PX', 'AM62DX') This mode is similar to Partial I/O mode, with the major distinction being that the DDR memory is kept in self refresh to save context. All the processor @@ -113,6 +126,10 @@ I/O Only Plus DDR .. important:: Jumper J12 should be connected on SK to enable system to enter I/O Only plus DDR mode. + .. ifconfig:: CONFIG_part_variant in ('AM62DX') + + .. important:: Jumper J16 should be connected on SK to enable system to enter I/O Only plus DDR mode. + The wakeup sources that can be used to wake the system from I/O Only Plus DDR are mcu_uart0, mcu_mcan0, mcu_mcan1 and wkup_uart0. To use the mcu_mcan0 and mcu_mcan1 wakeup sources, apply the @@ -143,7 +160,7 @@ I/O Only Plus DDR Main UART, USB0, and USB1 as these wakeup sources are not supported for this mode. - .. ifconfig:: CONFIG_part_variant in ('AM62AX') + .. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX') .. code-block:: console @@ -163,7 +180,7 @@ I/O Only Plus DDR .. rubric:: Then, configure PMIC register bit to turn off only selected rails for this mode. - .. ifconfig:: CONFIG_part_variant in ('AM62AX') + .. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX') .. code-block:: console @@ -253,7 +270,7 @@ In order to enter Deep Sleep, use the following command: [ 444.826567] psci: CPU2 killed (polled 0 ms) [ 444.830170] psci: CPU3 killed (polled 0 ms) -.. ifconfig:: CONFIG_part_variant in ('AM62AX' , 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62AX' , 'AM62PX', 'AM62DX') .. code-block:: console diff --git a/source/linux/Foundational_Components/Power_Management/pm_overview.rst b/source/linux/Foundational_Components/Power_Management/pm_overview.rst index ab65c7922..a24ec0102 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_overview.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_overview.rst @@ -31,7 +31,7 @@ The dynamic power management features enabled on |__PART_FAMILY_DEVICE_NAMES__| #. DVFS #. CPUIdle -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') #. Dynamic Frequency Scaling #. CPUIdle @@ -56,7 +56,7 @@ duration. This is accomplished by leveraging the low power modes supported by the SoC and the `System Sleep States `__ supported by the Linux kernel. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') The static power management features on |__PART_FAMILY_DEVICE_NAMES__| are: diff --git a/source/linux/Foundational_Components/Power_Management/pm_runtime_pm.rst b/source/linux/Foundational_Components/Power_Management/pm_runtime_pm.rst index 5b11c9860..21b473594 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_runtime_pm.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_runtime_pm.rst @@ -30,6 +30,10 @@ The following drivers have been validated for Runtime PM in this release: DSS, GPU, McASP, OSPI, MCAN, Video Codec. +.. ifconfig:: CONFIG_part_variant in ('AM62DX') + + DSS, McASP, OSPI, MCAN. + .. rubric:: Driver Usage Linux provides the following sysfs interface (/sys/devices/.../power/) diff --git a/source/linux/Foundational_Components/Power_Management/pm_sw_arch.rst b/source/linux/Foundational_Components/Power_Management/pm_sw_arch.rst index 66f150ee5..8d4849264 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_sw_arch.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_sw_arch.rst @@ -230,7 +230,7 @@ If constraint is put on MAIN devgroup devices, then no low power mode is possibl `Devgroup section `__ of TISCI documentation. -.. ifconfig:: CONFIG_part_variant in ('AM62AX') +.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX') For detailed description for devgroup of these devices, refer to `Devgroup section `__ diff --git a/source/linux/Foundational_Components/Power_Management/pm_wakeup_sources.rst b/source/linux/Foundational_Components/Power_Management/pm_wakeup_sources.rst index 89eb4ce7d..454ce928b 100644 --- a/source/linux/Foundational_Components/Power_Management/pm_wakeup_sources.rst +++ b/source/linux/Foundational_Components/Power_Management/pm_wakeup_sources.rst @@ -30,7 +30,7 @@ valid for given low power modes: | CAN UART I/O Daisy Chain | Yes | Yes | Yes | +------------------------------------------------+------------+----------+-------------+ -.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62PX', 'AM62DX') +------------------------------------------------+-------+------+---------+----------+ | Wakeup Source | Deep | MCU | Partial | I/O Only | @@ -155,7 +155,7 @@ For example, to wakeup from Deep Sleep in 10 seconds, use the command like this: [ 34.645777] PM: suspend exit root@am62xx-evm:~# -.. ifconfig:: CONFIG_part_variant in ('AM62AX') +.. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX') .. code-block:: console @@ -309,7 +309,7 @@ For example, to wakeup from Deep Sleep in 10 seconds, use the command like this: [ 28.378392] random: crng reseeded on system resumption [ 28.384269] PM: suspend exit -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') .. note:: @@ -325,7 +325,7 @@ MCU GPIO MCU GPIO wakeup is not supported on AM62LX. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') One of the most common ways to wakeup a system is by using some I/O activity. I/O activity on the MCU GPIOs can wakeup the system when the MCU GPIO @@ -487,7 +487,7 @@ WKUP GPIO :ref:`LPM section`, wakeup from WKUP_UART0_RXD can be triggered by entering a keypress on the WKUP UART (/dev/ttyUSB2). -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') Setup of WKUP GPIO is the same process of MCU GPIO. Refer to the :ref:`MCU GPIO section` on how to configure wakeup from @@ -514,7 +514,7 @@ register. For detailed information and sequence please refer to I/O Power Management and Daisy Chaining section in the TRM. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') .. note:: @@ -702,6 +702,41 @@ Main UART bootph-all; }; +.. ifconfig:: CONFIG_part_variant in ('AM62DX') + + To configure UART as an I/O daisy chain wakeup, refer to the + main_uart0 node in `k3-am62d2-evm.dts `_ + + .. code-block:: dts + + &main_pmx0 { + main_uart0_pins_default: main-uart0-default-pins { + pinctrl-single,pins = < + AM62DX_IOPAD(0x01c8, PIN_INPUT, 0) /* (E14) UART0_RXD */ + AM62DX_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */ + >; + bootph-all; + }; + + main_uart0_pins_wakeup: main-uart0-wakeup-pins { + pinctrl-single,pins = < + AM62DX_IOPAD(0x01c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (E14) UART0_RXD */ + AM62DX_IOPAD(0x01cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */ + >; + }; + }; + + &main_uart0 { + status = "okay"; + pinctrl-names = "default", "wakeup"; + pinctrl-0 = <&main_uart0_pins_default>; + pinctrl-1 = <&main_uart0_pins_wakeup>; + wakeup-source = <&system_deep_sleep>, + <&system_mcu_only>, + <&system_standby>; + bootph-all; + }; + In the above code, a "wakeup" pinctrl state is defined for main_uart0. The "wakeup" pinctrl state sets the WKUP_EN flag on the desired padconfig register, which allows the pad to act as a wakeup source. During suspend, the Linux @@ -722,7 +757,7 @@ combination of gpio-keys with a chained IRQ in the pinctrl driver. Setting the 29th bit in the desired padconfig register, allows the pad to act as a wakeup source by triggering a wake IRQ in Deep Sleep states. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') The reference configuration for Main GPIO wakeup can be found under gpio_key node in @@ -817,7 +852,7 @@ in a generic way using the ti-sysc interconnect target module driver. The reference configuration can be found under target-module in `k3-am62-wakeup.dtsi `__ -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') WKUP UART is generally available on the third serial port (/dev/ttyUSB2) and by default it only shows output from DM R5. @@ -946,7 +981,7 @@ MCU IPC based Wakeup MCU IPC wakeup is not supported on AM62LX. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') It's possible to use IPC based wakeup events from the MCU core. For details on how to implement this from the firmware side, please refer to the relevant documentation: @@ -955,7 +990,7 @@ MCU IPC based Wakeup `MCU+ SDK for AM62x `__ - .. ifconfig:: CONFIG_part_variant in ('AM62AX') + .. ifconfig:: CONFIG_part_variant in ('AM62AX', 'AM62DX') `MCU+ SDK for AM62Ax `__ @@ -990,7 +1025,7 @@ CAN UART I/O Daisy Chain CAN UART wakeup is not supported on AM62LX. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') It is possible to wakeup the system from CAN UART pins in all supported low power modes. This is possible once CAN UART is configured. @@ -1050,7 +1085,7 @@ CAN UART I/O Daisy Chain RTC Ext Pin *********** -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') This is not applicable for |__PART_FAMILY_DEVICE_NAMES__|. @@ -1068,7 +1103,7 @@ Confirming the Wakeup event type This is not applicable for AM62LX. -.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX') +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX', 'AM62DX') When the SoC wakes up from any Low Power Mode, the Device Manager logs the wake reason, the pin number that triggered the wakeup, and the last low power mode From 8dae5d2708e33e39f7ef00ef5a58d6805c6ea450 Mon Sep 17 00:00:00 2001 From: Kendall Willis Date: Tue, 14 Apr 2026 10:32:29 -0500 Subject: [PATCH 2/2] feat(linux): AM62DX: update documentation for power management Update AM62D build sheet to include power management features that are enabled on AM62D. Signed-off-by: Kendall Willis --- .../linux/Release_Specific_Build_Sheet.rst | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/devices/AM62DX/linux/Release_Specific_Build_Sheet.rst b/source/devices/AM62DX/linux/Release_Specific_Build_Sheet.rst index 9dc520758..a440aaf3b 100644 --- a/source/devices/AM62DX/linux/Release_Specific_Build_Sheet.rst +++ b/source/devices/AM62DX/linux/Release_Specific_Build_Sheet.rst @@ -43,23 +43,23 @@ The support status is indicated by the following codes: ,,PRG,No ,,PGD,No ,,VTM,Yes - Power Management,Deep Sleep Low Power Mode ,,No - ,Deep Sleep LPM Wakeup Events,RTC Timer,No + Power Management,Deep Sleep Low Power Mode ,,Yes + ,Deep Sleep LPM Wakeup Events,RTC Timer,Yes ,,GT Timers,No - ,,WKUP UART,No + ,,WKUP UART,Yes ,,I2C,No - ,,MCU GPIO,No - ,,I/O Daisy Chain,No - ,,USB Connect/Disconnect,No - ,,USB Remote Wakeup,No - ,MCU-Only Low Power Mode,,No - ,Standby Low Power Mode,,No - ,Partial I/O Low Power Mode,,No - ,IO + DDR low power mode,,No - ,Boot-time OPP configurations,,No - ,Runtime Power Management,,No + ,,MCU GPIO,Yes + ,,I/O Daisy Chain,Yes + ,,USB Connect/Disconnect,Yes + ,,USB Remote Wakeup,Yes + ,MCU-Only Low Power Mode,,Yes + ,Standby Low Power Mode,,Yes + ,Partial I/O Low Power Mode,,Yes + ,IO + DDR low power mode,,Yes + ,Boot-time OPP configurations,,Yes + ,Runtime Power Management,,Yes ,DFS/CPUFreq,,Yes - ,CPUIdle (A53 WFI),,No + ,CPUIdle (A53 WFI),,Yes ,CPUIdle (DDR in Self-Refresh),,No Interprocessor Communication,Mailbox,,Yes ,Spinlock,,Yes