Skip to content

Commit 8b36922

Browse files
committed
docs(linux): Power_Management: Add I/O Only plus DDR mode
Add documentation for I/O Only DDR low power mode applicable to AM62AX and AM62PX. This is a guide for customers on how to suspend resume from this mode, advantages of selecting this mode and starter kit specific connections required. Signed-off-by: Akashdeep Kaur <[email protected]>
1 parent 3c1b4d7 commit 8b36922

File tree

2 files changed

+123
-2
lines changed

2 files changed

+123
-2
lines changed

source/linux/Foundational_Components/Power_Management/pm_low_power_modes.rst

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Texas Instruments has added support for the following low power modes:
1818
#. Deep Sleep
1919
#. MCU Only
2020
#. Partial I/O
21+
#. I/O Only Plus DDR
2122

2223
TI SDK 10.0 (ti-linux-6.6.y kernel and 10.0 DM firmware) adds support for
2324
an updated LPM Software Architecture that seamlessly manages the various
@@ -101,13 +102,12 @@ For further confirmation, one can take a look at the PMIC_LPM_EN pin on the EVM
101102
Refer to the :ref:`Wakeup Sources<pm_wakeup_sources>` section for information on how to wakeup the device from
102103
Deep Sleep mode using one of the supported wakeup sources.
103104

105+
.. _pm_mcu_only:
104106

105107
********
106108
MCU Only
107109
********
108110

109-
.. _pm_mcu_only:
110-
111111
Similar to Deep Sleep, with the major distinction being that the MCU core is kept alive to run applications.
112112
The benefits of using MCU Only mode:
113113

@@ -290,6 +290,126 @@ system and it will go through a normal Linux boot process.
290290
The capability to detect whether system is resuming from Partial I/O
291291
or doing a normal cold boot will be added in future release.
292292

