You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
- 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
46
46
- Low (milliseconds)
47
47
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.
50
59
51
60
Power Domain Hierarchy
52
61
======================
@@ -57,36 +66,36 @@ how different power domains relate to each other:
57
66
* **CPU_PD** (CPU Power Domain): Per-CPU power domain
58
67
* **CLUSTER_PD** (Cluster Power Domain): Cluster-level power domain that groups multiple CPUs
59
68
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.
61
70
62
-
.. note::
71
+
.. _deep-standby-mode:
63
72
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
+
=================
68
75
69
76
Critical Prerequisites
70
-
======================
77
+
----------------------
71
78
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.
73
80
74
81
**CPSW (Gigabit Ethernet) Driver Suspension**
75
82
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.
78
85
79
86
**Display Driver Suspension**
80
87
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.
83
90
84
-
.. warning::
91
+
How to Enable Deep Standby Mode
92
+
-------------------------------
85
93
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.
90
99
91
100
***********************************************
92
101
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
97
106
1. **Detection Phase**:
98
107
- CPUIdle monitors per-CPU idle state transitions
99
108
- 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
101
110
102
111
2. **Coordination Phase**:
103
112
- 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
110
119
111
120
4. **Standby Entry Phase**:
112
121
- 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`
116
123
- System enters low-power standby state with reduced power consumption
117
124
118
125
5. **Wake-Up Phase**:
119
126
- 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
122
128
- Cores resume execution with minimal latency
123
129
- System returns to active operation
124
130
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
+
125
157
***************************
126
158
Monitoring Standby Activity
127
159
***************************
128
160
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
131
163
tree overlay.
132
164
133
165
.. rubric:: CPU Idle Activity
@@ -144,8 +176,8 @@ To monitor per-CPU idle state usage:
0 commit comments