Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / apple / t600x-common.dtsi
1 // 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 };