From bab7bfd282134483021411d0648719b0d6ecc038 Mon Sep 17 00:00:00 2001
From: Achin Gupta <achin.gupta@arm.com>
Date: Wed, 20 Aug 2014 17:33:09 +0100
Subject: [PATCH] FVP: Update device trees to match cpuidle driver

This patch updates the representation of idle tables and cpu/cluster topology in
the device tree source files for the FVP to what the latest cpuidle driver in
Linux expects. The device tree binaries have also been updated.

Change-Id: If0668b96234f65aa0435fba52f288c9378bd8824
---
 fdts/fvp-base-gicv2-psci.dtb             | Bin 8916 -> 10082 bytes
 fdts/fvp-base-gicv2-psci.dts             |  83 ++++++++++++++++++++---
 fdts/fvp-base-gicv2legacy-psci.dtb       | Bin 8916 -> 10082 bytes
 fdts/fvp-base-gicv2legacy-psci.dts       |  83 ++++++++++++++++++++---
 fdts/fvp-base-gicv3-psci.dtb             | Bin 9544 -> 10710 bytes
 fdts/fvp-base-gicv3-psci.dts             |  83 ++++++++++++++++++++---
 fdts/fvp-foundation-gicv2-psci.dtb       | Bin 6641 -> 7451 bytes
 fdts/fvp-foundation-gicv2-psci.dts       |  52 ++++++++++++--
 fdts/fvp-foundation-gicv2legacy-psci.dtb | Bin 6641 -> 7451 bytes
 fdts/fvp-foundation-gicv2legacy-psci.dts |  52 ++++++++++++--
 fdts/fvp-foundation-gicv3-psci.dtb       | Bin 7269 -> 8079 bytes
 fdts/fvp-foundation-gicv3-psci.dts       |  52 ++++++++++++--
 12 files changed, 369 insertions(+), 36 deletions(-)

diff --git a/fdts/fvp-base-gicv2-psci.dtb b/fdts/fvp-base-gicv2-psci.dtb
index 619348eac9004e95fb61c98d894882ac64df52e4..ae3b4c55c041da0a7a85b3cf7d2ebee450d97b6a 100644
GIT binary patch
literal 10082
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

