Skip to content

Commit d97872a

Browse files
p-mantenagehariprasath
authored andcommitted
feat(pm_low_power_modes_socoff): Add LPM Documentation for J7200 and J784S4
J7200 and J784S4 supports two low poer modes, SOC_OFF and IO_ONLY_PLUS_DDR. Add related documentation for the modes supported and their usage details. Signed-off-by: Prasanth Babu Mantena <p-mantena@ti.com>
1 parent 7116c51 commit d97872a

File tree

4 files changed

+150
-0
lines changed

4 files changed

+150
-0
lines changed

configs/J7200/J7200_linux_toc.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ linux/Foundational_Components_Kernel_LTP-DDT_Validation
8383
linux/Foundational_Components_Kernel_FAQs
8484
linux/Foundational_Components_Security
8585
linux/Foundational_Components/System_Security/Security_overview
86+
linux/Foundational_Components_Power_Management
87+
linux/Foundational_Components/Power_Management/pm_low_power_modes_socoff
8688
linux/Foundational_Components_Filesystem
8789
linux/Foundational_Components_Tools
8890
linux/Foundational_Components/Tools/Development_Tools

configs/J784S4/J784S4_linux_toc.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ linux/Foundational_Components_Kernel_LTP-DDT_Validation
8989
linux/Foundational_Components_Kernel_FAQs
9090
linux/Foundational_Components_Security
9191
linux/Foundational_Components/System_Security/Security_overview
92+
linux/Foundational_Components_Power_Management
93+
linux/Foundational_Components/Power_Management/pm_low_power_modes_socoff
9294
linux/Foundational_Components_Filesystem
9395
linux/Foundational_Components_Tools
9496
linux/Foundational_Components/Tools/Development_Tools
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
.. _lpm_modes_socoff:
2+
3+
###############
4+
Low power modes
5+
###############
6+
7+
********
8+
Overview
9+
********
10+
11+
The following sections describe a high-level description of the different low power modes (LPM) supported on |__PART_FAMILY_NAME__| SoC (System on Chip).
12+
TI EVMs (Evaluation Modules) validate supported low power modes. Each mode needs evaluation based on power consumption and latency (the time it takes to wake-up to Active mode) requirements.
13+
There is a tradeoff between power and latency based on the mode. Users must select the appropriate low power mode at build time to fit the needs of the application. The default mode in the SDK is SoC off.
14+
15+
In SDK offering, following low power modes are supported:
16+
17+
#. SoC off
18+
#. I/O Only Plus DDR
19+
20+
*******
21+
SoC off
22+
*******
23+
24+
In SoC off low power mode, DDR retains partial software context (Mainly HLOS - High Level Operating System, Linux in this case) powering off the rest of SoC. This can save a significant amount of boot time, because it does not reinitialize whole kernel as it is already present in DDR.
25+
26+
The benefits of using SoC off in embedded devices:
27+
28+
#. Faster wake-up: Devices can wake-up from this low-power state much faster than
29+
a complete power cycle.
30+
#. Better efficiency: This mode can help to improve the efficiency of embedded devices by
31+
reducing the amount of time that the processor is idle. This is because we can keep the processor in a low-power state when it is not needed.
32+
33+
To enter SoC off, use the following command:
34+
35+
.. code-block:: console
36+
37+
root@<machine>-evm:~# echo mem > /sys/power/state
38+
[18.380346] PM: suspend entry (deep)
39+
[18.576999] Filesystems sync: 0.193 seconds
40+
[18.587643] Freezing user space processes
41+
[18.593191] Freezing user space processes completed (elapsed 0.001 seconds)
42+
[18.600179] OOM killer disabled.
43+
[18.603395] Freezing remaining freezable tasks
44+
[18.608964] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
45+
[18.616364] printk: Suspending console(s) (use no_console_suspend to debug)
46+
47+
This indicates that Linux has finished its suspend sequence.
48+
49+
To exit from SoC off,
50+
51+
.. ifconfig:: CONFIG_part_variant in ('J7200')
52+
53+
Press SW12 push button on J7200 evm.
54+
55+
.. ifconfig:: CONFIG_part_variant in ('J784S4')
56+
57+
Press SW15 push button on J784S4 evm.
58+
59+
60+
*****************
61+
I/O only Plus DDR
62+
*****************
63+
64+
In I/O only plus DDR, only the I/O pins remain active while the system turns off the rest of SoC.
65+
66+
#. Low power consumption: IO Only Plus DDR mode can save a significant amount of power, especially in battery-powered
67+
devices. DDR is in self-refresh and the system turns off the rest of the SoC, except for the I/O pins.
68+
#. Better efficiency: I/O Only Plus DDR mode can help to improve the efficiency of embedded devices by reducing
69+
the amount of time that the processor is idle. This is because we can keep the processor in a low-power state when it is not needed.
70+
#. Respond to external wake-up sources: This allows the system to still respond to external events, while it is in a low-power state and wake-up faster improving boot time.
71+
72+
73+
.. ifconfig:: CONFIG_part_variant in ('J7200')
74+
75+
To enter I/O only Plus DDR mode, Enable edge sensitive wake-up for MCAN1_RX pin by writing to PADCONFIG_11 (0x0011C02C)
76+
77+
.. code-block:: console
78+
79+
# devmem2 0x0011C02C w 0x20050000
80+
81+
.. ifconfig:: CONFIG_part_variant in ('J784S4')
82+
83+
To enter I/O only Plus DDR mode, Enable level sensitive wake-up for MCU_MCAN0_RX pin by writing to WKUP_PADCONFIG_47 (at address 0x4301C0BC)
84+
85+
.. code-block:: console
86+
87+
# devmem2 0x4301C0BC w 0x20050180
88+
89+
90+
.. code-block:: console
91+
92+
root@<machine>-evm:~# echo mem > /sys/power/state
93+
[18.380346] PM: suspend entry (deep)
94+
[18.576999] Filesystems sync: 0.193 seconds
95+
[18.587643] Freezing user space processes
96+
[18.593191] Freezing user space processes completed (elapsed 0.001 seconds)
97+
[18.600179] OOM killer disabled.
98+
[18.603395] Freezing remaining freezable tasks
99+
[18.608964] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
100+
[18.616364] printk: Suspending console(s) (use no_console_suspend to debug)
101+
102+
To exit from I/O only Plus DDR mode,
103+
104+
.. ifconfig:: CONFIG_part_variant in ('J7200')
105+
106+
Press SW1 push button on |__PART_FAMILY_NAME__| SOM
107+
108+
.. ifconfig:: CONFIG_part_variant in ('J784S4')
109+
110+
On the |__PART_FAMILY_NAME__| EVM, the second pin-out of J33 is MCU_MCAN0_RX and it connects directly to the SoC.
111+
A voltage of 3.3V should be applied on that pin to wake it up from low power.
112+
113+
114+
Resume flow,
115+
116+
.. code-block:: console
117+
118+
U-Boot SPL 2025.01-00676-g0373244c939d (Oct 23 2025 - 18:28:04 +0530)
119+
SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.0-6-ge1d0d+ (Fancy Rat)')
120+
Trying to boot from MMC2
121+
Starting ATF on ARM64 core...
122+
123+
[ 41.242486] Enabling non-boot CPUs ...
124+
I/TC: Secondary CPU 1 initializing
125+
I/TC: Secondary CPU 1 switching to normal world boot
126+
[ 41.265404] Detected PIPT I-cache on CPU1
127+
[ 41.269427] GICv3: CPU1: found redistributor 1 region 0:0x0000000001920000
128+
[ 41.276323] CPU1: Booted secondary processor 0x0000000001 [0x411fd080]
129+
[ 41.283475] CPU1 is up
130+
[ 41.305953] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
131+
[ 41.323544] am65-cpsw-nuss 46000000.ethernet eth0: PHY [46000f00.mdio:00] driver [TI DP83867] (irq=POLL)
132+
[ 41.333027] am65-cpsw-nuss 46000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
133+
[ 41.343885] OOM killer enabled.
134+
[ 41.347048] Restarting tasks ... done.
135+
[ 41.353184] random: crng reseeded on system resumption
136+
[ 41.359868] platform 41000000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
137+
[ 41.371848] platform 41000000.r5f: configured R5F for IPC-only mode
138+
[ 41.378136] remoteproc remoteproc0: attaching to 41000000.r5f
139+
[ 41.384636] rproc-virtio rproc-virtio.10.auto: assigned reserved memory node r5f-dma-memory@a0000000
140+
[ 41.395697] virtio_rpmsg_bus virtio0: rpmsg host is online
141+
[ 41.401350] rproc-virtio rproc-virtio.10.auto: registered virtio0 (type 7)
142+
[ 41.408925] remoteproc remoteproc0: remote processor 41000000.r5f is now attached
143+
[ 41.416506] PM: suspend exit
144+
root@<machine>-evm:~#
145+
root@<machine>-evm:~#

source/linux/Foundational_Components_Power_Management.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Power Management
1313
Foundational_Components/Power_Management/pm_suspend_resume
1414
Foundational_Components/Power_Management/pm_low_power_modes
1515
Foundational_Components/Power_Management/pm_am62lx_low_power_modes
16+
Foundational_Components/Power_Management/pm_low_power_modes_socoff
1617
Foundational_Components/Power_Management/pm_wakeup_sources
1718
Foundational_Components/Power_Management/pm_sw_arch
1819
Foundational_Components/Power_Management/pm_debug

0 commit comments

Comments
 (0)