Skip to content

Commit b887dd7

Browse files
committed
fix(linux): Update AM62L standby mode documentation
The existing standby mode is renamed from 'low-latency standby' to 'standby' and has been migrated to the default device tree from an overlay. A new 'deep-standby' mode has been added which requires the overlay for use. Update the docs to reflect these changes, introduce the new deep-standby mode along with its pre-requisites and how to enable the given mode. Signed-off-by: Scaria Kochidanadu <s-kochidanadu@ti.com>
1 parent 2ec5c56 commit b887dd7

1 file changed

Lines changed: 64 additions & 32 deletions

File tree

source/linux/Foundational_Components/Power_Management/pm_am62l_standby.rst

Lines changed: 64 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,25 @@ The AM62L Standby Mode configuration includes the following idle states:
3737
- Description
3838
- Latency
3939

40-
* - **cpu_sleep_0** (CPU Level)
40+
* - **cpu_sleep_stby** (CPU Level)
4141
- Individual CPU WFI (Wait For Interrupt) state
4242
- Very Low (microseconds)
4343

44-
* - **cluster_sleep_0** (Low Latency Cluster standby)
45-
- Cluster low-latency standby mode when all cores are idle, with reduced clock frequencies and non-critical power domains disabled
44+
* - **cluster_sleep_stby** (Cluster standby)
45+
- The default Cluster standby mode when all cores are idle, with reduced clock frequencies and non-critical power domains disabled
4646
- Low (milliseconds)
4747

48-
The configuration can be loaded from the device tree overlay :file:`k3-am62l3-evm-idle-states.dtso`, which defines
49-
these states and their power management characteristics.
48+
* - **cluster_sleep_deep_stby*** (Cluster Deep standby)
49+
- Additional Deep standby mode similar to cluster standby, with additional clock gating and power domain shutdown for more aggressive power savings.
50+
- Low (milliseconds)
51+
52+
.. note::
53+
54+
The ``cluster_sleep_deep_stby`` state is an optional configuration. Enable it using the device tree overlay
55+
:file:`k3-am62l3-evm-idle-states.dtso`.
56+
57+
**Only do this when CPSW and Display drivers are not needed.**
58+
See :ref:`deep-standby-mode` for more details.
5059

5160
Power Domain Hierarchy
5261
======================
@@ -57,36 +66,36 @@ how different power domains relate to each other:
5766
* **CPU_PD** (CPU Power Domain): Per-CPU power domain
5867
* **CLUSTER_PD** (Cluster Power Domain): Cluster-level power domain that groups multiple CPUs
5968

60-
These power domains inform CPUIdle about which non-critical domains can be disabled when all cores within them are idle.
69+
These power domains tell CPUIdle what non-critical domains to disable when all cores within them are idle.
6170

62-
.. note::
71+
.. _deep-standby-mode:
6372

64-
The device tree overlay also includes additional idle states for Suspend-to-Idle (S2Idle) functionality
65-
that can be referred from :ref:`pm_s2idle_psci`.
66-
The Standby Mode uses the **cpu_sleep_0** and **cluster_sleep_0** idle states, coordinated through the
67-
**CPU_PD** and **CLUSTER_PD** power domain hierarchy.
73+
Deep Standby Mode
74+
=================
6875

6976
Critical Prerequisites
70-
======================
77+
----------------------
7178

72-
The AM62L Standby Mode implementation has important prerequisites that must be met for correct operation.
79+
Meet the following prerequisites before using AM62L Deep Standby Mode.
7380

7481
**CPSW (Gigabit Ethernet) Driver Suspension**
7582

76-
The entry into Cluster level standby is conditional on CPSW driver being suspended, since hardware CRC errors
77-
occur when CPSW continues operation during cluster standby. The CPSW is an Always-On IP in the AM62L SoC.
83+
Deep standby entry requires suspending the CPSW driver. Deep standby reduces the CBASS clock
84+
frequency for power savings, which can cause the CPSW driver to malfunction with hardware CRC errors if it is actively driving traffic.
7885

7986
**Display Driver Suspension**
8087

81-
Similarly, the display driver must be in a suspended state for cluster standby due to frame buffer overflow issues.
82-
Ensure display is not actively driving output when testing or relying on Standby Mode for power savings.
88+
Similarly, the display driver must not drive output during Deep standby. The DDR enters Auto self-refresh
89+
mode during this state, which causes frame buffer overflow errors.
8390

84-
.. warning::
91+
How to Enable Deep Standby Mode
92+
-------------------------------
8593

