xref: /linux/scripts/dtc/include-prefixes/arm64/apple/t6022.dtsi (revision 0f048c878ee32a4259dbf28e0ad8fd0b71ee0085)
1*a8f20eb6SHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*a8f20eb6SHector Martin/*
3*a8f20eb6SHector Martin * Apple T6022 "M2 Ultra" SoC
4*a8f20eb6SHector Martin *
5*a8f20eb6SHector Martin * Other names: H14J, "Rhodes 2C"
6*a8f20eb6SHector Martin *
7*a8f20eb6SHector Martin * Copyright The Asahi Linux Contributors
8*a8f20eb6SHector Martin */
9*a8f20eb6SHector Martin
10*a8f20eb6SHector Martin#include <dt-bindings/gpio/gpio.h>
11*a8f20eb6SHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h>
12*a8f20eb6SHector Martin#include <dt-bindings/interrupt-controller/irq.h>
13*a8f20eb6SHector Martin#include <dt-bindings/pinctrl/apple.h>
14*a8f20eb6SHector Martin#include <dt-bindings/phy/phy.h>
15*a8f20eb6SHector Martin#include <dt-bindings/spmi/spmi.h>
16*a8f20eb6SHector Martin
17*a8f20eb6SHector Martin#include "multi-die-cpp.h"
18*a8f20eb6SHector Martin
19*a8f20eb6SHector Martin#include "t602x-common.dtsi"
20*a8f20eb6SHector Martin
21*a8f20eb6SHector Martin/ {
22*a8f20eb6SHector Martin	compatible = "apple,t6022", "apple,arm-platform";
23*a8f20eb6SHector Martin
24*a8f20eb6SHector Martin	#address-cells = <2>;
25*a8f20eb6SHector Martin	#size-cells = <2>;
26*a8f20eb6SHector Martin
27*a8f20eb6SHector Martin	cpus {
28*a8f20eb6SHector Martin		cpu-map {
29*a8f20eb6SHector Martin			cluster3 {
30*a8f20eb6SHector Martin				core0 {
31*a8f20eb6SHector Martin					cpu = <&cpu_e10>;
32*a8f20eb6SHector Martin				};
33*a8f20eb6SHector Martin				core1 {
34*a8f20eb6SHector Martin					cpu = <&cpu_e11>;
35*a8f20eb6SHector Martin				};
36*a8f20eb6SHector Martin				core2 {
37*a8f20eb6SHector Martin					cpu = <&cpu_e12>;
38*a8f20eb6SHector Martin				};
39*a8f20eb6SHector Martin				core3 {
40*a8f20eb6SHector Martin					cpu = <&cpu_e13>;
41*a8f20eb6SHector Martin				};
42*a8f20eb6SHector Martin			};
43*a8f20eb6SHector Martin
44*a8f20eb6SHector Martin			cluster4 {
45*a8f20eb6SHector Martin				core0 {
46*a8f20eb6SHector Martin					cpu = <&cpu_p20>;
47*a8f20eb6SHector Martin				};
48*a8f20eb6SHector Martin				core1 {
49*a8f20eb6SHector Martin					cpu = <&cpu_p21>;
50*a8f20eb6SHector Martin				};
51*a8f20eb6SHector Martin				core2 {
52*a8f20eb6SHector Martin					cpu = <&cpu_p22>;
53*a8f20eb6SHector Martin				};
54*a8f20eb6SHector Martin				core3 {
55*a8f20eb6SHector Martin					cpu = <&cpu_p23>;
56*a8f20eb6SHector Martin				};
57*a8f20eb6SHector Martin			};
58*a8f20eb6SHector Martin
59*a8f20eb6SHector Martin			cluster5 {
60*a8f20eb6SHector Martin				core0 {
61*a8f20eb6SHector Martin					cpu = <&cpu_p30>;
62*a8f20eb6SHector Martin				};
63*a8f20eb6SHector Martin				core1 {
64*a8f20eb6SHector Martin					cpu = <&cpu_p31>;
65*a8f20eb6SHector Martin				};
66*a8f20eb6SHector Martin				core2 {
67*a8f20eb6SHector Martin					cpu = <&cpu_p32>;
68*a8f20eb6SHector Martin				};
69*a8f20eb6SHector Martin				core3 {
70*a8f20eb6SHector Martin					cpu = <&cpu_p33>;
71*a8f20eb6SHector Martin				};
72*a8f20eb6SHector Martin			};
73*a8f20eb6SHector Martin		};
74*a8f20eb6SHector Martin
75*a8f20eb6SHector Martin		cpu_e10: cpu@800 {
76*a8f20eb6SHector Martin			compatible = "apple,blizzard";
77*a8f20eb6SHector Martin			device_type = "cpu";
78*a8f20eb6SHector Martin			reg = <0x0 0x800>;
79*a8f20eb6SHector Martin			enable-method = "spin-table";
80*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* to be filled by loader */
81*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_3>;
82*a8f20eb6SHector Martin			i-cache-size  = <0x20000>;
83*a8f20eb6SHector Martin			d-cache-size = <0x10000>;
84*a8f20eb6SHector Martin			operating-points-v2 = <&blizzard_opp>;
85*a8f20eb6SHector Martin			capacity-dmips-mhz = <756>;
86*a8f20eb6SHector Martin			performance-domains = <&cpufreq_e_die1>;
87*a8f20eb6SHector Martin		};
88*a8f20eb6SHector Martin
89*a8f20eb6SHector Martin		cpu_e11: cpu@801 {
90*a8f20eb6SHector Martin			compatible = "apple,blizzard";
91*a8f20eb6SHector Martin			device_type = "cpu";
92*a8f20eb6SHector Martin			reg = <0x0 0x801>;
93*a8f20eb6SHector Martin			enable-method = "spin-table";
94*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* to be filled by loader */
95*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_3>;
96*a8f20eb6SHector Martin			i-cache-size  = <0x20000>;
97*a8f20eb6SHector Martin			d-cache-size = <0x10000>;
98*a8f20eb6SHector Martin			operating-points-v2 = <&blizzard_opp>;
99*a8f20eb6SHector Martin			capacity-dmips-mhz = <756>;
100*a8f20eb6SHector Martin			performance-domains = <&cpufreq_e_die1>;
101*a8f20eb6SHector Martin		};
102*a8f20eb6SHector Martin
103*a8f20eb6SHector Martin		cpu_e12: cpu@802 {
104*a8f20eb6SHector Martin			compatible = "apple,blizzard";
105*a8f20eb6SHector Martin			device_type = "cpu";
106*a8f20eb6SHector Martin			reg = <0x0 0x802>;
107*a8f20eb6SHector Martin			enable-method = "spin-table";
108*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* to be filled by loader */
109*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_3>;
110*a8f20eb6SHector Martin			i-cache-size  = <0x20000>;
111*a8f20eb6SHector Martin			d-cache-size = <0x10000>;
112*a8f20eb6SHector Martin			operating-points-v2 = <&blizzard_opp>;
113*a8f20eb6SHector Martin			capacity-dmips-mhz = <756>;
114*a8f20eb6SHector Martin			performance-domains = <&cpufreq_e_die1>;
115*a8f20eb6SHector Martin		};
116*a8f20eb6SHector Martin
117*a8f20eb6SHector Martin		cpu_e13: cpu@803 {
118*a8f20eb6SHector Martin			compatible = "apple,blizzard";
119*a8f20eb6SHector Martin			device_type = "cpu";
120*a8f20eb6SHector Martin			reg = <0x0 0x803>;
121*a8f20eb6SHector Martin			enable-method = "spin-table";
122*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* to be filled by loader */
123*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_3>;
124*a8f20eb6SHector Martin			i-cache-size  = <0x20000>;
125*a8f20eb6SHector Martin			d-cache-size = <0x10000>;
126*a8f20eb6SHector Martin			operating-points-v2 = <&blizzard_opp>;
127*a8f20eb6SHector Martin			capacity-dmips-mhz = <756>;
128*a8f20eb6SHector Martin			performance-domains = <&cpufreq_e_die1>;
129*a8f20eb6SHector Martin		};
130*a8f20eb6SHector Martin
131*a8f20eb6SHector Martin		cpu_p20: cpu@10900 {
132*a8f20eb6SHector Martin			compatible = "apple,avalanche";
133*a8f20eb6SHector Martin			device_type = "cpu";
134*a8f20eb6SHector Martin			reg = <0x0 0x10900>;
135*a8f20eb6SHector Martin			enable-method = "spin-table";
136*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
137*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_4>;
138*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
139*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
140*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
141*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
142*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p0_die1>;
143*a8f20eb6SHector Martin		};
144*a8f20eb6SHector Martin
145*a8f20eb6SHector Martin		cpu_p21: cpu@10901 {
146*a8f20eb6SHector Martin			compatible = "apple,avalanche";
147*a8f20eb6SHector Martin			device_type = "cpu";
148*a8f20eb6SHector Martin			reg = <0x0 0x10901>;
149*a8f20eb6SHector Martin			enable-method = "spin-table";
150*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
151*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_4>;
152*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
153*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
154*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
155*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
156*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p0_die1>;
157*a8f20eb6SHector Martin		};
158*a8f20eb6SHector Martin
159*a8f20eb6SHector Martin		cpu_p22: cpu@10902 {
160*a8f20eb6SHector Martin			compatible = "apple,avalanche";
161*a8f20eb6SHector Martin			device_type = "cpu";
162*a8f20eb6SHector Martin			reg = <0x0 0x10902>;
163*a8f20eb6SHector Martin			enable-method = "spin-table";
164*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
165*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_4>;
166*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
167*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
168*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
169*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
170*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p0_die1>;
171*a8f20eb6SHector Martin		};
172*a8f20eb6SHector Martin
173*a8f20eb6SHector Martin		cpu_p23: cpu@10903 {
174*a8f20eb6SHector Martin			compatible = "apple,avalanche";
175*a8f20eb6SHector Martin			device_type = "cpu";
176*a8f20eb6SHector Martin			reg = <0x0 0x10903>;
177*a8f20eb6SHector Martin			enable-method = "spin-table";
178*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
179*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_4>;
180*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
181*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
182*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
183*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
184*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p0_die1>;
185*a8f20eb6SHector Martin		};
186*a8f20eb6SHector Martin
187*a8f20eb6SHector Martin		cpu_p30: cpu@10a00 {
188*a8f20eb6SHector Martin			compatible = "apple,avalanche";
189*a8f20eb6SHector Martin			device_type = "cpu";
190*a8f20eb6SHector Martin			reg = <0x0 0x10a00>;
191*a8f20eb6SHector Martin			enable-method = "spin-table";
192*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
193*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_5>;
194*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
195*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
196*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
197*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
198*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p1_die1>;
199*a8f20eb6SHector Martin		};
200*a8f20eb6SHector Martin
201*a8f20eb6SHector Martin		cpu_p31: cpu@10a01 {
202*a8f20eb6SHector Martin			compatible = "apple,avalanche";
203*a8f20eb6SHector Martin			device_type = "cpu";
204*a8f20eb6SHector Martin			reg = <0x0 0x10a01>;
205*a8f20eb6SHector Martin			enable-method = "spin-table";
206*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
207*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_5>;
208*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
209*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
210*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
211*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
212*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p1_die1>;
213*a8f20eb6SHector Martin		};
214*a8f20eb6SHector Martin
215*a8f20eb6SHector Martin		cpu_p32: cpu@10a02 {
216*a8f20eb6SHector Martin			compatible = "apple,avalanche";
217*a8f20eb6SHector Martin			device_type = "cpu";
218*a8f20eb6SHector Martin			reg = <0x0 0x10a02>;
219*a8f20eb6SHector Martin			enable-method = "spin-table";
220*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
221*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_5>;
222*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
223*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
224*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
225*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
226*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p1_die1>;
227*a8f20eb6SHector Martin		};
228*a8f20eb6SHector Martin
229*a8f20eb6SHector Martin		cpu_p33: cpu@10a03 {
230*a8f20eb6SHector Martin			compatible = "apple,avalanche";
231*a8f20eb6SHector Martin			device_type = "cpu";
232*a8f20eb6SHector Martin			reg = <0x0 0x10a03>;
233*a8f20eb6SHector Martin			enable-method = "spin-table";
234*a8f20eb6SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
235*a8f20eb6SHector Martin			next-level-cache = <&l2_cache_5>;
236*a8f20eb6SHector Martin			i-cache-size = <0x30000>;
237*a8f20eb6SHector Martin			d-cache-size = <0x20000>;
238*a8f20eb6SHector Martin			operating-points-v2 = <&avalanche_opp>;
239*a8f20eb6SHector Martin			capacity-dmips-mhz = <1024>;
240*a8f20eb6SHector Martin			performance-domains = <&cpufreq_p1_die1>;
241*a8f20eb6SHector Martin		};
242*a8f20eb6SHector Martin
243*a8f20eb6SHector Martin		l2_cache_3: l2-cache-3 {
244*a8f20eb6SHector Martin			compatible = "cache";
245*a8f20eb6SHector Martin			cache-level = <2>;
246*a8f20eb6SHector Martin			cache-unified;
247*a8f20eb6SHector Martin			cache-size = <0x400000>;
248*a8f20eb6SHector Martin		};
249*a8f20eb6SHector Martin
250*a8f20eb6SHector Martin		l2_cache_4: l2-cache-4 {
251*a8f20eb6SHector Martin			compatible = "cache";
252*a8f20eb6SHector Martin			cache-level = <2>;
253*a8f20eb6SHector Martin			cache-unified;
254*a8f20eb6SHector Martin			cache-size = <0x1000000>;
255*a8f20eb6SHector Martin		};
256*a8f20eb6SHector Martin
257*a8f20eb6SHector Martin		l2_cache_5: l2-cache-5 {
258*a8f20eb6SHector Martin			compatible = "cache";
259*a8f20eb6SHector Martin			cache-level = <2>;
260*a8f20eb6SHector Martin			cache-unified;
261*a8f20eb6SHector Martin			cache-size = <0x1000000>;
262*a8f20eb6SHector Martin		};
263*a8f20eb6SHector Martin	};
264*a8f20eb6SHector Martin
265*a8f20eb6SHector Martin	die0: soc@200000000 {
266*a8f20eb6SHector Martin		compatible = "simple-bus";
267*a8f20eb6SHector Martin		#address-cells = <2>;
268*a8f20eb6SHector Martin		#size-cells = <2>;
269*a8f20eb6SHector Martin		ranges = <0x02 0x00000000 0x02 0x00000000 0x4 0x00000000>,
270*a8f20eb6SHector Martin			 <0x05 0x80000000 0x05 0x80000000 0x1 0x80000000>,
271*a8f20eb6SHector Martin			 <0x07 0x00000000 0x07 0x00000000 0xf 0x80000000>,
272*a8f20eb6SHector Martin			 <0x16 0x80000000 0x16 0x80000000 0x5 0x80000000>;
273*a8f20eb6SHector Martin		nonposted-mmio;
274*a8f20eb6SHector Martin		/* Required to get >32-bit DMA via DARTs */
275*a8f20eb6SHector Martin		dma-ranges = <0 0 0 0 0xffffffff 0xffffc000>;
276*a8f20eb6SHector Martin
277*a8f20eb6SHector Martin		// filled via templated includes at the end of the file
278*a8f20eb6SHector Martin	};
279*a8f20eb6SHector Martin
280*a8f20eb6SHector Martin	die1: soc@2200000000 {
281*a8f20eb6SHector Martin		compatible = "simple-bus";
282*a8f20eb6SHector Martin		#address-cells = <2>;
283*a8f20eb6SHector Martin		#size-cells = <2>;
284*a8f20eb6SHector Martin		ranges = <0x02 0x00000000 0x22 0x00000000 0x4 0x00000000>,
285*a8f20eb6SHector Martin			 <0x07 0x00000000 0x27 0x00000000 0xf 0x80000000>,
286*a8f20eb6SHector Martin			 <0x16 0x80000000 0x36 0x80000000 0x5 0x80000000>;
287*a8f20eb6SHector Martin		nonposted-mmio;
288*a8f20eb6SHector Martin		/* Required to get >32-bit DMA via DARTs */
289*a8f20eb6SHector Martin		dma-ranges = <0 0 0 0 0xffffffff 0xffffc000>;
290*a8f20eb6SHector Martin
291*a8f20eb6SHector Martin		// filled via templated includes at the end of the file
292*a8f20eb6SHector Martin	};
293*a8f20eb6SHector Martin};
294*a8f20eb6SHector Martin
295*a8f20eb6SHector Martin#define DIE
296*a8f20eb6SHector Martin#define DIE_NO 0
297*a8f20eb6SHector Martin
298*a8f20eb6SHector Martin&die0 {
299*a8f20eb6SHector Martin	#include "t602x-die0.dtsi"
300*a8f20eb6SHector Martin	#include "t602x-dieX.dtsi"
301*a8f20eb6SHector Martin};
302*a8f20eb6SHector Martin
303*a8f20eb6SHector Martin#include "t602x-pmgr.dtsi"
304*a8f20eb6SHector Martin#include "t602x-gpio-pins.dtsi"
305*a8f20eb6SHector Martin
306*a8f20eb6SHector Martin#undef DIE
307*a8f20eb6SHector Martin#undef DIE_NO
308*a8f20eb6SHector Martin
309*a8f20eb6SHector Martin#define DIE _die1
310*a8f20eb6SHector Martin#define DIE_NO 1
311*a8f20eb6SHector Martin
312*a8f20eb6SHector Martin&die1 {
313*a8f20eb6SHector Martin	#include "t602x-dieX.dtsi"
314*a8f20eb6SHector Martin	#include "t602x-nvme.dtsi"
315*a8f20eb6SHector Martin};
316*a8f20eb6SHector Martin
317*a8f20eb6SHector Martin#include "t602x-pmgr.dtsi"
318*a8f20eb6SHector Martin
319*a8f20eb6SHector Martin/delete-node/ &ps_pmp_die1;
320*a8f20eb6SHector Martin
321*a8f20eb6SHector Martin#undef DIE
322*a8f20eb6SHector Martin#undef DIE_NO
323*a8f20eb6SHector Martin
324*a8f20eb6SHector Martin&aic {
325*a8f20eb6SHector Martin	affinities {
326*a8f20eb6SHector Martin		e-core-pmu-affinity {
327*a8f20eb6SHector Martin			apple,fiq-index = <AIC_CPU_PMU_E>;
328*a8f20eb6SHector Martin			cpus = <&cpu_e00 &cpu_e01 &cpu_e02 &cpu_e03
329*a8f20eb6SHector Martin				&cpu_e10 &cpu_e11 &cpu_e12 &cpu_e13>;
330*a8f20eb6SHector Martin		};
331*a8f20eb6SHector Martin
332*a8f20eb6SHector Martin		p-core-pmu-affinity {
333*a8f20eb6SHector Martin			apple,fiq-index = <AIC_CPU_PMU_P>;
334*a8f20eb6SHector Martin			cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03
335*a8f20eb6SHector Martin				&cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13
336*a8f20eb6SHector Martin				&cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23
337*a8f20eb6SHector Martin				&cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>;
338*a8f20eb6SHector Martin		};
339*a8f20eb6SHector Martin	};
340*a8f20eb6SHector Martin};
341*a8f20eb6SHector Martin
342*a8f20eb6SHector Martin&ps_gfx {
343*a8f20eb6SHector Martin	// On t6022, the die0 GPU power domain needs both AFR power domains
344*a8f20eb6SHector Martin	power-domains = <&ps_afr>, <&ps_afr_die1>;
345*a8f20eb6SHector Martin};
346*a8f20eb6SHector Martin
347*a8f20eb6SHector Martin&gpu {
348*a8f20eb6SHector Martin	compatible = "apple,agx-g14d", "apple,agx-g14s";
349*a8f20eb6SHector Martin};
350