xref: /arm-trusted-firmware/fdts/fvp-defs-dynamiq.dtsi (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu/*
2*91f16700Schasinglulu * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu *
4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu */
6*91f16700Schasinglulu
7*91f16700Schasinglulu#ifndef	FVP_DEFS_DYNAMIQ_DTSI
8*91f16700Schasinglulu#define	FVP_DEFS_DYNAMIQ_DTSI
9*91f16700Schasinglulu
10*91f16700Schasinglulu/* Set default topology values if not passed from platform's makefile */
11*91f16700Schasinglulu#ifdef	FVP_CLUSTER_COUNT
12*91f16700Schasinglulu#define	CLUSTER_COUNT		FVP_CLUSTER_COUNT
13*91f16700Schasinglulu#else
14*91f16700Schasinglulu#define	CLUSTER_COUNT		1
15*91f16700Schasinglulu#endif
16*91f16700Schasinglulu
17*91f16700Schasinglulu#ifdef FVP_MAX_CPUS_PER_CLUSTER
18*91f16700Schasinglulu#define	CPUS_PER_CLUSTER	FVP_MAX_CPUS_PER_CLUSTER
19*91f16700Schasinglulu#else
20*91f16700Schasinglulu#define	CPUS_PER_CLUSTER	8
21*91f16700Schasinglulu#endif
22*91f16700Schasinglulu
23*91f16700Schasinglulu#define CONCAT(x, y)	x##y
24*91f16700Schasinglulu#define CONC(x, y)	CONCAT(x, y)
25*91f16700Schasinglulu
26*91f16700Schasinglulu/*
27*91f16700Schasinglulu * n - CPU number
28*91f16700Schasinglulu * r - MPID
29*91f16700Schasinglulu */
30*91f16700Schasinglulu#define	CPU(n, r)			\
31*91f16700Schasinglulu	CPU##n:cpu@r## {		\
32*91f16700Schasinglulu	device_type = "cpu";		\
33*91f16700Schasinglulu	compatible = "arm,armv8";	\
34*91f16700Schasinglulu	reg = <0x0 0x##r>;		\
35*91f16700Schasinglulu	enable-method = "psci";		\
36*91f16700Schasinglulu	cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;	\
37*91f16700Schasinglulu	next-level-cache = <&L2_0>;	\
38*91f16700Schasinglulu	};
39*91f16700Schasinglulu
40*91f16700Schasinglulu#if (PE_PER_CPU == 2)
41*91f16700Schasinglulu#define THREAD(n)		\
42*91f16700Schasinglulu	thread##n {		\
43*91f16700Schasinglulu		cpu = <&CONC(CPU, __COUNTER__)>;	\
44*91f16700Schasinglulu	};
45*91f16700Schasinglulu
46*91f16700Schasinglulu#define	CORE(n)			\
47*91f16700Schasinglulu	core##n {		\
48*91f16700Schasinglulu		THREAD(0)	\
49*91f16700Schasinglulu		THREAD(1)	\
50*91f16700Schasinglulu	};
51*91f16700Schasinglulu
52*91f16700Schasinglulu#else	/* PE_PER_CPU == 1 */
53*91f16700Schasinglulu#define	CORE(n)			\
54*91f16700Schasinglulu	core##n {		\
55*91f16700Schasinglulu		cpu = <&CPU##n>;\
56*91f16700Schasinglulu	};
57*91f16700Schasinglulu#endif	/* PE_PER_CORE */
58*91f16700Schasinglulu
59*91f16700Schasinglulu#if (CPUS_PER_CLUSTER == 1)
60*91f16700Schasinglulu#if (PE_PER_CPU == 1)
61*91f16700Schasinglulu#define	CPUS		\
62*91f16700Schasinglulu	CPU(0, 0)
63*91f16700Schasinglulu#else
64*91f16700Schasinglulu#define	CPUS		\
65*91f16700Schasinglulu	CPU(0, 0)	\
66*91f16700Schasinglulu	CPU(1, 1)
67*91f16700Schasinglulu#endif
68*91f16700Schasinglulu#define	CLUSTER(n)	\
69*91f16700Schasinglulu	cluster##n {	\
70*91f16700Schasinglulu		CORE(0)	\
71*91f16700Schasinglulu	};
72*91f16700Schasinglulu
73*91f16700Schasinglulu#elif (CPUS_PER_CLUSTER == 2)
74*91f16700Schasinglulu#if (PE_PER_CPU == 1)
75*91f16700Schasinglulu#define	CPUS		\
76*91f16700Schasinglulu	CPU(0, 0)	\
77*91f16700Schasinglulu	CPU(1, 100)
78*91f16700Schasinglulu#else
79*91f16700Schasinglulu#define	CPUS		\
80*91f16700Schasinglulu	CPU(0, 0)	\
81*91f16700Schasinglulu	CPU(1, 1)	\
82*91f16700Schasinglulu	CPU(2, 100)	\
83*91f16700Schasinglulu	CPU(3, 101)
84*91f16700Schasinglulu#endif
85*91f16700Schasinglulu#define	CLUSTER(n)	\
86*91f16700Schasinglulu	cluster##n {	\
87*91f16700Schasinglulu		CORE(0)	\
88*91f16700Schasinglulu		CORE(1)	\
89*91f16700Schasinglulu	};
90*91f16700Schasinglulu
91*91f16700Schasinglulu#elif (CPUS_PER_CLUSTER == 3)
92*91f16700Schasinglulu#if (PE_PER_CPU == 1)
93*91f16700Schasinglulu#define	CPUS		\
94*91f16700Schasinglulu	CPU(0, 0)	\
95*91f16700Schasinglulu	CPU(1, 100)	\
96*91f16700Schasinglulu	CPU(2, 200)
97*91f16700Schasinglulu#else
98*91f16700Schasinglulu#define	CPUS		\
99*91f16700Schasinglulu	CPU(0, 0)	\
100*91f16700Schasinglulu	CPU(1, 1)	\
101*91f16700Schasinglulu	CPU(2, 100)	\
102*91f16700Schasinglulu	CPU(3, 101)	\
103*91f16700Schasinglulu	CPU(4, 200)	\
104*91f16700Schasinglulu	CPU(5, 201)
105*91f16700Schasinglulu#endif
106*91f16700Schasinglulu#define	CLUSTER(n)	\
107*91f16700Schasinglulu	cluster##n {	\
108*91f16700Schasinglulu		CORE(0)	\
109*91f16700Schasinglulu		CORE(1)	\
110*91f16700Schasinglulu		CORE(2)	\
111*91f16700Schasinglulu	};
112*91f16700Schasinglulu
113*91f16700Schasinglulu#elif (CPUS_PER_CLUSTER == 4)
114*91f16700Schasinglulu#if (PE_PER_CPU == 1)
115*91f16700Schasinglulu#define	CPUS		\
116*91f16700Schasinglulu	CPU(0, 0)	\
117*91f16700Schasinglulu	CPU(1, 100)	\
118*91f16700Schasinglulu	CPU(2, 200)	\
119*91f16700Schasinglulu	CPU(3, 300)
120*91f16700Schasinglulu#else
121*91f16700Schasinglulu#define	CPUS		\
122*91f16700Schasinglulu	CPU(0, 0)	\
123*91f16700Schasinglulu	CPU(1, 1)	\
124*91f16700Schasinglulu	CPU(2, 100)	\
125*91f16700Schasinglulu	CPU(3, 101)	\
126*91f16700Schasinglulu	CPU(4, 200)	\
127*91f16700Schasinglulu	CPU(5, 201)	\
128*91f16700Schasinglulu	CPU(6, 300)	\
129*91f16700Schasinglulu	CPU(7, 301)
130*91f16700Schasinglulu#endif
131*91f16700Schasinglulu#define	CLUSTER(n)	\
132*91f16700Schasinglulu	cluster##n {	\
133*91f16700Schasinglulu		CORE(0)	\
134*91f16700Schasinglulu		CORE(1)	\
135*91f16700Schasinglulu		CORE(2)	\
136*91f16700Schasinglulu		CORE(3)	\
137*91f16700Schasinglulu	};
138*91f16700Schasinglulu
139*91f16700Schasinglulu#elif (CPUS_PER_CLUSTER == 5)
140*91f16700Schasinglulu#if (PE_PER_CPU == 1)
141*91f16700Schasinglulu#define	CPUS		\
142*91f16700Schasinglulu	CPU(0, 0)	\
143*91f16700Schasinglulu	CPU(1, 100)	\
144*91f16700Schasinglulu	CPU(2, 200)	\
145*91f16700Schasinglulu	CPU(3, 300)	\
146*91f16700Schasinglulu	CPU(4, 400)
147*91f16700Schasinglulu#else
148*91f16700Schasinglulu#define	CPUS		\
149*91f16700Schasinglulu	CPU(0, 0)	\
150*91f16700Schasinglulu	CPU(1, 1)	\
151*91f16700Schasinglulu	CPU(2, 100)	\
152*91f16700Schasinglulu	CPU(3, 101)	\
153*91f16700Schasinglulu	CPU(4, 200)	\
154*91f16700Schasinglulu	CPU(5, 201)	\
155*91f16700Schasinglulu	CPU(6, 300)	\
156*91f16700Schasinglulu	CPU(7, 301)	\
157*91f16700Schasinglulu	CPU(8, 400)	\
158*91f16700Schasinglulu	CPU(9, 401)
159*91f16700Schasinglulu#endif
160*91f16700Schasinglulu#define	CLUSTER(n)	\
161*91f16700Schasinglulu	cluster##n {	\
162*91f16700Schasinglulu		CORE(0)	\
163*91f16700Schasinglulu		CORE(1)	\
164*91f16700Schasinglulu		CORE(2)	\
165*91f16700Schasinglulu		CORE(3)	\
166*91f16700Schasinglulu		CORE(4)	\
167*91f16700Schasinglulu	};
168*91f16700Schasinglulu
169*91f16700Schasinglulu#elif (CPUS_PER_CLUSTER == 6)
170*91f16700Schasinglulu#if (PE_PER_CPU == 1)
171*91f16700Schasinglulu#define	CPUS		\
172*91f16700Schasinglulu	CPU(0, 0)	\
173*91f16700Schasinglulu	CPU(1, 100)	\
174*91f16700Schasinglulu	CPU(2, 200)	\
175*91f16700Schasinglulu	CPU(3, 300)	\
176*91f16700Schasinglulu	CPU(4, 400)	\
177*91f16700Schasinglulu	CPU(5, 500)
178*91f16700Schasinglulu#else
179*91f16700Schasinglulu#define	CPUS		\
180*91f16700Schasinglulu	CPU(0, 0)	\
181*91f16700Schasinglulu	CPU(1, 1)	\
182*91f16700Schasinglulu	CPU(2, 100)	\
183*91f16700Schasinglulu	CPU(3, 101)	\
184*91f16700Schasinglulu	CPU(4, 200)	\
185*91f16700Schasinglulu	CPU(5, 201)	\
186*91f16700Schasinglulu	CPU(6, 300)	\
187*91f16700Schasinglulu	CPU(7, 301)	\
188*91f16700Schasinglulu	CPU(8, 400)	\
189*91f16700Schasinglulu	CPU(9, 401)	\
190*91f16700Schasinglulu	CPU(10, 500)	\
191*91f16700Schasinglulu	CPU(11, 501)
192*91f16700Schasinglulu#endif
193*91f16700Schasinglulu#define	CLUSTER(n)	\
194*91f16700Schasinglulu	cluster##n {	\
195*91f16700Schasinglulu		CORE(0)	\
196*91f16700Schasinglulu		CORE(1)	\
197*91f16700Schasinglulu		CORE(2)	\
198*91f16700Schasinglulu		CORE(3)	\
199*91f16700Schasinglulu		CORE(4)	\
200*91f16700Schasinglulu		CORE(5)	\
201*91f16700Schasinglulu	};
202*91f16700Schasinglulu
203*91f16700Schasinglulu#elif (CPUS_PER_CLUSTER == 7)
204*91f16700Schasinglulu#if (PE_PER_CPU == 1)
205*91f16700Schasinglulu#define	CPUS		\
206*91f16700Schasinglulu	CPU(0, 0)	\
207*91f16700Schasinglulu	CPU(1, 100)	\
208*91f16700Schasinglulu	CPU(2, 200)	\
209*91f16700Schasinglulu	CPU(3, 300)	\
210*91f16700Schasinglulu	CPU(4, 400)	\
211*91f16700Schasinglulu	CPU(5, 500)	\
212*91f16700Schasinglulu	CPU(6, 600)
213*91f16700Schasinglulu#else
214*91f16700Schasinglulu#define	CPUS		\
215*91f16700Schasinglulu	CPU(0, 0)	\
216*91f16700Schasinglulu	CPU(1, 1)	\
217*91f16700Schasinglulu	CPU(2, 100)	\
218*91f16700Schasinglulu	CPU(3, 101)	\
219*91f16700Schasinglulu	CPU(4, 200)	\
220*91f16700Schasinglulu	CPU(5, 201)	\
221*91f16700Schasinglulu	CPU(6, 300)	\
222*91f16700Schasinglulu	CPU(7, 301)	\
223*91f16700Schasinglulu	CPU(8, 400)	\
224*91f16700Schasinglulu	CPU(9, 401)	\
225*91f16700Schasinglulu	CPU(10, 500)	\
226*91f16700Schasinglulu	CPU(11, 501)	\
227*91f16700Schasinglulu	CPU(12, 600)	\
228*91f16700Schasinglulu	CPU(13, 601)
229*91f16700Schasinglulu#endif
230*91f16700Schasinglulu#define	CLUSTER(n)	\
231*91f16700Schasinglulu	cluster##n {	\
232*91f16700Schasinglulu		CORE(0)	\
233*91f16700Schasinglulu		CORE(1)	\
234*91f16700Schasinglulu		CORE(2)	\
235*91f16700Schasinglulu		CORE(3)	\
236*91f16700Schasinglulu		CORE(4)	\
237*91f16700Schasinglulu		CORE(5)	\
238*91f16700Schasinglulu		CORE(6)	\
239*91f16700Schasinglulu	};
240*91f16700Schasinglulu
241*91f16700Schasinglulu#else
242*91f16700Schasinglulu#if (PE_PER_CPU == 1)
243*91f16700Schasinglulu#define	CPUS		\
244*91f16700Schasinglulu	CPU(0, 0)	\
245*91f16700Schasinglulu	CPU(1, 100)	\
246*91f16700Schasinglulu	CPU(2, 200)	\
247*91f16700Schasinglulu	CPU(3, 300)	\
248*91f16700Schasinglulu	CPU(4, 400)	\
249*91f16700Schasinglulu	CPU(5, 500)	\
250*91f16700Schasinglulu	CPU(6, 600)	\
251*91f16700Schasinglulu	CPU(7, 700)
252*91f16700Schasinglulu#else
253*91f16700Schasinglulu#define	CPUS		\
254*91f16700Schasinglulu	CPU(0, 0)	\
255*91f16700Schasinglulu	CPU(1, 1)	\
256*91f16700Schasinglulu	CPU(2, 100)	\
257*91f16700Schasinglulu	CPU(3, 101)	\
258*91f16700Schasinglulu	CPU(4, 200)	\
259*91f16700Schasinglulu	CPU(5, 201)	\
260*91f16700Schasinglulu	CPU(6, 300)	\
261*91f16700Schasinglulu	CPU(7, 301)	\
262*91f16700Schasinglulu	CPU(8, 400)	\
263*91f16700Schasinglulu	CPU(9, 401)	\
264*91f16700Schasinglulu	CPU(10, 500)	\
265*91f16700Schasinglulu	CPU(11, 501)	\
266*91f16700Schasinglulu	CPU(12, 600)	\
267*91f16700Schasinglulu	CPU(13, 601)	\
268*91f16700Schasinglulu	CPU(14, 700)	\
269*91f16700Schasinglulu	CPU(15, 701)
270*91f16700Schasinglulu#endif
271*91f16700Schasinglulu#define	CLUSTER(n)	\
272*91f16700Schasinglulu	cluster##n {	\
273*91f16700Schasinglulu		CORE(0)	\
274*91f16700Schasinglulu		CORE(1)	\
275*91f16700Schasinglulu		CORE(2)	\
276*91f16700Schasinglulu		CORE(3)	\
277*91f16700Schasinglulu		CORE(4)	\
278*91f16700Schasinglulu		CORE(5)	\
279*91f16700Schasinglulu		CORE(6)	\
280*91f16700Schasinglulu		CORE(7)	\
281*91f16700Schasinglulu	};
282*91f16700Schasinglulu#endif	/* CPUS_PER_CLUSTER */
283*91f16700Schasinglulu
284*91f16700Schasinglulu#define	CPU_MAP			\
285*91f16700Schasinglulu	cpu-map {		\
286*91f16700Schasinglulu		CLUSTER(0)	\
287*91f16700Schasinglulu	};
288*91f16700Schasinglulu
289*91f16700Schasinglulu#endif	/* FVP_DEFS_DYNAMIQ_DTSI */
290