86-
Standby Mode only functions correctly when the DISPLAY and CPSW drivers are suspended. The device tree
87-
overlay :file:`k3-am62l3-evm-idle-states.dtso` disables the CPSW driver to ensure this
88-
condition is met. Do not override this configuration without understanding the implications for cluster
89-
idle transitions and hardware stability.
94+
To enable Deep Standby Mode, apply the device tree overlay :file:`k3-am62l3-evm-idle-states.dtso` to your system.
95+
See :ref:`howto_dt_overlays` for the steps to enable the overlay.
96+
97+
This overlay adds the ``cluster_sleep_deep_stby`` idle state to the device tree configuration.
98+
The overlay also disables the CPSW and Display drivers to ensure that the system can safely enter deep standby.
9099

91100
***********************************************
92101
Power Sequencing and Cluster Standby Entry/Exit
@@ -97,7 +106,7 @@ When the all cores in a cluster become idle and AM62L system enters Standby Mode
97106
1. **Detection Phase**:
98107
- CPUIdle monitors per-CPU idle state transitions
99108
- Domain idle state manager tracks core idle status
100-
- When all cores in a cluster are idle, cluster standby opportunity is identified
109+
- When all cores in a cluster are idle, the system identifies a cluster standby opportunity
101110

102111
2. **Coordination Phase**:
103112
- Linux CPUIdle framework signals cluster idle state via PSCI ``CPU_SUSPEND`` call
@@ -110,24 +119,47 @@ When the all cores in a cluster become idle and AM62L system enters Standby Mode
110119

111120
4. **Standby Entry Phase**:
112121
- TF-A executes cluster standby entry sequence
113-
- Reduces PLL clock frequencies for non-critical subsystems
114-
- Disables non-critical power domains
115-
- Puts DDR into auto-self-refresh mode
122+
- Performs the hardware sequence as mentioned in :ref:`hardware-sequence-details`
116123
- System enters low-power standby state with reduced power consumption
117124

118125
5. **Wake-Up Phase**:
119126
- Incoming interrupt(*any* interrupt can wake the system) triggers wake-up
120-
- TF-A restores normal PLL frequencies and power domains
121-
- DDR exits auto-self-refresh mode
127+
- TF-A restores original PLL frequencies and power domains
122128
- Cores resume execution with minimal latency
123129
- System returns to active operation
124130

131+
.. _hardware-sequence-details:
132+
133+
*************************
134+
Hardware Sequence Details
135+
*************************
136+
137+
The following table outlines the specific hardware sequences executed during standby and deep standby modes:
138+
139+
.. list-table:: Hardware Sequences for Standby Modes
140+
:widths: 30 70
141+
:header-rows: 1
142+
143+
* - Mode
144+
- Hardware Sequence Steps
145+
* - **Default Standby Mode**
146+
- * Disable GP Test, PBIST, and DEBUGSS LPSCs
147+
* Disable DEBUGSS PLL HSDIV
148+
* Enable auto-clock-gating for CBASS
149+
* Put PLL8(A53 clock) in bypass
150+
* - **Deep Standby Mode**
151+
- * All default standby mode steps
152+
* Reduce CBASS frequency to lowest functional value(125Mhz)
153+
* Put DDR in Auto-self-refresh
154+
155+
The 2 additional changes in deep standby mode (CBASS frequency reduction and DDR auto-self-refresh) result in significantly higher power savings compared to default standby mode.
156+
125157
***************************
126158
Monitoring Standby Activity
127159
***************************
128160

129-
Once Standby Mode is enabled, you can monitor idle state activity through the PM generic power domain (genpd)
130-
sysfs interface. The power domain names are derived from the PSCI power domain hierarchy defined in the device
161+
Once you enable Standby Mode, you can monitor idle state activity through the PM generic power domain (genpd)
162+
sysfs interface. The power domain names come from the PSCI power domain hierarchy in the device
131163
tree overlay.
132164

133165
.. rubric:: CPU Idle Activity
@@ -144,8 +176,8 @@ To monitor per-CPU idle state usage:
144176
145177
.. rubric:: Cluster Standby Activity (Recommended)
146178

147-
To monitor cluster-level standby mode usage, which is the most useful metric for verifying that the system
148-
is successfully entering the low-latency standby mode when all cores are idle:
179+
The cluster-level standby mode usage metric is useful metric for verifying that the system
180+
is successfully entering standby mode. To check this value, issue the following:
149181

150182
.. code-block:: console
151183

0 commit comments

Comments
 (0)