@@ -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
2223TI SDK 10.0 (ti-linux-6.6.y kernel and 10.0 DM firmware) adds support for
2324an updated LPM Software Architecture that seamlessly manages the various
@@ -101,7 +102,6 @@ For further confirmation, one can take a look at the PMIC_LPM_EN pin on the EVM
101102Refer to the :ref: `Wakeup Sources<pm_wakeup_sources> ` section for information on how to wakeup the device from
102103Deep Sleep mode using one of the supported wakeup sources.
103104
104-
105105********
106106MCU Only
107107********
@@ -290,6 +290,131 @@ 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+ .. important ::
334+
335+ The steps mentioned below are a workaround to enable wakeup as there are more driver level changes
336+ required to enable the wakeup support.
337+
338+ .. code-block :: console
339+
340+ root@<machine>:~# devmem2 0x4084038 0x20050000 # MCU_PADCONFIG14 for mcu_mcan0
341+ root@<machine>:~# devmem2 0x4084040 0x20050000 # MCU_PADCONFIG16 for mcu_mcan1
342+ root@<machine>:~# devmem2 0x4084014 0x20050000 # MCU_PADCONFIG5 for mcu_uart0
343+ root@<machine>:~# devmem2 0x4084024 0x20050000 # MCU_PADCONFIG9 for wkup_uart0
344+
345+ .. note ::
346+
347+ Atleast one of the wakeup sources listed above must be enabled to wakeup from I/O Only Plus DDR mode.
348+
349+ .. rubric :: To enter I/O Only Plus DDR mode, first disable wakeup from RTC, USB0 and USB1 as these wakeup
350+ sources are not supported for this mode.
351+
352+ .. ifconfig :: CONFIG_part_variant in ('AM62AX')
353+
354+ .. code-block :: console
355+
356+ root@am62axx-evm:~# echo disabled > /sys/class/rtc/rtc0/device/power/wakeup
357+ root@am62axx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.dwc3-usb/power/wakeup
358+ root@am62axx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f910000.dwc3-usb/power/wakeup
359+
360+ .. ifconfig :: CONFIG_part_variant in ('AM62PX')
361+
362+ .. code-block :: console
363+
364+ root@am62pxx-evm:~# echo disabled > /sys/class/rtc/rtc0/device/power/wakeup
365+ root@am62pxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f900000.usb/power/wakeup
366+ root@am62pxx-evm:~# echo disabled > /sys/devices/platform/bus@f0000/f910000.usb/power/wakeup
367+
368+ .. rubric :: Then, configure PMIC register bit to turn off only selected rails for this mode.
369+
370+ .. ifconfig :: CONFIG_part_variant in ('AM62AX')
371+
372+ .. code-block :: console
373+
374+ root@am62axx-evm:~# i2cset -f -y -m 0xFF -r -a 0 0x48 0x86 0x1
375+
376+ The register write has been done to enable PMIC to enter `PMIC S2R <https://www.ti.com/lit/ug/slvucm3/slvucm3.pdf >`_ .
377+
378+ .. ifconfig :: CONFIG_part_variant in ('AM62PX')
379+
380+ .. code-block :: console
381+
382+ root@am62pxx-evm:~# i2cset -f -y -m 0xFF -r -a 0 0x48 0x86 0x2
383+
384+ .. rubric :: Now, the SoC can be suspended using the following command:
385+
386+ .. code-block :: console
387+
388+ root@<machine>:~# echo mem > /sys/power/state
389+ [ 26.132900] PM: suspend entry (deep)
390+ [ 26.136759] Filesystems sync: 0.000 seconds
391+ [ 26.151748] Freezing user space processes
392+ [ 26.157256] Freezing user space processes completed (elapsed 0.001 seconds)
393+ [ 26.164239] OOM killer disabled.
394+ [ 26.167469] Freezing remaining freezable tasks
395+ [ 26.173168] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
396+ [ 26.180624] printk: Suspending console(s) (use no_console_suspend to debug)
397+
398+ This indicates that the device has partially completed the I/O Only plus DDR entry sequence.
399+
400+ .. ifconfig :: CONFIG_part_variant in ('AM62AX')
401+
402+ For further confirmation, one can take a look at the on board LED LD2 on the SK
403+ (LED should turn off).
404+
405+ .. ifconfig :: CONFIG_part_variant in ('AM62PX')
406+
407+ For further confirmation, one can take a look at the on board LED LD1 on the SK
408+ (LED should turn off).
409+
410+ The system has entered I/O Only plus DDR and can be woken up either with an
411+ activity on the I/O pin programmed for wakeup or key press on wkup_uart0 (third serial port :file: `/dev/ttyUSB2 `) or
412+ mcu_uart0 (fourth serial port :file: `/dev/ttyUSB3 `).
413+
414+ .. note ::
415+
416+ The system will enter I/O Only plus DDR mode only if DM selects it based on existing constraints.
417+
293418***********
294419Limitations
295420***********
0 commit comments