Skip to content

Commit 44845ea

Browse files
committed
arm64: dts: fvp: Add CPU idle states for Rev C model
Add CPU idle state definitions to the FVP Rev C device tree to enable support for CPU lower power modes. This allows the system to properly enter low power states during idle. It is disabled by default as it is know to impact performance on the models. Note that the power_state parameter(arm,psci-suspend-param) doesn't use the Extended StateID format for compatibility reasons on FVP. Tested on the FVP Rev C model with PSCI support enabled firmware. Tested-by: Leo Yan <[email protected]> Message-Id: <[email protected]> Reviewed-by: Liviu Dudau <[email protected]> Signed-off-by: Sudeep Holla <[email protected]>
1 parent 7556a55 commit 44845ea

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

arch/arm64/boot/dts/arm/fvp-base-revc.dts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,30 @@
4444
#address-cells = <2>;
4545
#size-cells = <0>;
4646

47+
idle-states {
48+
entry-method = "psci";
49+
50+
CPU_SLEEP_0: cpu-sleep-0 {
51+
compatible = "arm,idle-state";
52+
local-timer-stop;
53+
arm,psci-suspend-param = <0x0010000>;
54+
entry-latency-us = <40>;
55+
exit-latency-us = <100>;
56+
min-residency-us = <150>;
57+
status = "disabled";
58+
};
59+
60+
CLUSTER_SLEEP_0: cluster-sleep-0 {
61+
compatible = "arm,idle-state";
62+
local-timer-stop;
63+
arm,psci-suspend-param = <0x1010000>;
64+
entry-latency-us = <500>;
65+
exit-latency-us = <1000>;
66+
min-residency-us = <2500>;
67+
status = "disabled";
68+
};
69+
};
70+
4771
cpu0: cpu@0 {
4872
device_type = "cpu";
4973
compatible = "arm,armv8";
@@ -56,6 +80,7 @@
5680
d-cache-line-size = <64>;
5781
d-cache-sets = <256>;
5882
next-level-cache = <&C0_L2>;
83+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
5984
};
6085
cpu1: cpu@100 {
6186
device_type = "cpu";
@@ -69,6 +94,7 @@
6994
d-cache-line-size = <64>;
7095
d-cache-sets = <256>;
7196
next-level-cache = <&C0_L2>;
97+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
7298
};
7399
cpu2: cpu@200 {
74100
device_type = "cpu";
@@ -82,6 +108,7 @@
82108
d-cache-line-size = <64>;
83109
d-cache-sets = <256>;
84110
next-level-cache = <&C0_L2>;
111+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
85112
};
86113
cpu3: cpu@300 {
87114
device_type = "cpu";
@@ -95,6 +122,7 @@
95122
d-cache-line-size = <64>;
96123
d-cache-sets = <256>;
97124
next-level-cache = <&C0_L2>;
125+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
98126
};
99127
cpu4: cpu@10000 {
100128
device_type = "cpu";
@@ -108,6 +136,7 @@
108136
d-cache-line-size = <64>;
109137
d-cache-sets = <256>;
110138
next-level-cache = <&C1_L2>;
139+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
111140
};
112141
cpu5: cpu@10100 {
113142
device_type = "cpu";
@@ -121,6 +150,7 @@
121150
d-cache-line-size = <64>;
122151
d-cache-sets = <256>;
123152
next-level-cache = <&C1_L2>;
153+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
124154
};
125155
cpu6: cpu@10200 {
126156
device_type = "cpu";
@@ -134,6 +164,7 @@
134164
d-cache-line-size = <64>;
135165
d-cache-sets = <256>;
136166
next-level-cache = <&C1_L2>;
167+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
137168
};
138169
cpu7: cpu@10300 {
139170
device_type = "cpu";
@@ -147,6 +178,7 @@
147178
d-cache-line-size = <64>;
148179
d-cache-sets = <256>;
149180
next-level-cache = <&C1_L2>;
181+
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
150182
};
151183
C0_L2: l2-cache0 {
152184
compatible = "cache";

0 commit comments

Comments
 (0)