delta 2683
zcmah~U1*zC7(U;ZCjCp+wMm+;U7MzHGb=;VPS%-i7~9#O4TBCTp*P#iIy#ruIN7K&
z=#Vn-MrIGp4R%rL55)^nR@inScrz#>SfPmYV$`33y1APosEGJH=lf2+G+*WpoSgT(
z=Y8JydEfJXCqHIZpHHj={{3Buu2mt#un^Jju_iDZF}Gr3nEyb3`SV21Y)mIDl?O`|
z<`uc_+u0!&EUo(Gkr(sh!W+5M)X3}JHlxhYfZlDG^x1}~qDQlmA#~Imxx%^h9taql
z2sv=7U2&i*!h4b`qfPK)K4j^J%Lmov`52Y+xmZ)4kMY=idXg%mM-Zx*k6f&MGJIun
zeDbxkZ<4X1+=+ET{#<*>6iYH+*Re(1u}{+K<Z9jFZm|ZD)N6%k;C1S#_iVl1-<SUS
zlquHaFqaKETR&*R``7iYKC$8b;|KBHd|Wp8YYdNU@ke*nmB9Uw8HS@3Q-@)1Ey&}3
zI9ij7{uw|Mfw#NG67;&7z#0+k^>`KnC{@A6=)SQU_@>I(CqHZ&Yubc@5u9xeW=QdP
zFm4=?vq6h*Fw?3!%j7kvFiy^E^6Ak2*eDM$bmkkz)Ly+00FslJLv3N!M<>GdKKJs=
zP~S@~ylCi8<COjyh(F&unL0auDwjXgGdb}Vv`#E~rJasVuO2xZ?sKye;vx=}B?<{v
z^I?mX?k~;Clq=ygD93^3%pg)%9nI1!C>G<qEdyX&f?Vo=guKqVO4BP>ng^ePD^<dx
zD_+%H8Jv0G`iyJxP$b^S%IJ$tLd?nO$bMDH>aq~kayin!7a^F0^$6*bu#@T?a}|<S
zJVz5FRJtWI11M=b&>CzAg^6Hu(wvMx!m2E>a%lahkf~SYvh^&`O>wggTV==n9mqa=
zj~F%`+_UDi1<Gr3`?jNel4$90q6s<i17TbT@4$l!zPN3aaF)ppM^ioqzOPlmnY$a#
zEFTpee*qxBY{6MJH{6}PL*9aC+f;O3nj5ZfzEbWM{1*$(BDvwb*8e9zy<J7ejZ}bB
zSqf)I>x;9Z*R+rEtHGuMTz@Gc`{LF8z>q5&N4sjbF0uU-T{Yprod{WQmb#*QU7vDS
z33;I-#V<s?j>V5qx0E)=TJZ}B%|%oENTLYgCWD^cR2EiQdsJn~<#Q+Teu)!>SB@1Z
zSc3_mos4g@qeIV?=*Z%`l07f`Zi~Df9ccy!w0JoO+0uFVsPWsL(b9iH<1f)WHV<2d
zflIToWDk|O%Q+MGAnVp7b-tuNxzsu2JqXD=7wdZ_3xT)9Nta+{zHYoaUhphGT(@;(
zUizT($;in<ETWz*-F-Shjl3QkFtTzzb_Bn>yD~GCN?~4r^8-!*bJnVEF|T(lKE?gJ
zLL7umasNK#t0nsnAmcqPo__|JZQ&6^R-wMI4|U<b!hXWmfxEd1nK|h5yO24!ha>YR
znT~gLnZLd~@<Q*i{((b62_r8KC@W>Q6J`(PY`oVrH{>lYf652(PvqZEbjZYxo<RQe
V)Vb;1g^3eWC-dVsvODU`{{V{hFO2{I

diff --git a/fdts/fvp-base-gicv2-psci.dts b/fdts/fvp-base-gicv2-psci.dts
index d20f7bd58..43518a3f4 100644
--- a/fdts/fvp-base-gicv2-psci.dts
+++ b/fdts/fvp-base-gicv2-psci.dts
@@ -65,53 +65,120 @@
 		#address-cells = <2>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&CPU0>;
+				};
+				core1 {
+					cpu = <&CPU1>;
+				};
+				core2 {
+					cpu = <&CPU2>;
+				};
+				core3 {
+					cpu = <&CPU3>;
+				};
+			};
+
+			cluster1 {
+				core0 {
+					cpu = <&CPU4>;
+				};
+				core1 {
+					cpu = <&CPU5>;
+				};
+				core2 {
+					cpu = <&CPU6>;
+				};
+				core3 {
+					cpu = <&CPU7>;
+				};
+			};
+		};
+
+		idle-states {
+			entry-method = "arm,psci";
+
+			CPU_SLEEP_0: cpu-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x0010000>;
+				entry-latency-us = <40>;
+				exit-latency-us = <100>;
+				min-residency-us = <150>;
+			};
+
+			CLUSTER_SLEEP_0: cluster-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x1010000>;
+				entry-latency-us = <500>;
+				exit-latency-us = <1000>;
+				min-residency-us = <2500>;
+			};
+		};
+
+		CPU0:cpu@0 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@1 {
+
+		CPU1:cpu@1 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x1>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@2 {
+
+		CPU2:cpu@2 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x2>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@3 {
+
+		CPU3:cpu@3 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x3>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@100 {
+
+		CPU4:cpu@100 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x100>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@101 {
+
+		CPU5:cpu@101 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x101>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@102 {
+
+		CPU6:cpu@102 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x102>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@103 {
+
+		CPU7:cpu@103 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x103>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
 	};
 
diff --git a/fdts/fvp-base-gicv2legacy-psci.dtb b/fdts/fvp-base-gicv2legacy-psci.dtb
index 12307177b2d1e1bd4bc8ac56b4bf2da5bf9ec16a..2d23968f3e445a853b91144728d84f6676ee7f8f 100644
GIT binary patch
literal 10082
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

delta 2683
zcmah~U1*zC7(U;ZCjCp+wMm+;U7MzHGb=;VPS%-i7~9#O4TBCTp*P#iIy#ruIN7K&
z=#Vn-MrIGp4R%rL55)^nR@inScrz#>SfPmYV$`33y1APosEGJH=lf2+G+*WpoSgT(
z=Y8JydEfJXCqHIZpHHj={{3Buu2mt#un^Jju_iDZF}Gr3nEyb3`SV21Y)mIDl?O`|
z<`uc_+u0!&EUo(Gkr(sh!W+5M)X3}JHlxhYfZlDG^x1}~qDQlmA#~Imxx%^h9taql
z2sv=7U2&i*!h4b`qfPK)K4j^J%Lmov`52Y+xmZ)4kMY=idXg%mM-Zx*k6f&MGJIun
zeDbxkZ<4X1+=+ET{#<*>6iYH+*Re(1u}{+K<Z9jFZm|ZD)N6%k;C1S#_iVl1-<SUS
zlquHaFqaKETR&*R``7iYKC$8b;|KBHd|Wp8YYdNU@ke*nmB9Uw8HS@3Q-@)1Ey&}3
zI9ij7{uw|Mfw#NG67;&7z#0+k^>`KnC{@A6=)SQU_@>I(CqHZ&Yubc@5u9xeW=QdP
zFm4=?vq6h*Fw?3!%j7kvFiy^E^6Ak2*eDM$bmkkz)Ly+00FslJLv3N!M<>GdKKJs=
zP~S@~ylCi8<COjyh(F&unL0auDwjXgGdb}Vv`#E~rJasVuO2xZ?sKye;vx=}B?<{v
z^I?mX?k~;Clq=ygD93^3%pg)%9nI1!C>G<qEdyX&f?Vo=guKqVO4BP>ng^ePD^<dx
zD_+%H8Jv0G`iyJxP$b^S%IJ$tLd?nO$bMDH>aq~kayin!7a^F0^$6*bu#@T?a}|<S
zJVz5FRJtWI11M=b&>CzAg^6Hu(wvMx!m2E>a%lahkf~SYvh^&`O>wggTV==n9mqa=
zj~F%`+_UDi1<Gr3`?jNel4$90q6s<i17TbT@4$l!zPN3aaF)ppM^ioqzOPlmnY$a#
zEFTpee*qxBY{6MJH{6}PL*9aC+f;O3nj5ZfzEbWM{1*$(BDvwb*8e9zy<J7ejZ}bB
zSqf)I>x;9Z*R+rEtHGuMTz@Gc`{LF8z>q5&N4sjbF0uU-T{Yprod{WQmb#*QU7vDS
z33;I-#V<s?j>V5qx0E)=TJZ}B%|%oENTLYgCWD^cR2EiQdsJn~<#Q+Teu)!>SB@1Z
zSc3_mos4g@qeIV?=*Z%`l07f`Zi~Df9ccy!w0JoO+0uFVsPWsL(b9iH<1f)WHV<2d
zflIToWDk|O%Q+MGAnVp7b-tuNxzsu2JqXD=7wdZ_3xT)9Nta+{zHYoaUhphGT(@;(
zUizT($;in<ETWz*-F-Shjl3QkFtTzzb_Bn>yD~GCN?~4r^8-!*bJnVEF|T(lKE?gJ
zLL7umasNK#t0nsnAmcqPo__|JZQ&6^R-wMI4|U<b!hXWmfxEd1nK|h5yO24!ha>YR
znT~gLnZLd~@<Q*i{((b62_r8KC@W>Q6J`(PY`oVrH{>lYf652(PvqZEbjZYxo<RQe
V)Vb;1g^3eWC-dVsvODU`{{V{hFO2{I

diff --git a/fdts/fvp-base-gicv2legacy-psci.dts b/fdts/fvp-base-gicv2legacy-psci.dts
index 3eb0e571a..06d33e749 100644
--- a/fdts/fvp-base-gicv2legacy-psci.dts
+++ b/fdts/fvp-base-gicv2legacy-psci.dts
@@ -65,53 +65,120 @@
 		#address-cells = <2>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&CPU0>;
+				};
+				core1 {
+					cpu = <&CPU1>;
+				};
+				core2 {
+					cpu = <&CPU2>;
+				};
+				core3 {
+					cpu = <&CPU3>;
+				};
+			};
+
+			cluster1 {
+				core0 {
+					cpu = <&CPU4>;
+				};
+				core1 {
+					cpu = <&CPU5>;
+				};
+				core2 {
+					cpu = <&CPU6>;
+				};
+				core3 {
+					cpu = <&CPU7>;
+				};
+			};
+		};
+
+		idle-states {
+			entry-method = "arm,psci";
+
+			CPU_SLEEP_0: cpu-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x0010000>;
+				entry-latency-us = <40>;
+				exit-latency-us = <100>;
+				min-residency-us = <150>;
+			};
+
+			CLUSTER_SLEEP_0: cluster-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x1010000>;
+				entry-latency-us = <500>;
+				exit-latency-us = <1000>;
+				min-residency-us = <2500>;
+			};
+		};
+
+		CPU0:cpu@0 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@1 {
+
+		CPU1:cpu@1 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x1>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@2 {
+
+		CPU2:cpu@2 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x2>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@3 {
+
+		CPU3:cpu@3 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x3>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@100 {
+
+		CPU4:cpu@100 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x100>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@101 {
+
+		CPU5:cpu@101 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x101>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@102 {
+
+		CPU6:cpu@102 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x102>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@103 {
+
+		CPU7:cpu@103 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x103>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
 	};
 
diff --git a/fdts/fvp-base-gicv3-psci.dtb b/fdts/fvp-base-gicv3-psci.dtb
index b9fe1cf3fe0407f3bcf4b8b8bb7db1536c088ac1..c2f63ebebee24231f71f3eb0c9d6a839e3314d6f 100644
GIT binary patch
literal 10710
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

delta 2514
zcmah~U1(fI6rMZjZvN9IW|M4wHv5xgm!fvF+iGo;L`&U}N)xG6NdhLu#H8I#mo$|s
zp|Mg#yh@G72SEyb5a~mRNEKfq1nEO8Mfy;Jpbx2n2%>0+;De~&nS1B%ZtmI+%$=Dt
z=ljmz%-oIR>jSY{)&Kk|L}$Mc0zLc;#u$1n`W|#Nxea;Mr?JDbwl8jpN-*p~U!*l}
zw9T}H>dQMG^h?<@6EiHK1y74nsAoXz*4yK?^&ZiDvX~xZEH@^yXZw<vpcQ!Ipjqm&
z0-1yEj;m-2&^i`&(T%2?r8{CVipMfmwj&nfp0RYtRW!xDDH;pCSswK*W+pSI=U!oV
zmA^rZCS5N-DaB=qS3KA(R_q-N;&XdGgwdpP6~j{8pxYHwHR4Bmhih(9f8_x0ykB`p
ziY>ZTnF^_z?7e_pZYn)a-nTq|-VsYzB2TlM+}NZsH8-A_>`ROvOvcfa+zw79Lnp2Z
zJ2%v>5X~6*Sh1ev$a2+_?8tW2c_~(CzWVjO;xab#z{YN@b?e0hU@u6G@U>t~)N914
zzkax`0L9uX^jZC&VbU&N#5hbbUkdZAk0ooq1~&Pvuc!N%&1?HDwv5?_Sj6jUm>79E
zkvTMxK9$&?nSPZw=%P19>4tqF7gFqgq7Mp;gu})Ntv0mNzaBqrH|%rU5#lu{>O5F>
z<|e0LDw#M1Q#9&{(L&=3oRrPR!A{ev2<J?JFc`D;90@hfV=k$w6riTw2TXMbtn1AV
zakk!KjT}O;G(x^aKQ~2cIUJpHloIZ@`g>`x%un<Fo&%;TT8@uP$R(}J@hN^?+H%D^
z)?QD4`Fj>k^<L!AWi}dGqQYii54rCAvgoEg{}=+6TW8XWpJV<+e9^+XtjFswF?#Ja
zY-o>aoD)|A;S#MiAIB5IiaD2bKzvr2E)VXY?^EcfTAl^Ev?v-U<{s$p6`BKg+vX7e
z&o&-wc%E)$+nh2tx=7%T=N9^Jh31mE(Hzg+ZNJ^dwmCm;G#B*l=+*$E)kSuWu+BMC
z=A-$L@*c}9&zA!uM@;p@a@*ENy526hstk}k@`2GzZC3T#UjkDd<ZdRm$335k*>!Gq
zGQ}tu<g0;8RD?}yW7G#xv0GQ;-QXbd(OwjZQ(BM@&aP&&^3fCubQxbicOvyT6QHr%
zZ0H-c%E32iG<4Kw3LM>?F4AgfAYuHFJdyuXGX4;W;VaO!31xZS8e$ouWjrxs;a<-H
zEIss5_~9c%m~p1LGY<aB8RO(+wq*UcO<Ts!@e{+1b@;lgxApXy3A}mTf^L_^s6Uc4
zhG-#j6yJ6At?x)-KH9;Os~yJ{i$yKxLHMXm3`26k%9j(w1<R(henW`IF6QZ9!u*50
z^@o__4RrLcV$MY_5h=wi^-or3=__nb=K*eF4o4h<4a~W*K8WOZwAvY#@(yiw2BiGy
ry{?3mztDajey8a!qUWOldMA3YIz2Oc_T2s1>G9bY)05Y(N9*K&1N|x{

diff --git a/fdts/fvp-base-gicv3-psci.dts b/fdts/fvp-base-gicv3-psci.dts
index 44339a126..6afa44c72 100644
--- a/fdts/fvp-base-gicv3-psci.dts
+++ b/fdts/fvp-base-gicv3-psci.dts
@@ -63,53 +63,120 @@
 		#address-cells = <2>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&CPU0>;
+				};
+				core1 {
+					cpu = <&CPU1>;
+				};
+				core2 {
+					cpu = <&CPU2>;
+				};
+				core3 {
+					cpu = <&CPU3>;
+				};
+			};
+
+			cluster1 {
+				core0 {
+					cpu = <&CPU4>;
+				};
+				core1 {
+					cpu = <&CPU5>;
+				};
+				core2 {
+					cpu = <&CPU6>;
+				};
+				core3 {
+					cpu = <&CPU7>;
+				};
+			};
+		};
+
+		idle-states {
+			entry-method = "arm,psci";
+
+			CPU_SLEEP_0: cpu-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x0010000>;
+				entry-latency-us = <40>;
+				exit-latency-us = <100>;
+				min-residency-us = <150>;
+			};
+
+			CLUSTER_SLEEP_0: cluster-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x1010000>;
+				entry-latency-us = <500>;
+				exit-latency-us = <1000>;
+				min-residency-us = <2500>;
+			};
+		};
+
+		CPU0:cpu@0 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@1 {
+
+		CPU1:cpu@1 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x1>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@2 {
+
+		CPU2:cpu@2 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x2>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@3 {
+
+		CPU3:cpu@3 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x3>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@100 {
+
+		CPU4:cpu@100 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x100>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@101 {
+
+		CPU5:cpu@101 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x101>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@102 {
+
+		CPU6:cpu@102 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x102>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@103 {
+
+		CPU7:cpu@103 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x103>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
 	};
 
diff --git a/fdts/fvp-foundation-gicv2-psci.dtb b/fdts/fvp-foundation-gicv2-psci.dtb
index eee0be0e1aa8a6d597fb32ba01387769865aab73..df8e629ffafe1746e42d3c84997e68873b28c493 100644
GIT binary patch
literal 7451
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
WL^@^ae0I|R^D&$t2lLf3b^ikatER62

delta 1614
zcmah~O-NKx6u$R4zoyNvqcc;cBsGbo&4kJbIk*@^Luw=8E=*Hq#s<r<S|lyXMM!W#
zqFjhX&@z;8(IzNx5#+Mm2Z6Q_TSwpbX0ATxDP1`4-h1x(zH{z5=gz!N@1_!)wSRvL
z5#1F+^b1kHi8%oYK>QF4qZ#`7_les^Ak$G&Rbg^K7S%P^xkj;4(wbi$IU#S0cSk3w
zQ8muEtT2?&+YOhsVS1m@ILZ(@>g8y0CX>Pf<CuV`w)@#|ov&Lgj1}%oKiCI1VYQ+h
z?x%)WQ_tOvC&iaCHe;Twy9Zju7M2X%D};~N*Is{?^?JXp+B|7PY^e!Od+LoRYk+;n
z6XVX~ZI@N5+k56hwFOs$HTgMW5Y5jbtf)CJ7`D`g_c5UT)lXW*8uU7iz{+~;_2|U{
zu{dBOTUY;7e{;xg_1QNPJcNP~$U6L27+cXFp@VsU&-KAFjlRvEoa&^C`&wXb+)ozL
zqxoF&a$(|Og)K9oBj>!$y$T1qnr*DY*O$R5S$$+x`9Qpmcxtq7;;YnBpvxYW5OX**
zEs>*ARMTVQ2rQM%l>*Z&WYwLdqcT)WFo*lU2o7b@ZcJsV;R(W!Ief|l@)6cn0us6o
z&dqDOR7)s(5mYohpki&FL1BfH7WI+~>SgF`fSJ*i#QQ=fzJ_|tOgM3(@4!qr)v0hF
z9|s!H;(}LV>u7UN*(LQ9Qs6z)U3i#q_T52*8m=#NJUmfn!cQCtcSB20$HUi4aCW-g
zJ7E8T_eV_cXqF@3R9d|=-G}e~Ju<>V^M}puT~{YuP90Op!I`zuRHw}}&eo5UDo6{y
zPt&tbBcq^LsYtJ@Q%RLjR~youpfg{vjZT|mHv35L(E=#wayYCu8`2TLL-0`%jcSSx
zB;~8ru=y*=pvdx0BuAF9*85MEJ=F4tT8d^}68{RqrG7<wrAH-VgZSQyeNYSWM)fg%
YsWv}3H8a~*oVYo4D?hfn6K|LQ0Dv33S^xk5

diff --git a/fdts/fvp-foundation-gicv2-psci.dts b/fdts/fvp-foundation-gicv2-psci.dts
index 8d354b37a..15ff47182 100644
--- a/fdts/fvp-foundation-gicv2-psci.dts
+++ b/fdts/fvp-foundation-gicv2-psci.dts
@@ -65,29 +65,73 @@
 		#address-cells = <2>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&CPU0>;
+				};
+				core1 {
+					cpu = <&CPU1>;
+				};
+				core2 {
+					cpu = <&CPU2>;
+				};
+				core3 {
+					cpu = <&CPU3>;
+				};
+			};
+		};
+
+		idle-states {
+			entry-method = "arm,psci";
+
+			CPU_SLEEP_0: cpu-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x0010000>;
+				entry-latency-us = <40>;
+				exit-latency-us = <100>;
+				min-residency-us = <150>;
+			};
+
+			CLUSTER_SLEEP_0: cluster-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x1010000>;
+				entry-latency-us = <500>;
+				exit-latency-us = <1000>;
+				min-residency-us = <2500>;
+			};
+		};
+
+		CPU0:cpu@0 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@1 {
+
+		CPU1:cpu@1 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x1>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@2 {
+
+		CPU2:cpu@2 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x2>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@3 {
+
+		CPU3:cpu@3 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x3>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
 	};
 
diff --git a/fdts/fvp-foundation-gicv2legacy-psci.dtb b/fdts/fvp-foundation-gicv2legacy-psci.dtb
index 58bb9b3aef92c5848ce739058007de643416a9d1..ed43254131d0d94a1466270f1b39dff12b214420 100644
GIT binary patch
literal 7451
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

delta 1614
zcmah~O-NKx6u$R4zoyNvqcc;cBsGbo&4kJbIk*@^Luw=8E=*Hq#s<r<S|lyXMM!W#
zqFjhX&@z;8(IzNx5#+Mm2Z6Q_TSwpbX0ATxDP1`4-h1x(zH{z5=gz!N@1_!)wSRvL
z5#1F+^b1kHi8%oYK>QF4qZ#`7_les^Ak$G&Rbg^K7S%P^xkj;4(wbi$IU#S0cSk3w
zQ8muEtT2?&+YOhsVS1m@ILZ(@>g8y0CX>Pf<CuV`w)@#|ov&Lgj1}%oKiCI1VYQ+h
z?x%)WQ_tOvC&iaCHe;Twy9Zju7M2X%D};~N*Is{?^?JXp+B|7PY^e!Od+LoRYk+;n
z6XVX~ZI@N5+k56hwFOs$HTgMW5Y5jbtf)CJ7`D`g_c5UT)lXW*8uU7iz{+~;_2|U{
zu{dBOTUY;7e{;xg_1QNPJcNP~$U6L27+cXFp@VsU&-KAFjlRvEoa&^C`&wXb+)ozL
zqxoF&a$(|Og)K9oBj>!$y$T1qnr*DY*O$R5S$$+x`9Qpmcxtq7;;YnBpvxYW5OX**
zEs>*ARMTVQ2rQM%l>*Z&WYwLdqcT)WFo*lU2o7b@ZcJsV;R(W!Ief|l@)6cn0us6o
z&dqDOR7)s(5mYohpki&FL1BfH7WI+~>SgF`fSJ*i#QQ=fzJ_|tOgM3(@4!qr)v0hF
z9|s!H;(}LV>u7UN*(LQ9Qs6z)U3i#q_T52*8m=#NJUmfn!cQCtcSB20$HUi4aCW-g
zJ7E8T_eV_cXqF@3R9d|=-G}e~Ju<>V^M}puT~{YuP90Op!I`zuRHw}}&eo5UDo6{y
zPt&tbBcq^LsYtJ@Q%RLjR~youpfg{vjZT|mHv35L(E=#wayYCu8`2TLL-0`%jcSSx
zB;~8ru=y*=pvdx0BuAF9*85MEJ=F4tT8d^}68{RqrG7<wrAH-VgZSQyeNYSWM)fg%
YsWv}3H8a~*oVYo4D?hfn6K|LQ0Dv33S^xk5

diff --git a/fdts/fvp-foundation-gicv2legacy-psci.dts b/fdts/fvp-foundation-gicv2legacy-psci.dts
index 2a694f4f2..a923c3489 100644
--- a/fdts/fvp-foundation-gicv2legacy-psci.dts
+++ b/fdts/fvp-foundation-gicv2legacy-psci.dts
@@ -65,29 +65,73 @@
 		#address-cells = <2>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&CPU0>;
+				};
+				core1 {
+					cpu = <&CPU1>;
+				};
+				core2 {
+					cpu = <&CPU2>;
+				};
+				core3 {
+					cpu = <&CPU3>;
+				};
+			};
+		};
+
+		idle-states {
+			entry-method = "arm,psci";
+
+			CPU_SLEEP_0: cpu-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x0010000>;
+				entry-latency-us = <40>;
+				exit-latency-us = <100>;
+				min-residency-us = <150>;
+			};
+
+			CLUSTER_SLEEP_0: cluster-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x1010000>;
+				entry-latency-us = <500>;
+				exit-latency-us = <1000>;
+				min-residency-us = <2500>;
+			};
+		};
+
+		CPU0:cpu@0 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@1 {
+
+		CPU1:cpu@1 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x1>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@2 {
+
+		CPU2:cpu@2 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x2>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@3 {
+
+		CPU3:cpu@3 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x3>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
 	};
 
diff --git a/fdts/fvp-foundation-gicv3-psci.dtb b/fdts/fvp-foundation-gicv3-psci.dtb
index 26800ba03a5a68bdedc448d677d688a798da9c78..724847c3c9a2e0db86ba826683e59ce456d9d9f5 100644
GIT binary patch
delta 2290
zcmb7FO>7%Q6rR~Qw$rBdPm(4LL{7sYrt+4=hK4p$Q-NrJRBC#GC~&cy4K}qM%ReYV
z5eabNfYhoZRlR{kFGw6fMG?myI22Ajw1=u3klIR>02zrMI3UFLt!JEF8>%qU?7ZLa
zy?JkD=i!SN=aRP${Qa8{iHkyrSA`ghVohSkFiB%rTS7d2^PA+nwPlyG6^dl8*r?T=
z>J%9anOmzmn&|-_z=W5u^mO&pU@*LT(zJ2)X=?p?;<WV{7t(Lgs}0(L3M)m&uGO=3
zr)I$VKzy97mQs~ku0SD%%vBn8t>`!v+fAE^L@<N2+r^-1JK;+rBYlD|z_C_lN8f^8
z@$lb+zM>w)l3Ti5|2v}W3Me0Y0w7?|BM*;&eGF<6x&u0dX&b>kEoheuWjNi@xBF__
znw)OJ(hPdD(0_OeNLd(lWP(A=ka`eJ4ic`T&3-tV?+xy44cBoh{BYdI-r#OWTG?gb
zp`8L){cwcZ8{ALvN%c$5_|W~5Q(CKT5YqJ=$J$imfp;w#Q=bNojminF!6Kj4^rCBZ
zJFslYQ);Sr^`LxBYoe~^TJP)B{N8)gl1nNToF8-Bar8rIIee!A7MFs@EIFZW1QW5m
zR&yKuumnnQST<ESbcT?Np$}+zEA-J($t!O9LDL3!Gv+`5B1ris*EhqHL3u@8JGdP8
zdBF%^(a0PEEJhA7Kt3{i{!5L*98hGrB+JJsB7Xq<&U@+7$z1V5`uS4+eJU`tt>BT}
z=izx`_o>H`nIm1OBJ$E{ZHcQZchuQvBG#uRY%YEK)Mj+1J0l^sp>(67<gJXV&MK11
zq%X9R@@9mS-p-JyVHJp>#S^L$JNHVn)epALHNql)&@{Jy7qmI3Op9AYU44N4DiEKy
zo335!zsvBf{zI$`&yAVF3`72_T8}>yV^K^Gr$Fwgui|sD{g9gUneKk|SN!D@O&4Pq
zow=QYmRFnByv~fqC?*ol2qO)=32(}}y?Obc>>VDYH*@Ot=HKbb-dA03)~nmwwB^4u
zPYy9Q|Lon~6nbM5&A;#OhTcMVc~82%O-BcH)!hBTkSjZ4kjC5!E**LYNO8!!k(dLg
z7m4Vmi=9YGl^ULXp($_*{soOEjA-nx=_YxcA9QkiU{HNMJUi4B1CVv(a(QH7`p?W8
z?k`e9SRs*K{v4KuPk4BUtr@jBawcdkfbLf}M`q;e<--edRh@OeR}asF{@JBdqo3vQ
zJ_x5=uWr~Sr=DM1@iBHKTg{fVsE8N5oZGM)HQ}rm>b8e370PzisTEd?L9tM7tfwmZ
cY#EQg`f)T7;p@Kpir3Vm(G%C7d+NCS2Q(Kh9{>OV

delta 1550
zcmah}O-NKx6u$2{z8N)he$)B!ry?9gZPH3jVTL3X4RjF|Ce%1S9m5$1e<C5$T14;y
zp%dgrGHB6C2y4-<g%F4fgLW;;oq<T}=sR!T)6qBKg?sP0=X~F}=jXn+7~O6SZ<YT2
zEksBaLi7j`xQ;!H>B4kkV#t2zZ6CtjvMUzJstT~#Fy|?v)K+R)rM|MI5OXmzofu~g
z?bw3SVVnfD6}M1m;Mz=oay}e%td|m**;q3KjQr8C)_Ti(rPeo}Qd5&tbNk#HNE-c8
z?#p7C2JDRiv1)J`^2v|~uxqqrAC$!g{jrap6h93M*GZ$Kqn9lo9am(rN4t*hY+dS}
zz{-QOK8SUXZWJ~4>K93)Q}L7<Yl^ovM=)|>lAfwTJAr*ex1t}|xdEJD_WI4DF23Gd
z{8$#N^s4x2omhs^tTo6|8P4X2LI7D|{h75`Nv$G9DCrt>A7U|jmA<>8e(s6P(HzNR
zgX-Pwr#snz!QpUNds6zcc`gNIfS$XnsX+157x#H9T9jRl0nTj12(;5vO_POw>ha`5
ziv<A9)PY_C`iIR=Tb^Og{i3)3oR$rfOQQp^NeM$nfYLN%nN|wIwB?O9X!?`NzIP6S
zi!#rM1BULU9QtR};XCW<gvBf^I))%Jz9_v`D(I`P0}r?e_5*)h67C#-80_C+_-8#&
z*5QL=-=}VYU5vAptr*Dvvp02iNnW=7SoTmk-_5VgdN=MoCh{Gftv|8-s+)PU%iO%V
zu7~q}RB`8;rvG%Tcbi@C8dc*e^5C6&V0x<5D;V;R!IPT-mN+;Dp1GdbyV;kcp2D>2
zZ@;7o^gWL^6OCPeE#?`$M<?$E`hA-4SedjQ=)3T;`KJE!;%J!vRx}N+KsL{xbIwpp
z-zXOBQlxFj3cU!nNP^abeOR3#UWY>6Sl{XLZs<+ri27hWq28UD%cx>X9TRFgK0Ki|
gq|}+@<OtPNwUthcr)MA5XOi*s$b`CfyQ)R{2Vd&F8UO$Q

diff --git a/fdts/fvp-foundation-gicv3-psci.dts b/fdts/fvp-foundation-gicv3-psci.dts
index 1a841f3cd..49290e4e1 100644
--- a/fdts/fvp-foundation-gicv3-psci.dts
+++ b/fdts/fvp-foundation-gicv3-psci.dts
@@ -63,29 +63,73 @@
 		#address-cells = <2>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&CPU0>;
+				};
+				core1 {
+					cpu = <&CPU1>;
+				};
+				core2 {
+					cpu = <&CPU2>;
+				};
+				core3 {
+					cpu = <&CPU3>;
+				};
+			};
+		};
+
+		idle-states {
+			entry-method = "arm,psci";
+
+			CPU_SLEEP_0: cpu-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x0010000>;
+				entry-latency-us = <40>;
+				exit-latency-us = <100>;
+				min-residency-us = <150>;
+			};
+
+			CLUSTER_SLEEP_0: cluster-sleep-0 {
+				compatible = "arm,idle-state";
+				entry-method-param = <0x1010000>;
+				entry-latency-us = <500>;
+				exit-latency-us = <1000>;
+				min-residency-us = <2500>;
+			};
+		};
+
+		CPU0:cpu@0 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x0>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@1 {
+
+		CPU1:cpu@1 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x1>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@2 {
+
+		CPU2:cpu@2 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x2>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
-		cpu@3 {
+
+		CPU3:cpu@3 {
 			device_type = "cpu";
 			compatible = "arm,armv8";
 			reg = <0x0 0x3>;
 			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
 		};
 	};
 
-- 
GitLab