293+
*****************
294+
I/O Only Plus DDR
295+
*****************
296+
297+
.. ifconfig:: CONFIG_part_variant in ('AM62X')
298+
299+
This mode is not applicable for AM62X.
300+
301+
.. ifconfig:: CONFIG_part_variant in ('AM62AX' , 'AM62PX')
302+
303+
This mode is similar to Partial I/O mode, with the major distinction being
304+
that the DDR memory is kept in self refresh to save context. All the processor
305+
power supplies are turned off except the LVCMOS I/O power supply while keeping
306+
DDR in self-refresh.
307+
The user can do system power state transitions, including power supply control,
308+
by a single interface signal (PMIC_LPM_EN signal) with PMIC register programming.
309+
310+
The benefits of using I/O Only plus DDR in embedded devices:
311+
312+
#. Lowest power consumption: I/O Only Plus DDR mode can save a significant amount of power, especially in battery-powered
313+
devices that are mostly idle or low activity most of the time with the full context being saved.
314+
#. Better efficiency: I/O Only Plus DDR mode can help to improve the efficiency of embedded devices by
315+
reducing the amount of time that the processor is idle. This is because the processor can
316+
be kept in a low-power state when it is not needed.
317+
318+
.. ifconfig:: CONFIG_part_variant in ('AM62AX')
319+
320+
.. important:: Jumper J9 should be connected on SK to enable system to enter I/O Only plus DDR mode.
321+
322+
.. ifconfig:: CONFIG_part_variant in ('AM62PX')
323+
324+
.. important:: Jumper J12 should be connected on SK to enable system to enter I/O Only plus DDR mode.
325+
326+
The wakeup sources that can be used to wake the system from I/O Only Plus DDR are
327+
mcu_uart0, mcu_mcan0, mcu_mcan1 and wkup_uart0. After Linux boots, direct register
328+
writes can be used to enable wakeup.
329+
330+
.. rubric:: Following commands set the wakeup EN bit, enable receive for pad in PADCONFIG register and can
331+
be used to enable wakeup from mcu_mcan0, mcu_mcan1, mcu_uart0 and wkup_uart0 pins respectively.
332+
333+
.. code-block:: console
334+
335+
root@<machine>:~# devmem2 0x4084038 0x20050000 # MCU_PADCONFIG14 for mcu_mcan0
336+
root@<machine>:~# devmem2 0x4084040 0x20050000 # MCU_PADCONFIG16 for mcu_mcan1
337+
root@<machine>:~# devmem2 0x4084014 0x20050000 # MCU_PADCONFIG5 for mcu_uart0
338+
root@<machine>:~# devmem2 0x4084024 0x20050000 # MCU_PADCONFIG9 for wkup_uart0
339+
340+
.. note::
341+
342+
Atleast one of the wakeup sources listed above must be enabled to wakeup from I/O Only Plus DDR mode.
343+
344+
.. rubric:: To enter I/O Only Plus DDR mode, first disable wakeup from RTC, USB0 and USB1 as these wakeup
345+
sources are not supported for this mode.
346+
347+
.. ifconfig:: CONFIG_part_variant in ('AM62AX')
348+
349+
.. code-block:: console
350+
351+
root@am62axx-evm:~# echo disabled > /sys/class/rtc/rtc0/device/power/wakeup
352+
root@am62axx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.dwc3-usb/power/wakeup
353+
root@am62axx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f910000.dwc3-usb/power/wakeup
354+
355+
.. ifconfig:: CONFIG_part_variant in ('AM62PX')
356+
357+
.. code-block:: console
358+
359+
root@am62pxx-evm:~# echo disabled > /sys/class/rtc/rtc0/device/power/wakeup
360+
root@am62pxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.usb/power/wakeup
361+
root@am62pxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f910000.usb/power/wakeup
362+
363+
.. rubric:: Then, configure PMIC register bit to turn off only selected rails for this mode.
364+
365+
.. ifconfig:: CONFIG_part_variant in ('AM62AX')
366+
367+
.. code-block:: console
368+
369+
root@am62axx-evm:~# i2cset -f -y -m 0xFF -r -a 0 0x48 0x86 0x1
370+
371+
The register write has been done to enable PMIC to enter `PMIC S2R <https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.ti.com/lit/pdf/slvucm3&ved=2ahUKEwjknrL864-KAxVocGwGHdJZFPwQFnoECBgQAQ&usg=AOvVaw1y0evgQxxy9YOF7l5Wzaef>`_ .
372+
373+
.. ifconfig:: CONFIG_part_variant in ('AM62PX')
374+
375+
.. code-block:: console
376+
377+
root@am62pxx-evm:~# i2cset -f -y -m 0xFF -r -a 0 0x48 0x86 0x2
378+
379+
.. rubric:: Now, the SoC can be suspended using the following command:
380+
381+
.. code-block:: console
382+
383+
root@<machine>:~# echo mem > /sys/power/state
384+
[ 26.132900] PM: suspend entry (deep)
385+
[ 26.136759] Filesystems sync: 0.000 seconds
386+
[ 26.151748] Freezing user space processes
387+
[ 26.157256] Freezing user space processes completed (elapsed 0.001 seconds)
388+
[ 26.164239] OOM killer disabled.
389+
[ 26.167469] Freezing remaining freezable tasks
390+
[ 26.173168] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
391+
[ 26.180624] printk: Suspending console(s) (use no_console_suspend to debug)
392+
393+
This indicates that the device has partially completed the I/O Only plus DDR entry sequence.
394+
395+
.. ifconfig:: CONFIG_part_variant in ('AM62AX')
396+
397+
For further confirmation, one can take a look at the on board LED LD2 on the SK
398+
(LED should turn off).
399+
400+
.. ifconfig:: CONFIG_part_variant in ('AM62PX')
401+
402+
For further confirmation, one can take a look at the on board LED LD1 on the SK
403+
(LED should turn off).
404+
405+
The system has entered I/O Only plus DDR and can be woken up either with an
406+
activity on the I/O pin programmed for wakeup or key press on wkup_uart0 (third serial port :file:`/dev/ttyUSB2`) or
407+
mcu_uart0 (fourth serial port :file:`/dev/ttyUSB3`).
408+
409+
.. note::
410+
411+
The system will enter I/O Only plus DDR mode only if DM selects it based on existing constraints.
412+
293413
***********
294414
Limitations
295415
***********

source/linux/Foundational_Components/Power_Management/pm_overview.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,4 @@ supported by the Linux kernel.
5151
#. Deep Sleep
5252
#. MCU Only Mode
5353
#. Partial I/O
54+
#. I/O Only Plus DDR

0 commit comments

Comments
 (0)