blob: fa8ead69936366999786cdd4910266ee08b5ca7a [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0+ OR MIT
2/*
3 * Common Apple T6000 / T6001 / T6002 "M1 Pro/Max/Ultra" SoC
4 *
5 * Other names: H13J, "Jade Chop", "Jade", "Jade 2C"
6 *
7 * Copyright The Asahi Linux Contributors
8 */
9
10/ {
11 #address-cells = <2>;
12 #size-cells = <2>;
13
14 cpus {
15 #address-cells = <2>;
16 #size-cells = <0>;
17
18 cpu-map {
19 cluster0 {
20 core0 {
21 cpu = <&cpu_e00>;
22 };
23 core1 {
24 cpu = <&cpu_e01>;
25 };
26 };
27
28 cluster1 {
29 core0 {
30 cpu = <&cpu_p00>;
31 };
32 core1 {
33 cpu = <&cpu_p01>;
34 };
35 core2 {
36 cpu = <&cpu_p02>;
37 };
38 core3 {
39 cpu = <&cpu_p03>;
40 };
41 };
42
43 cluster2 {
44 core0 {
45 cpu = <&cpu_p10>;
46 };
47 core1 {
48 cpu = <&cpu_p11>;
49 };
50 core2 {
51 cpu = <&cpu_p12>;
52 };
53 core3 {
54 cpu = <&cpu_p13>;
55 };
56 };
57 };
58
59 cpu_e00: cpu@0 {
60 compatible = "apple,icestorm";
61 device_type = "cpu";
62 reg = <0x0 0x0>;
63 enable-method = "spin-table";
64 cpu-release-addr = <0 0>; /* To be filled by loader */
65 next-level-cache = <&l2_cache_0>;
66 i-cache-size = <0x20000>;
67 d-cache-size = <0x10000>;
68 operating-points-v2 = <&icestorm_opp>;
69 capacity-dmips-mhz = <714>;
70 performance-domains = <&cpufreq_e>;
71 };
72
73 cpu_e01: cpu@1 {
74 compatible = "apple,icestorm";
75 device_type = "cpu";
76 reg = <0x0 0x1>;
77 enable-method = "spin-table";
78 cpu-release-addr = <0 0>; /* To be filled by loader */
79 next-level-cache = <&l2_cache_0>;
80 i-cache-size = <0x20000>;
81 d-cache-size = <0x10000>;
82 operating-points-v2 = <&icestorm_opp>;
83 capacity-dmips-mhz = <714>;
84 performance-domains = <&cpufreq_e>;
85 };
86
87 cpu_p00: cpu@10100 {
88 compatible = "apple,firestorm";
89 device_type = "cpu";
90 reg = <0x0 0x10100>;
91 enable-method = "spin-table";
92 cpu-release-addr = <0 0>; /* To be filled by loader */
93 next-level-cache = <&l2_cache_1>;
94 i-cache-size = <0x30000>;
95 d-cache-size = <0x20000>;
96 operating-points-v2 = <&firestorm_opp>;
97 capacity-dmips-mhz = <1024>;
98 performance-domains = <&cpufreq_p0>;
99 };
100
101 cpu_p01: cpu@10101 {
102 compatible = "apple,firestorm";
103 device_type = "cpu";
104 reg = <0x0 0x10101>;
105 enable-method = "spin-table";
106 cpu-release-addr = <0 0>; /* To be filled by loader */
107 next-level-cache = <&l2_cache_1>;
108 i-cache-size = <0x30000>;
109 d-cache-size = <0x20000>;
110 operating-points-v2 = <&firestorm_opp>;
111 capacity-dmips-mhz = <1024>;
112 performance-domains = <&cpufreq_p0>;
113 };
114
115 cpu_p02: cpu@10102 {
116 compatible = "apple,firestorm";
117 device_type = "cpu";
118 reg = <0x0 0x10102>;
119 enable-method = "spin-table";
120 cpu-release-addr = <0 0>; /* To be filled by loader */
121 next-level-cache = <&l2_cache_1>;
122 i-cache-size = <0x30000>;
123 d-cache-size = <0x20000>;
124 operating-points-v2 = <&firestorm_opp>;
125 capacity-dmips-mhz = <1024>;
126 performance-domains = <&cpufreq_p0>;
127 };
128
129 cpu_p03: cpu@10103 {
130 compatible = "apple,firestorm";
131 device_type = "cpu";
132 reg = <0x0 0x10103>;
133 enable-method = "spin-table";
134 cpu-release-addr = <0 0>; /* To be filled by loader */
135 next-level-cache = <&l2_cache_1>;
136 i-cache-size = <0x30000>;
137 d-cache-size = <0x20000>;
138 operating-points-v2 = <&firestorm_opp>;
139 capacity-dmips-mhz = <1024>;
140 performance-domains = <&cpufreq_p0>;
141 };
142
143 cpu_p10: cpu@10200 {
144 compatible = "apple,firestorm";
145 device_type = "cpu";
146 reg = <0x0 0x10200>;
147 enable-method = "spin-table";
148 cpu-release-addr = <0 0>; /* To be filled by loader */
149 next-level-cache = <&l2_cache_2>;
150 i-cache-size = <0x30000>;
151 d-cache-size = <0x20000>;
152 operating-points-v2 = <&firestorm_opp>;
153 capacity-dmips-mhz = <1024>;
154 performance-domains = <&cpufreq_p1>;
155 };
156
157 cpu_p11: cpu@10201 {
158 compatible = "apple,firestorm";
159 device_type = "cpu";
160 reg = <0x0 0x10201>;
161 enable-method = "spin-table";
162 cpu-release-addr = <0 0>; /* To be filled by loader */
163 next-level-cache = <&l2_cache_2>;
164 i-cache-size = <0x30000>;
165 d-cache-size = <0x20000>;
166 operating-points-v2 = <&firestorm_opp>;
167 capacity-dmips-mhz = <1024>;
168 performance-domains = <&cpufreq_p1>;
169 };
170
171 cpu_p12: cpu@10202 {
172 compatible = "apple,firestorm";
173 device_type = "cpu";
174 reg = <0x0 0x10202>;
175 enable-method = "spin-table";
176 cpu-release-addr = <0 0>; /* To be filled by loader */
177 next-level-cache = <&l2_cache_2>;
178 i-cache-size = <0x30000>;
179 d-cache-size = <0x20000>;
180 operating-points-v2 = <&firestorm_opp>;
181 capacity-dmips-mhz = <1024>;
182 performance-domains = <&cpufreq_p1>;
183 };
184
185 cpu_p13: cpu@10203 {
186 compatible = "apple,firestorm";
187 device_type = "cpu";
188 reg = <0x0 0x10203>;
189 enable-method = "spin-table";
190 cpu-release-addr = <0 0>; /* To be filled by loader */
191 next-level-cache = <&l2_cache_2>;
192 i-cache-size = <0x30000>;
193 d-cache-size = <0x20000>;
194 operating-points-v2 = <&firestorm_opp>;
195 capacity-dmips-mhz = <1024>;
196 performance-domains = <&cpufreq_p1>;
197 };
198
199 l2_cache_0: l2-cache-0 {
200 compatible = "cache";
201 cache-level = <2>;
202 cache-unified;
203 cache-size = <0x400000>;
204 };
205
206 l2_cache_1: l2-cache-1 {
207 compatible = "cache";
208 cache-level = <2>;
209 cache-unified;
210 cache-size = <0xc00000>;
211 };
212
213 l2_cache_2: l2-cache-2 {
214 compatible = "cache";
215 cache-level = <2>;
216 cache-unified;
217 cache-size = <0xc00000>;
218 };
219 };
220
221 icestorm_opp: opp-table-0 {
222 compatible = "operating-points-v2";
223
224 opp01 {
225 opp-hz = /bits/ 64 <600000000>;
226 opp-level = <1>;
227 clock-latency-ns = <7500>;
228 };
229 opp02 {
230 opp-hz = /bits/ 64 <972000000>;
231 opp-level = <2>;
232 clock-latency-ns = <23000>;
233 };
234 opp03 {
235 opp-hz = /bits/ 64 <1332000000>;
236 opp-level = <3>;
237 clock-latency-ns = <29000>;
238 };
239 opp04 {
240 opp-hz = /bits/ 64 <1704000000>;
241 opp-level = <4>;
242 clock-latency-ns = <40000>;
243 };
244 opp05 {
245 opp-hz = /bits/ 64 <2064000000>;
246 opp-level = <5>;
247 clock-latency-ns = <50000>;
248 };
249 };
250
251 firestorm_opp: opp-table-1 {
252 compatible = "operating-points-v2";
253
254 opp01 {
255 opp-hz = /bits/ 64 <600000000>;
256 opp-level = <1>;
257 clock-latency-ns = <8000>;
258 };
259 opp02 {
260 opp-hz = /bits/ 64 <828000000>;
261 opp-level = <2>;
262 clock-latency-ns = <18000>;
263 };
264 opp03 {
265 opp-hz = /bits/ 64 <1056000000>;
266 opp-level = <3>;
267 clock-latency-ns = <19000>;
268 };
269 opp04 {
270 opp-hz = /bits/ 64 <1296000000>;
271 opp-level = <4>;
272 clock-latency-ns = <23000>;
273 };
274 opp05 {
275 opp-hz = /bits/ 64 <1524000000>;
276 opp-level = <5>;
277 clock-latency-ns = <24000>;
278 };
279 opp06 {
280 opp-hz = /bits/ 64 <1752000000>;
281 opp-level = <6>;
282 clock-latency-ns = <28000>;
283 };
284 opp07 {
285 opp-hz = /bits/ 64 <1980000000>;
286 opp-level = <7>;
287 clock-latency-ns = <31000>;
288 };
289 opp08 {
290 opp-hz = /bits/ 64 <2208000000>;
291 opp-level = <8>;
292 clock-latency-ns = <45000>;
293 };
294 opp09 {
295 opp-hz = /bits/ 64 <2448000000>;
296 opp-level = <9>;
297 clock-latency-ns = <49000>;
298 };
299 opp10 {
300 opp-hz = /bits/ 64 <2676000000>;
301 opp-level = <10>;
302 clock-latency-ns = <53000>;
303 };
304 opp11 {
305 opp-hz = /bits/ 64 <2904000000>;
306 opp-level = <11>;
307 clock-latency-ns = <56000>;
308 };
309 opp12 {
310 opp-hz = /bits/ 64 <3036000000>;
311 opp-level = <12>;
312 clock-latency-ns = <56000>;
313 };
314 /* Not available until CPU deep sleep is implemented
315 opp13 {
316 opp-hz = /bits/ 64 <3132000000>;
317 opp-level = <13>;
318 clock-latency-ns = <56000>;
319 turbo-mode;
320 };
321 opp14 {
322 opp-hz = /bits/ 64 <3168000000>;
323 opp-level = <14>;
324 clock-latency-ns = <56000>;
325 turbo-mode;
326 };
327 opp15 {
328 opp-hz = /bits/ 64 <3228000000>;
329 opp-level = <15>;
330 clock-latency-ns = <56000>;
331 turbo-mode;
332 };
333 */
334 };
335
336 pmu-e {
337 compatible = "apple,icestorm-pmu";
338 interrupt-parent = <&aic>;
339 interrupts = <AIC_FIQ 0 AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
340 };
341
342 pmu-p {
343 compatible = "apple,firestorm-pmu";
344 interrupt-parent = <&aic>;
345 interrupts = <AIC_FIQ 0 AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
346 };
347
348 timer {
349 compatible = "arm,armv8-timer";
350 interrupt-parent = <&aic>;
351 interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
352 interrupts = <AIC_FIQ 0 AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
353 <AIC_FIQ 0 AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
354 <AIC_FIQ 0 AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
355 <AIC_FIQ 0 AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
356 };
357
358 clkref: clock-ref {
359 compatible = "fixed-clock";
360 #clock-cells = <0>;
361 clock-frequency = <24000000>;
362 clock-output-names = "clkref";
363 };
364
365 /*
366 * This is a fabulated representation of the input clock
367 * to NCO since we don't know the true clock tree.
368 */
369 nco_clkref: clock-ref-nco {
370 compatible = "fixed-clock";
371 #clock-cells = <0>;
372 clock-output-names = "nco_ref";
373 };
374};