Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) %YAML 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) $id: http://devicetree.org/schemas/arm/idle-states.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) $schema: http://devicetree.org/meta-schemas/core.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) title: ARM idle states binding description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) maintainers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)   - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) description: |+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)   ==========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)   1 - Introduction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)   ==========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)   ARM systems contain HW capable of managing power consumption dynamically,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)   where cores can be put in different low-power states (ranging from simple wfi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)   to power gating) according to OS PM policies. The CPU states representing the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)   range of dynamic idle states that a processor can enter at run-time, can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)   specified through device tree bindings representing the parameters required to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)   enter/exit specific idle states on a given processor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)   According to the Server Base System Architecture document (SBSA, [3]), the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)   power states an ARM CPU can be put into are identified by the following list:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)   - Running
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)   - Idle_standby
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)   - Idle_retention
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)   - Sleep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)   - Off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)   The power states described in the SBSA document define the basic CPU states on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)   top of which ARM platforms implement power management schemes that allow an OS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)   PM implementation to put the processor in different idle states (which include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)   states listed above; "off" state is not an idle state since it does not have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)   wake-up capabilities, hence it is not considered in this document).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39)   Idle state parameters (e.g. entry latency) are platform specific and need to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)   be characterized with bindings that provide the required information to OS PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)   code so that it can build the required tables and use them at runtime.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)   The device tree binding definition for ARM idle states is the subject of this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)   document.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46)   ===========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47)   2 - idle-states definitions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48)   ===========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)   Idle states are characterized for a specific system through a set of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51)   timing and energy related properties, that underline the HW behaviour
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52)   triggered upon idle states entry and exit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54)   The following diagram depicts the CPU execution phases and related timing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55)   properties required to enter and exit an idle state:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)   ..__[EXEC]__|__[PREP]__|__[ENTRY]__|__[IDLE]__|__[EXIT]__|__[EXEC]__..
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58)               |          |           |          |          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60)               |<------ entry ------->|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)               |       latency        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)                                                 |<- exit ->|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)                                                 |  latency |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)               |<-------- min-residency -------->|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)                          |<-------  wakeup-latency ------->|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67)       Diagram 1: CPU idle state execution phases
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)   EXEC:  Normal CPU execution.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71)   PREP:  Preparation phase before committing the hardware to idle mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72)     like cache flushing. This is abortable on pending wake-up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73)     event conditions. The abort latency is assumed to be negligible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74)     (i.e. less than the ENTRY + EXIT duration). If aborted, CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)     goes back to EXEC. This phase is optional. If not abortable,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)     this should be included in the ENTRY phase instead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)   ENTRY:  The hardware is committed to idle mode. This period must run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79)     to completion up to IDLE before anything else can happen.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)   IDLE:  This is the actual energy-saving idle period. This may last
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)     between 0 and infinite time, until a wake-up event occurs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84)   EXIT:  Period during which the CPU is brought back to operational
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85)     mode (EXEC).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87)   entry-latency: Worst case latency required to enter the idle state. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88)   exit-latency may be guaranteed only after entry-latency has passed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90)   min-residency: Minimum period, including preparation and entry, for a given
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91)   idle state to be worthwhile energywise.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93)   wakeup-latency: Maximum delay between the signaling of a wake-up event and the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94)   CPU being able to execute normal code again. If not specified, this is assumed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95)   to be entry-latency + exit-latency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97)   These timing parameters can be used by an OS in different circumstances.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99)   An idle CPU requires the expected min-residency time to select the most
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)   appropriate idle state based on the expected expiry time of the next IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)   (i.e. wake-up) that causes the CPU to return to the EXEC phase.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)   An operating system scheduler may need to compute the shortest wake-up delay
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)   for CPUs in the system by detecting how long will it take to get a CPU out
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)   of an idle state, e.g.:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)   wakeup-delay = exit-latency + max(entry-latency - (now - entry-timestamp), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)   In other words, the scheduler can make its scheduling decision by selecting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)   (e.g. waking-up) the CPU with the shortest wake-up delay.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)   The wake-up delay must take into account the entry latency if that period
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)   has not expired. The abortable nature of the PREP period can be ignored
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)   if it cannot be relied upon (e.g. the PREP deadline may occur much sooner than
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)   the worst case since it depends on the CPU operating conditions, i.e. caches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)   state).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)   An OS has to reliably probe the wakeup-latency since some devices can enforce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)   latency constraint guarantees to work properly, so the OS has to detect the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)   worst case wake-up latency it can incur if a CPU is allowed to enter an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)   idle state, and possibly to prevent that to guarantee reliable device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)   functioning.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)   The min-residency time parameter deserves further explanation since it is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)   expressed in time units but must factor in energy consumption coefficients.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)   The energy consumption of a cpu when it enters a power state can be roughly
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)   characterised by the following graph:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)                  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)                  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)                  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)              e   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)              n   |                                      /---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)              e   |                               /------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)              r   |                        /------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)              g   |                  /-----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)              y   |           /------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)                  |       ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)                  |      /|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)                  |     / |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)                  |    /  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)                  |   /   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)                  |  /    |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)                  | /     |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)                  |/      |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)             -----|-------+----------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)                 0|       1                              time(ms)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)       Graph 1: Energy vs time example
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151)   The graph is split in two parts delimited by time 1ms on the X-axis.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)   The graph curve with X-axis values = { x | 0 < x < 1ms } has a steep slope
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)   and denotes the energy costs incurred while entering and leaving the idle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)   state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)   The graph curve in the area delimited by X-axis values = {x | x > 1ms } has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)   shallower slope and essentially represents the energy consumption of the idle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)   state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)   min-residency is defined for a given idle state as the minimum expected
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)   residency time for a state (inclusive of preparation and entry) after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)   which choosing that state become the most energy efficient option. A good
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)   way to visualise this, is by taking the same graph above and comparing some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)   states energy consumptions plots.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)   For sake of simplicity, let's consider a system with two idle states IDLE1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)   and IDLE2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)             |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)             |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)             |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)             |                                                  /-- IDLE1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)          e  |                                              /---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)          n  |                                         /----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)          e  |                                     /---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)          r  |                                /-----/--------- IDLE2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)          g  |                    /-------/---------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)          y  |        ------------    /---|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)             |       /           /----    |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)             |      /        /---         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)             |     /    /----             |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)             |    / /---                  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)             |   ---                      |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)             |  /                         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)             | /                          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)             |/                           |                  time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)          ---/----------------------------+------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)             |IDLE1-energy < IDLE2-energy | IDLE2-energy < IDLE1-energy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)                                          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)                                   IDLE2-min-residency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)       Graph 2: idle states min-residency example
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)   In graph 2 above, that takes into account idle states entry/exit energy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)   costs, it is clear that if the idle state residency time (i.e. time till next
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195)   wake-up IRQ) is less than IDLE2-min-residency, IDLE1 is the better idle state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)   choice energywise.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)   This is mainly down to the fact that IDLE1 entry/exit energy costs are lower
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)   than IDLE2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)   However, the lower power consumption (i.e. shallower energy curve slope) of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)   idle state IDLE2 implies that after a suitable time, IDLE2 becomes more energy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)   efficient.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)   The time at which IDLE2 becomes more energy efficient than IDLE1 (and other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)   shallower states in a system with multiple idle states) is defined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)   IDLE2-min-residency and corresponds to the time when energy consumption of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)   IDLE1 and IDLE2 states breaks even.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)   The definitions provided in this section underpin the idle states
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)   properties specification that is the subject of the following sections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)   ===========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)   3 - idle-states node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)   ===========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)   ARM processor idle states are defined within the idle-states node, which is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)   a direct child of the cpus node [1] and provides a container where the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)   processor idle states, defined as device tree nodes, are listed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)   On ARM systems, it is a container of processor idle states nodes. If the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)   system does not provide CPU power management capabilities, or the processor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)   just supports idle_standby, an idle-states node is not required.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)   ===========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)   4 - References
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)   ===========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229)   [1] ARM Linux Kernel documentation - CPUs bindings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)       Documentation/devicetree/bindings/arm/cpus.yaml
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)   [2] ARM Linux Kernel documentation - PSCI bindings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)       Documentation/devicetree/bindings/arm/psci.yaml
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)   [3] ARM Server Base System Architecture (SBSA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)       http://infocenter.arm.com/help/index.jsp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)   [4] ARM Architecture Reference Manuals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)       http://infocenter.arm.com/help/index.jsp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)   [6] ARM Linux Kernel documentation - Booting AArch64 Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)       Documentation/arm64/booting.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)   $nodename:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)     const: idle-states
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248)   entry-method:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)     description: |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250)       Usage and definition depend on ARM architecture version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252)       On ARM v8 64-bit this property is required.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253)       On ARM 32-bit systems this property is optional
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)       This assumes that the "enable-method" property is set to "psci" in the cpu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)       node[6] that is responsible for setting up CPU idle management in the OS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257)       implementation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258)     const: psci
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) patternProperties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261)   "^(cpu|cluster)-":
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)     type: object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)     description: |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264)       Each state node represents an idle state description and must be defined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265)       as follows.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267)       The idle state entered by executing the wfi instruction (idle_standby
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268)       SBSA,[3][4]) is considered standard on all ARM platforms and therefore
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)       must not be listed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271)       In addition to the properties listed above, a state node may require
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272)       additional properties specific to the entry-method defined in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)       idle-states node. Please refer to the entry-method bindings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274)       documentation for properties definitions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)     properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277)       compatible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)         const: arm,idle-state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)       local-timer-stop:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)         description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282)           If present the CPU local timer control logic is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283)              lost on state entry, otherwise it is retained.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284)         type: boolean
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)       entry-latency-us:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287)         description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)           Worst case latency in microseconds required to enter the idle state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)       exit-latency-us:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291)         description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)           Worst case latency in microseconds required to exit the idle state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293)           The exit-latency-us duration may be guaranteed only after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294)           entry-latency-us has passed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296)       min-residency-us:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297)         description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298)           Minimum residency duration in microseconds, inclusive of preparation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)           and entry, for this idle state to be considered worthwhile energy wise
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300)           (refer to section 2 of this document for a complete description).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)       wakeup-latency-us:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303)         description: |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304)           Maximum delay between the signaling of a wake-up event and the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)           being able to execute normal code again. If omitted, this is assumed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)           to be equal to:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308)             entry-latency-us + exit-latency-us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)           It is important to supply this value on systems where the duration of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311)           PREP phase (see diagram 1, section 2) is non-neglibigle. In such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312)           systems entry-latency-us + exit-latency-us will exceed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313)           wakeup-latency-us by this duration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)       idle-state-name:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)         $ref: /schemas/types.yaml#definitions/string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)         description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)           A string used as a descriptive name for the idle state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)     required:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)       - compatible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322)       - entry-latency-us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)       - exit-latency-us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324)       - min-residency-us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) additionalProperties: false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329)   - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331)     cpus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)         #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333)         #address-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335)         cpu@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338)             reg = <0x0 0x0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)         cpu@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)             reg = <0x0 0x1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353)         cpu@100 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356)             reg = <0x0 0x100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362)         cpu@101 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365)             reg = <0x0 0x101>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371)         cpu@10000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374)             reg = <0x0 0x10000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)         cpu@10001 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)             reg = <0x0 0x10001>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)         cpu@10100 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392)             reg = <0x0 0x10100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)         cpu@10101 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400)             compatible = "arm,cortex-a57";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)             reg = <0x0 0x10101>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403)             cpu-idle-states = <&CPU_RETENTION_0_0 &CPU_SLEEP_0_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404)                    &CLUSTER_RETENTION_0 &CLUSTER_SLEEP_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407)         cpu@100000000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)             reg = <0x1 0x0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416)         cpu@100000001 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419)             reg = <0x1 0x1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425)         cpu@100000100 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428)             reg = <0x1 0x100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434)         cpu@100000101 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437)             reg = <0x1 0x101>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)         cpu@100010000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446)             reg = <0x1 0x10000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452)         cpu@100010001 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455)             reg = <0x1 0x10001>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461)         cpu@100010100 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464)             reg = <0x1 0x10100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470)         cpu@100010101 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)             compatible = "arm,cortex-a53";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473)             reg = <0x1 0x10101>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474)             enable-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475)             cpu-idle-states = <&CPU_RETENTION_1_0 &CPU_SLEEP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476)                    &CLUSTER_RETENTION_1 &CLUSTER_SLEEP_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479)         idle-states {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480)             entry-method = "psci";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482)             CPU_RETENTION_0_0: cpu-retention-0-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)                 arm,psci-suspend-param = <0x0010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485)                 entry-latency-us = <20>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486)                 exit-latency-us = <40>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487)                 min-residency-us = <80>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)             CLUSTER_RETENTION_0: cluster-retention-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493)                 arm,psci-suspend-param = <0x1010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494)                 entry-latency-us = <50>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495)                 exit-latency-us = <100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496)                 min-residency-us = <250>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)                 wakeup-latency-us = <130>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500)             CPU_SLEEP_0_0: cpu-sleep-0-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503)                 arm,psci-suspend-param = <0x0010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504)                 entry-latency-us = <250>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505)                 exit-latency-us = <500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506)                 min-residency-us = <950>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509)             CLUSTER_SLEEP_0: cluster-sleep-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512)                 arm,psci-suspend-param = <0x1010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513)                 entry-latency-us = <600>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514)                 exit-latency-us = <1100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515)                 min-residency-us = <2700>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516)                 wakeup-latency-us = <1500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)             CPU_RETENTION_1_0: cpu-retention-1-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521)                 arm,psci-suspend-param = <0x0010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522)                 entry-latency-us = <20>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523)                 exit-latency-us = <40>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524)                 min-residency-us = <90>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527)             CLUSTER_RETENTION_1: cluster-retention-1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530)                 arm,psci-suspend-param = <0x1010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531)                 entry-latency-us = <50>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532)                 exit-latency-us = <100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533)                 min-residency-us = <270>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534)                 wakeup-latency-us = <100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537)             CPU_SLEEP_1_0: cpu-sleep-1-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540)                 arm,psci-suspend-param = <0x0010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541)                 entry-latency-us = <70>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542)                 exit-latency-us = <100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543)                 min-residency-us = <300>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544)                 wakeup-latency-us = <150>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547)             CLUSTER_SLEEP_1: cluster-sleep-1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550)                 arm,psci-suspend-param = <0x1010000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551)                 entry-latency-us = <500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552)                 exit-latency-us = <1200>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553)                 min-residency-us = <3500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554)                 wakeup-latency-us = <1300>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559)   - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560)     // Example 2 (ARM 32-bit, 8-cpu system, two clusters):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562)     cpus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563)         #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564)         #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566)         cpu@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568)             compatible = "arm,cortex-a15";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569)             reg = <0x0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570)             cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573)         cpu@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575)             compatible = "arm,cortex-a15";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576)             reg = <0x1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577)             cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580)         cpu@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582)             compatible = "arm,cortex-a15";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583)             reg = <0x2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584)             cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587)         cpu@3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589)             compatible = "arm,cortex-a15";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590)             reg = <0x3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591)             cpu-idle-states = <&cpu_sleep_0_0 &cluster_sleep_0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594)         cpu@100 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596)             compatible = "arm,cortex-a7";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597)             reg = <0x100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598)             cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601)         cpu@101 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603)             compatible = "arm,cortex-a7";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604)             reg = <0x101>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605)             cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608)         cpu@102 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610)             compatible = "arm,cortex-a7";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611)             reg = <0x102>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612)             cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615)         cpu@103 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616)             device_type = "cpu";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617)             compatible = "arm,cortex-a7";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618)             reg = <0x103>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619)             cpu-idle-states = <&cpu_sleep_1_0 &cluster_sleep_1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622)         idle-states {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623)             cpu_sleep_0_0: cpu-sleep-0-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626)                 entry-latency-us = <200>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627)                 exit-latency-us = <100>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628)                 min-residency-us = <400>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629)                 wakeup-latency-us = <250>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632)             cluster_sleep_0: cluster-sleep-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635)                 entry-latency-us = <500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636)                 exit-latency-us = <1500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637)                 min-residency-us = <2500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638)                 wakeup-latency-us = <1700>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641)             cpu_sleep_1_0: cpu-sleep-1-0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644)                 entry-latency-us = <300>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645)                 exit-latency-us = <500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646)                 min-residency-us = <900>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647)                 wakeup-latency-us = <600>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650)             cluster_sleep_1: cluster-sleep-1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651)                 compatible = "arm,idle-state";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652)                 local-timer-stop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653)                 entry-latency-us = <800>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654)                 exit-latency-us = <2000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655)                 min-residency-us = <6500>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656)                 wakeup-latency-us = <2300>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657)             };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658)         };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659)     };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) ...