1 // SPDX-License-Identifier: GPL-2.0+ OR MIT
3 * Common Apple T6000 / T6001 / T6002 "M1 Pro/Max/Ultra" SoC
5 * Other names: H13J, "Jade Chop", "Jade", "Jade 2C"
7 * Copyright The Asahi Linux Contributors
60 compatible = "apple,icestorm";
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>;
74 compatible = "apple,icestorm";
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>;
88 compatible = "apple,firestorm";
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>;
102 compatible = "apple,firestorm";
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>;
116 compatible = "apple,firestorm";
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>;
130 compatible = "apple,firestorm";
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>;
144 compatible = "apple,firestorm";
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>;
158 compatible = "apple,firestorm";
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>;
172 compatible = "apple,firestorm";
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>;
186 compatible = "apple,firestorm";
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>;
199 l2_cache_0: l2-cache-0 {
200 compatible = "cache";
203 cache-size = <0x400000>;
206 l2_cache_1: l2-cache-1 {
207 compatible = "cache";
210 cache-size = <0xc00000>;
213 l2_cache_2: l2-cache-2 {
214 compatible = "cache";
217 cache-size = <0xc00000>;
221 icestorm_opp: opp-table-0 {
222 compatible = "operating-points-v2";
225 opp-hz = /bits/ 64 <600000000>;
227 clock-latency-ns = <7500>;
230 opp-hz = /bits/ 64 <972000000>;
232 clock-latency-ns = <23000>;
235 opp-hz = /bits/ 64 <1332000000>;
237 clock-latency-ns = <29000>;
240 opp-hz = /bits/ 64 <1704000000>;
242 clock-latency-ns = <40000>;
245 opp-hz = /bits/ 64 <2064000000>;
247 clock-latency-ns = <50000>;
251 firestorm_opp: opp-table-1 {
252 compatible = "operating-points-v2";
255 opp-hz = /bits/ 64 <600000000>;
257 clock-latency-ns = <8000>;
260 opp-hz = /bits/ 64 <828000000>;
262 clock-latency-ns = <18000>;
265 opp-hz = /bits/ 64 <1056000000>;
267 clock-latency-ns = <19000>;
270 opp-hz = /bits/ 64 <1296000000>;
272 clock-latency-ns = <23000>;
275 opp-hz = /bits/ 64 <1524000000>;
277 clock-latency-ns = <24000>;
280 opp-hz = /bits/ 64 <1752000000>;
282 clock-latency-ns = <28000>;
285 opp-hz = /bits/ 64 <1980000000>;
287 clock-latency-ns = <31000>;
290 opp-hz = /bits/ 64 <2208000000>;
292 clock-latency-ns = <45000>;
295 opp-hz = /bits/ 64 <2448000000>;
297 clock-latency-ns = <49000>;
300 opp-hz = /bits/ 64 <2676000000>;
302 clock-latency-ns = <53000>;
305 opp-hz = /bits/ 64 <2904000000>;
307 clock-latency-ns = <56000>;
310 opp-hz = /bits/ 64 <3036000000>;
312 clock-latency-ns = <56000>;
314 /* Not available until CPU deep sleep is implemented
316 opp-hz = /bits/ 64 <3132000000>;
318 clock-latency-ns = <56000>;
322 opp-hz = /bits/ 64 <3168000000>;
324 clock-latency-ns = <56000>;
328 opp-hz = /bits/ 64 <3228000000>;
330 clock-latency-ns = <56000>;
337 compatible = "apple,icestorm-pmu";
338 interrupt-parent = <&aic>;
339 interrupts = <AIC_FIQ 0 AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
343 compatible = "apple,firestorm-pmu";
344 interrupt-parent = <&aic>;
345 interrupts = <AIC_FIQ 0 AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
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>;
359 compatible = "fixed-clock";
361 clock-frequency = <24000000>;
362 clock-output-names = "clkref";
366 * This is a fabulated representation of the input clock
367 * to NCO since we don't know the true clock tree.
369 nco_clkref: clock-ref-nco {
370 compatible = "fixed-clock";
372 clock-output-names = "nco_ref";