diff options
author | Lina Iyer <lina.iyer@linaro.org> | 2015-03-25 16:25:28 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2015-04-03 16:33:51 -0400 |
commit | 52cd8451818bffa25bec2f69bc6286b3cc045bf7 (patch) | |
tree | 0fa3dd63eb1d24c1d71973c92ad9238c86e03c74 /Documentation | |
parent | 005c5dc9b3dd72970992d05ea63f1148d020112c (diff) |
devicetree: bindings: Document qcom,idle-states
Document cpuidle states of QCOM cpus. In addition to arm-idle-state
compatible string, the ARM idle state definition must define one of the
following compatible strings -
"qcom,idle-state-ret",
"qcom,idle-state-spc",
"qcom,idle-state-pc",
The compatibles helps the SPM platform driver to use the correct idle
function when the index to the idle state is passed to the platform
driver.
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
Signed-off-by: Kumar Gala <galak@codeaurora.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt b/Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt new file mode 100644 index 000000000000..06df04cc827a --- /dev/null +++ b/Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt | |||
@@ -0,0 +1,84 @@ | |||
1 | QCOM Idle States for cpuidle driver | ||
2 | |||
3 | ARM provides idle-state node to define the cpuidle states, as defined in [1]. | ||
4 | cpuidle-qcom is the cpuidle driver for Qualcomm SoCs and uses these idle | ||
5 | states. Idle states have different enter/exit latency and residency values. | ||
6 | The idle states supported by the QCOM SoC are defined as - | ||
7 | |||
8 | * Standby | ||
9 | * Retention | ||
10 | * Standalone Power Collapse (Standalone PC or SPC) | ||
11 | * Power Collapse (PC) | ||
12 | |||
13 | Standby: Standby does a little more in addition to architectural clock gating. | ||
14 | When the WFI instruction is executed the ARM core would gate its internal | ||
15 | clocks. In addition to gating the clocks, QCOM cpus use this instruction as a | ||
16 | trigger to execute the SPM state machine. The SPM state machine waits for the | ||
17 | interrupt to trigger the core back in to active. This triggers the cache | ||
18 | hierarchy to enter standby states, when all cpus are idle. An interrupt brings | ||
19 | the SPM state machine out of its wait, the next step is to ensure that the | ||
20 | cache hierarchy is also out of standby, and then the cpu is allowed to resume | ||
21 | execution. This state is defined as a generic ARM WFI state by the ARM cpuidle | ||
22 | driver and is not defined in the DT. The SPM state machine should be | ||
23 | configured to execute this state by default and after executing every other | ||
24 | state below. | ||
25 | |||
26 | Retention: Retention is a low power state where the core is clock gated and | ||
27 | the memory and the registers associated with the core are retained. The | ||
28 | voltage may be reduced to the minimum value needed to keep the processor | ||
29 | registers active. The SPM should be configured to execute the retention | ||
30 | sequence and would wait for interrupt, before restoring the cpu to execution | ||
31 | state. Retention may have a slightly higher latency than Standby. | ||
32 | |||
33 | Standalone PC: A cpu can power down and warmboot if there is a sufficient time | ||
34 | between the time it enters idle and the next known wake up. SPC mode is used | ||
35 | to indicate a core entering a power down state without consulting any other | ||
36 | cpu or the system resources. This helps save power only on that core. The SPM | ||
37 | sequence for this idle state is programmed to power down the supply to the | ||
38 | core, wait for the interrupt, restore power to the core, and ensure the | ||
39 | system state including cache hierarchy is ready before allowing core to | ||
40 | resume. Applying power and resetting the core causes the core to warmboot | ||
41 | back into Elevation Level (EL) which trampolines the control back to the | ||
42 | kernel. Entering a power down state for the cpu, needs to be done by trapping | ||
43 | into a EL. Failing to do so, would result in a crash enforced by the warm boot | ||
44 | code in the EL for the SoC. On SoCs with write-back L1 cache, the cache has to | ||
45 | be flushed in s/w, before powering down the core. | ||
46 | |||
47 | Power Collapse: This state is similar to the SPC mode, but distinguishes | ||
48 | itself in that the cpu acknowledges and permits the SoC to enter deeper sleep | ||
49 | modes. In a hierarchical power domain SoC, this means L2 and other caches can | ||
50 | be flushed, system bus, clocks - lowered, and SoC main XO clock gated and | ||
51 | voltages reduced, provided all cpus enter this state. Since the span of low | ||
52 | power modes possible at this state is vast, the exit latency and the residency | ||
53 | of this low power mode would be considered high even though at a cpu level, | ||
54 | this essentially is cpu power down. The SPM in this state also may handshake | ||
55 | with the Resource power manager (RPM) processor in the SoC to indicate a | ||
56 | complete application processor subsystem shut down. | ||
57 | |||
58 | The idle-state for QCOM SoCs are distinguished by the compatible property of | ||
59 | the idle-states device node. | ||
60 | |||
61 | The devicetree representation of the idle state should be - | ||
62 | |||
63 | Required properties: | ||
64 | |||
65 | - compatible: Must be one of - | ||
66 | "qcom,idle-state-ret", | ||
67 | "qcom,idle-state-spc", | ||
68 | "qcom,idle-state-pc", | ||
69 | and "arm,idle-state". | ||
70 | |||
71 | Other required and optional properties are specified in [1]. | ||
72 | |||
73 | Example: | ||
74 | |||
75 | idle-states { | ||
76 | CPU_SPC: spc { | ||
77 | compatible = "qcom,idle-state-spc", "arm,idle-state"; | ||
78 | entry-latency-us = <150>; | ||
79 | exit-latency-us = <200>; | ||
80 | min-residency-us = <2000>; | ||
81 | }; | ||
82 | }; | ||
83 | |||
84 | [1]. Documentation/devicetree/bindings/arm/idle-states.txt | ||