|
| 1 | +.. _am62lx-power-management: |
| 2 | + |
| 3 | +############### |
| 4 | +Low Power Modes |
| 5 | +############### |
| 6 | + |
| 7 | +Overview |
| 8 | +******** |
| 9 | + |
| 10 | +.. note:: |
| 11 | + |
| 12 | + For this release, both of the documented low power modes below require special steps which have been |
| 13 | + documented in :ref:`am62l_suspend_workarounds`. This includes the steps to choose the system suspend mode |
| 14 | + and how to wakeup the system. |
| 15 | + |
| 16 | +The following sections describe a high-level description of the different low power modes (LPM) of the |
| 17 | +device. If your application requires inactive power management, you must determine which |
| 18 | +low power mode described below satisfies your requirements. Each mode must be evaluated |
| 19 | +based on power consumption and latency (the time it takes to wakeup to active mode) requirements. Specific |
| 20 | +values are detailed in the device-specific data sheet. As part of this SDK offering, |
| 21 | +Texas Instruments has added support for the following low power modes (ordered from lowest power consumption |
| 22 | +to highest power consumption): |
| 23 | + |
| 24 | +#. RTC Only Plus DDR |
| 25 | +#. Deep Sleep |
| 26 | + |
| 27 | +RTC Only Plus DDR |
| 28 | +***************** |
| 29 | + |
| 30 | +RTC Only + DDR mode is the deepest low power mode that allows the system to enter a state of lowest power consumption |
| 31 | +while still retaining the DDR RAM context. |
| 32 | + |
| 33 | +In order to enter RTC Only + DDR mode, |
| 34 | + |
| 35 | + .. code-block:: console |
| 36 | +
|
| 37 | + root@am62lxx-evm:~# echo mem > /sys/power/state |
| 38 | + [ 67.335138] PM: suspend entry (deep) |
| 39 | + [ 67.358190] Filesystems sync: 0.019 seconds |
| 40 | + [ 67.363206] Freezing user space processes |
| 41 | + [ 67.368991] Freezing user space processes completed (elapsed 0.001 seconds) |
| 42 | + [ 67.376038] OOM killer disabled. |
| 43 | + [ 67.379271] Freezing remaining freezable tasks |
| 44 | + [ 67.384973] Freezing remaining freezable tasks completed (elapsed 0.001 seconds) |
| 45 | + [ 67.392398] printk: Suspending console(s) (use no_console_suspend to debug) |
| 46 | + NOTICE: bl1_plat_arch_setup arch setup |
| 47 | + NOTICE: Booting Trusted Firmware |
| 48 | + NOTICE: BL1: v2.12.0(release):11.00.04-7-gaa3963759-dirty |
| 49 | + NOTICE: BL1: Built : 15:56:37, Feb 25 2025 |
| 50 | + NOTICE: lpdd4_init <-- |
| 51 | + NOTICE: DDR ram size =80000000 |
| 52 | + NOTICE: bl1_platform_setup DDR init done |
| 53 | + NOTICE: k3_bl1_handoff sent message to tifs |
| 54 | + ERROR: Wake up src 0x0 |
| 55 | + ERROR: Wake up interrupt 0xc |
| 56 | + [ 67.405953] Disabling non-boot CPUs ... |
| 57 | + [ 67.408032] psci: CPU1 killed (polled 0 ms) |
| 58 | + [ 67.408974] Enabling non-boot CPUs ... |
| 59 | + [ 67.409281] Detected VIPT I-cache on CPU1 |
| 60 | + [ 67.409330] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000 |
| 61 | + [ 67.409393] CPU1: Booted secondary processor 0x0000000001 [0x410fd034] |
| 62 | + [ 67.410371] CPU1 is up |
| 63 | + [ 67.446329] OOM killer enabled. |
| 64 | + [ 67.449479] Restarting tasks ... done. |
| 65 | + [ 67.454324] random: crng reseeded on system resumption |
| 66 | + [ 67.459689] PM: suspend exit |
| 67 | +
|
| 68 | +
|
| 69 | +DeepSleep |
| 70 | +********* |
| 71 | + |
| 72 | +DeepSleep AKA Suspend-to-RAM is a low-power mode that allows the SoC |
| 73 | +to retain its state in RAM while the processor is turned off. |
| 74 | +DeepSleep mode is typically used during inactivity when the user requires very low power |
| 75 | +while waiting for an event that requires processing or higher performance. DeepSleep |
| 76 | +is a low power mode which still includes DDR in self-refresh, so wakeup events do not |
| 77 | +require a full cold boot, significantly reducing wakeup latencies. |
| 78 | +Since the power to Always-On power domains are ON throughout DeepSleep, |
| 79 | +power to key modules such as GPIO and others is maintained to allow wakeup events |
| 80 | +to exit out of this mode. |
| 81 | + |
| 82 | +In order to enter DeepSleep, |
| 83 | + |
| 84 | + .. code-block:: console |
| 85 | +
|
| 86 | + root@am62lxx-evm:~# echo mem > /sys/power/state |
| 87 | + [ 88.507502] PM: suspend entry (deep) |
| 88 | + [ 88.530523] Filesystems sync: 0.019 seconds |
| 89 | + [ 88.537597] Freezing user space processes |
| 90 | + [ 88.543218] Freezing user space processes completed (elapsed 0.001 seconds) |
| 91 | + [ 88.550275] OOM killer disabled. |
| 92 | + [ 88.553518] Freezing remaining freezable tasks |
| 93 | + [ 88.559139] Freezing remaining freezable tasks completed (elapsed 0.001 seconds) |
| 94 | + [ 88.566570] printk: Suspending console(s) (use no_console_suspend to debug) |
| 95 | + ERROR: Wake up src 0x80 |
| 96 | + ERROR: Wake up interrupt 0xc |
| 97 | + [ 88.591181] Disabling non-boot CPUs ... |
| 98 | + [ 88.593309] psci: CPU1 killed (polled 0 ms) |
| 99 | + [ 88.594858] Enabling non-boot CPUs ... |
| 100 | + [ 88.595327] Detected VIPT I-cache on CPU1 |
| 101 | + [ 88.595379] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000 |
| 102 | + [ 88.595446] CPU1: Booted secondary processor 0x0000000001 [0x410fd034] |
| 103 | + [ 88.596420] CPU1 is up |
| 104 | + [ 88.634778] OOM killer enabled. |
| 105 | + [ 88.637926] Restarting tasks ... done. |
| 106 | + [ 88.642801] random: crng reseeded on system resumption |
| 107 | + [ 88.649913] PM: suspend exit |
| 108 | + root@am62lxx-evm:~# |
0 commit comments