xref: /linux/arch/arm64/boot/dts/arm/morello.dtsi (revision 7b26feb436d2ef5db1e8ba82c7ecb4c1cc869502)
1// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
2/*
3 * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
4 */
5
6#include <dt-bindings/interrupt-controller/arm-gic.h>
7
8/ {
9	interrupt-parent = <&gic>;
10
11	#address-cells = <2>;
12	#size-cells = <2>;
13
14	soc_refclk50mhz: clock-50000000 {
15		compatible = "fixed-clock";
16		#clock-cells = <0>;
17		clock-frequency = <50000000>;
18		clock-output-names = "apb_pclk";
19	};
20
21	soc_refclk85mhz: clock-85000000 {
22		compatible = "fixed-clock";
23		#clock-cells = <0>;
24		clock-frequency = <85000000>;
25		clock-output-names = "iofpga:aclk";
26	};
27
28	cpus {
29		#address-cells = <2>;
30		#size-cells = <0>;
31
32		cpu0: cpu@0 {
33			compatible = "arm,rainier";
34			reg = <0x0 0x0>;
35			device_type = "cpu";
36			enable-method = "psci";
37			/* 4 ways set associative */
38			i-cache-size = <0x10000>;
39			i-cache-line-size = <64>;
40			i-cache-sets = <512>;
41			d-cache-size = <0x10000>;
42			d-cache-line-size = <64>;
43			d-cache-sets = <512>;
44			next-level-cache = <&l2_0>;
45			clocks = <&scmi_dvfs 0>;
46
47			l2_0: l2-cache {
48				compatible = "cache";
49				cache-level = <2>;
50				/* 8 ways set associative */
51				cache-size = <0x100000>;
52				cache-line-size = <64>;
53				cache-sets = <2048>;
54				cache-unified;
55				next-level-cache = <&l3_0>;
56			};
57		};
58
59		cpu1: cpu@100 {
60			compatible = "arm,rainier";
61			reg = <0x0 0x100>;
62			device_type = "cpu";
63			enable-method = "psci";
64			/* 4 ways set associative */
65			i-cache-size = <0x10000>;
66			i-cache-line-size = <64>;
67			i-cache-sets = <512>;
68			d-cache-size = <0x10000>;
69			d-cache-line-size = <64>;
70			d-cache-sets = <512>;
71			next-level-cache = <&l2_1>;
72			clocks = <&scmi_dvfs 0>;
73
74			l2_1: l2-cache {
75				compatible = "cache";
76				cache-level = <2>;
77				/* 8 ways set associative */
78				cache-size = <0x100000>;
79				cache-line-size = <64>;
80				cache-sets = <2048>;
81				cache-unified;
82				next-level-cache = <&l3_0>;
83			};
84		};
85
86		cpu2: cpu@10000 {
87			compatible = "arm,rainier";
88			reg = <0x0 0x10000>;
89			device_type = "cpu";
90			enable-method = "psci";
91			/* 4 ways set associative */
92			i-cache-size = <0x10000>;
93			i-cache-line-size = <64>;
94			i-cache-sets = <512>;
95			d-cache-size = <0x10000>;
96			d-cache-line-size = <64>;
97			d-cache-sets = <512>;
98			next-level-cache = <&l2_2>;
99			clocks = <&scmi_dvfs 1>;
100
101			l2_2: l2-cache {
102				compatible = "cache";
103				cache-level = <2>;
104				/* 8 ways set associative */
105				cache-size = <0x100000>;
106				cache-line-size = <64>;
107				cache-sets = <2048>;
108				cache-unified;
109				next-level-cache = <&l3_0>;
110			};
111		};
112
113		cpu3: cpu@10100 {
114			compatible = "arm,rainier";
115			reg = <0x0 0x10100>;
116			device_type = "cpu";
117			enable-method = "psci";
118			/* 4 ways set associative */
119			i-cache-size = <0x10000>;
120			i-cache-line-size = <64>;
121			i-cache-sets = <512>;
122			d-cache-size = <0x10000>;
123			d-cache-line-size = <64>;
124			d-cache-sets = <512>;
125			next-level-cache = <&l2_3>;
126			clocks = <&scmi_dvfs 1>;
127
128			l2_3: l2-cache {
129				compatible = "cache";
130				cache-level = <2>;
131				/* 8 ways set associative */
132				cache-size = <0x100000>;
133				cache-line-size = <64>;
134				cache-sets = <2048>;
135				cache-unified;
136				next-level-cache = <&l3_0>;
137			};
138		};
139
140		l3_0: l3-cache {
141			compatible = "cache";
142			cache-level = <3>;
143			cache-size = <0x100000>;
144			cache-unified;
145		};
146	};
147
148	firmware {
149		interrupt-parent = <&gic>;
150
151		scmi {
152			compatible = "arm,scmi";
153			mbox-names = "tx", "rx";
154			mboxes = <&mailbox 1 0>, <&mailbox 1 1>;
155			shmem = <&cpu_scp_hpri0>, <&cpu_scp_hpri1>;
156			#address-cells = <1>;
157			#size-cells = <0>;
158
159			scmi_dvfs: protocol@13 {
160				reg = <0x13>;
161				#clock-cells = <1>;
162			};
163
164			scmi_clk: protocol@14 {
165				reg = <0x14>;
166				#clock-cells = <1>;
167			};
168		};
169	};
170
171	/* The first bank of memory, memory map is actually provided by UEFI. */
172	memory@80000000 {
173		device_type = "memory";
174		/* [0x80000000-0xffffffff] */
175		reg = <0x00000000 0x80000000 0x0 0x7f000000>;
176	};
177
178	memory@8080000000 {
179		device_type = "memory";
180		/* [0x8080000000-0x83f7ffffff] */
181		reg = <0x00000080 0x80000000 0x3 0x78000000>;
182	};
183
184	pmu {
185		compatible = "arm,rainier-pmu";
186		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
187	};
188
189	psci {
190		compatible = "arm,psci-0.2";
191		method = "smc";
192	};
193
194	reserved-memory {
195		#address-cells = <2>;
196		#size-cells = <2>;
197		ranges;
198
199		secure-firmware@ff000000 {
200			reg = <0x0 0xff000000 0x0 0x01000000>;
201			no-map;
202		};
203	};
204
205	spe-pmu {
206		compatible = "arm,statistical-profiling-extension-v1";
207		interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
208	};
209
210	soc: soc {
211		compatible = "simple-bus";
212		#address-cells = <2>;
213		#size-cells = <2>;
214		interrupt-parent = <&gic>;
215		ranges;
216
217		uart0: serial@2a400000 {
218			compatible = "arm,pl011", "arm,primecell";
219			reg = <0x0 0x2a400000 0x0 0x1000>;
220			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
221			clocks = <&soc_refclk50mhz>, <&soc_refclk50mhz>;
222			clock-names = "uartclk", "apb_pclk";
223
224			status = "disabled";
225		};
226
227		gic: interrupt-controller@30000000 {
228			compatible = "arm,gic-v3";
229			reg = <0x0 0x30000000 0x0 0x10000>,	/* GICD */
230			      <0x0 0x300c0000 0x0 0x80000>;	/* GICR */
231
232			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
233
234			#interrupt-cells = <3>;
235			interrupt-controller;
236
237			#address-cells = <2>;
238			#size-cells = <2>;
239			ranges;
240
241			its1: msi-controller@30040000 {
242				compatible = "arm,gic-v3-its";
243				reg = <0x0 0x30040000 0x0 0x20000>;
244
245				msi-controller;
246				#msi-cells = <1>;
247			};
248
249			its2: msi-controller@30060000 {
250				compatible = "arm,gic-v3-its";
251				reg = <0x0 0x30060000 0x0 0x20000>;
252
253				msi-controller;
254				#msi-cells = <1>;
255			};
256
257			its_ccix: msi-controller@30080000 {
258				compatible = "arm,gic-v3-its";
259				reg = <0x0 0x30080000 0x0 0x20000>;
260
261				msi-controller;
262				#msi-cells = <1>;
263			};
264
265			its_pcie: msi-controller@300a0000 {
266				compatible = "arm,gic-v3-its";
267				reg = <0x0 0x300a0000 0x0 0x20000>;
268
269				msi-controller;
270				#msi-cells = <1>;
271			};
272		};
273
274		smmu_dp: iommu@2ce00000 {
275			compatible = "arm,smmu-v3";
276			reg = <0x0 0x2ce00000 0x0 0x40000>;
277
278			interrupts = <GIC_SPI 76 IRQ_TYPE_EDGE_RISING>,
279				     <GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
280				     <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>;
281			interrupt-names = "eventq", "gerror", "cmdq-sync";
282			#iommu-cells = <1>;
283		};
284
285		mailbox: mhu@45000000 {
286			compatible = "arm,mhu-doorbell", "arm,primecell";
287			reg = <0x0 0x45000000 0x0 0x1000>;
288
289			interrupts = <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>,
290				     <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>;
291			#mbox-cells = <2>;
292			clocks = <&soc_refclk50mhz>;
293			clock-names = "apb_pclk";
294		};
295
296		sram: sram@6000000 {
297			compatible = "mmio-sram";
298			reg = <0x0 0x06000000 0x0 0x8000>;
299			ranges = <0 0x0 0x06000000 0x8000>;
300
301			#address-cells = <1>;
302			#size-cells = <1>;
303
304			cpu_scp_hpri0: scp-sram@0 {
305				compatible = "arm,scmi-shmem";
306				reg = <0x0 0x80>;
307			};
308
309			cpu_scp_hpri1: scp-sram@80 {
310				compatible = "arm,scmi-shmem";
311				reg = <0x80 0x80>;
312			};
313		};
314	};
315
316	timer {
317		compatible = "arm,armv8-timer";
318		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
319			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
320			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
321			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
322	};
323};
324