17b0b0191SHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT 27b0b0191SHector Martin/* 37b0b0191SHector Martin * Common Apple T6000 / T6001 / T6002 "M1 Pro/Max/Ultra" SoC 47b0b0191SHector Martin * 57b0b0191SHector Martin * Other names: H13J, "Jade Chop", "Jade", "Jade 2C" 67b0b0191SHector Martin * 77b0b0191SHector Martin * Copyright The Asahi Linux Contributors 87b0b0191SHector Martin */ 97b0b0191SHector Martin 107b0b0191SHector Martin/ { 117b0b0191SHector Martin #address-cells = <2>; 127b0b0191SHector Martin #size-cells = <2>; 137b0b0191SHector Martin 147b0b0191SHector Martin cpus { 157b0b0191SHector Martin #address-cells = <2>; 167b0b0191SHector Martin #size-cells = <0>; 177b0b0191SHector Martin 18*d32c1530SHector Martin cpu-map { 19*d32c1530SHector Martin cluster0 { 20*d32c1530SHector Martin core0 { 21*d32c1530SHector Martin cpu = <&cpu_e00>; 22*d32c1530SHector Martin }; 23*d32c1530SHector Martin core1 { 24*d32c1530SHector Martin cpu = <&cpu_e01>; 25*d32c1530SHector Martin }; 26*d32c1530SHector Martin }; 27*d32c1530SHector Martin 28*d32c1530SHector Martin cluster1 { 29*d32c1530SHector Martin core0 { 30*d32c1530SHector Martin cpu = <&cpu_p00>; 31*d32c1530SHector Martin }; 32*d32c1530SHector Martin core1 { 33*d32c1530SHector Martin cpu = <&cpu_p01>; 34*d32c1530SHector Martin }; 35*d32c1530SHector Martin core2 { 36*d32c1530SHector Martin cpu = <&cpu_p02>; 37*d32c1530SHector Martin }; 38*d32c1530SHector Martin core3 { 39*d32c1530SHector Martin cpu = <&cpu_p03>; 40*d32c1530SHector Martin }; 41*d32c1530SHector Martin }; 42*d32c1530SHector Martin 43*d32c1530SHector Martin cluster2 { 44*d32c1530SHector Martin core0 { 45*d32c1530SHector Martin cpu = <&cpu_p10>; 46*d32c1530SHector Martin }; 47*d32c1530SHector Martin core1 { 48*d32c1530SHector Martin cpu = <&cpu_p11>; 49*d32c1530SHector Martin }; 50*d32c1530SHector Martin core2 { 51*d32c1530SHector Martin cpu = <&cpu_p12>; 52*d32c1530SHector Martin }; 53*d32c1530SHector Martin core3 { 54*d32c1530SHector Martin cpu = <&cpu_p13>; 55*d32c1530SHector Martin }; 56*d32c1530SHector Martin }; 57*d32c1530SHector Martin }; 58*d32c1530SHector Martin 597b0b0191SHector Martin cpu_e00: cpu@0 { 607b0b0191SHector Martin compatible = "apple,icestorm"; 617b0b0191SHector Martin device_type = "cpu"; 627b0b0191SHector Martin reg = <0x0 0x0>; 637b0b0191SHector Martin enable-method = "spin-table"; 647b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 6583fb5b55SRob Herring next-level-cache = <&l2_cache_0>; 6683fb5b55SRob Herring i-cache-size = <0x20000>; 6783fb5b55SRob Herring d-cache-size = <0x10000>; 68*d32c1530SHector Martin operating-points-v2 = <&icestorm_opp>; 69*d32c1530SHector Martin capacity-dmips-mhz = <714>; 70*d32c1530SHector Martin performance-domains = <&cpufreq_e>; 717b0b0191SHector Martin }; 727b0b0191SHector Martin 737b0b0191SHector Martin cpu_e01: cpu@1 { 747b0b0191SHector Martin compatible = "apple,icestorm"; 757b0b0191SHector Martin device_type = "cpu"; 767b0b0191SHector Martin reg = <0x0 0x1>; 777b0b0191SHector Martin enable-method = "spin-table"; 787b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 7983fb5b55SRob Herring next-level-cache = <&l2_cache_0>; 8083fb5b55SRob Herring i-cache-size = <0x20000>; 8183fb5b55SRob Herring d-cache-size = <0x10000>; 82*d32c1530SHector Martin operating-points-v2 = <&icestorm_opp>; 83*d32c1530SHector Martin capacity-dmips-mhz = <714>; 84*d32c1530SHector Martin performance-domains = <&cpufreq_e>; 857b0b0191SHector Martin }; 867b0b0191SHector Martin 877b0b0191SHector Martin cpu_p00: cpu@10100 { 887b0b0191SHector Martin compatible = "apple,firestorm"; 897b0b0191SHector Martin device_type = "cpu"; 907b0b0191SHector Martin reg = <0x0 0x10100>; 917b0b0191SHector Martin enable-method = "spin-table"; 927b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 9383fb5b55SRob Herring next-level-cache = <&l2_cache_1>; 9483fb5b55SRob Herring i-cache-size = <0x30000>; 9583fb5b55SRob Herring d-cache-size = <0x20000>; 96*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 97*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 98*d32c1530SHector Martin performance-domains = <&cpufreq_p0>; 997b0b0191SHector Martin }; 1007b0b0191SHector Martin 1017b0b0191SHector Martin cpu_p01: cpu@10101 { 1027b0b0191SHector Martin compatible = "apple,firestorm"; 1037b0b0191SHector Martin device_type = "cpu"; 1047b0b0191SHector Martin reg = <0x0 0x10101>; 1057b0b0191SHector Martin enable-method = "spin-table"; 1067b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 10783fb5b55SRob Herring next-level-cache = <&l2_cache_1>; 10883fb5b55SRob Herring i-cache-size = <0x30000>; 10983fb5b55SRob Herring d-cache-size = <0x20000>; 110*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 111*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 112*d32c1530SHector Martin performance-domains = <&cpufreq_p0>; 1137b0b0191SHector Martin }; 1147b0b0191SHector Martin 1157b0b0191SHector Martin cpu_p02: cpu@10102 { 1167b0b0191SHector Martin compatible = "apple,firestorm"; 1177b0b0191SHector Martin device_type = "cpu"; 1187b0b0191SHector Martin reg = <0x0 0x10102>; 1197b0b0191SHector Martin enable-method = "spin-table"; 1207b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 12183fb5b55SRob Herring next-level-cache = <&l2_cache_1>; 12283fb5b55SRob Herring i-cache-size = <0x30000>; 12383fb5b55SRob Herring d-cache-size = <0x20000>; 124*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 125*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 126*d32c1530SHector Martin performance-domains = <&cpufreq_p0>; 1277b0b0191SHector Martin }; 1287b0b0191SHector Martin 1297b0b0191SHector Martin cpu_p03: cpu@10103 { 1307b0b0191SHector Martin compatible = "apple,firestorm"; 1317b0b0191SHector Martin device_type = "cpu"; 1327b0b0191SHector Martin reg = <0x0 0x10103>; 1337b0b0191SHector Martin enable-method = "spin-table"; 1347b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 13583fb5b55SRob Herring next-level-cache = <&l2_cache_1>; 13683fb5b55SRob Herring i-cache-size = <0x30000>; 13783fb5b55SRob Herring d-cache-size = <0x20000>; 138*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 139*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 140*d32c1530SHector Martin performance-domains = <&cpufreq_p0>; 1417b0b0191SHector Martin }; 1427b0b0191SHector Martin 1437b0b0191SHector Martin cpu_p10: cpu@10200 { 1447b0b0191SHector Martin compatible = "apple,firestorm"; 1457b0b0191SHector Martin device_type = "cpu"; 1467b0b0191SHector Martin reg = <0x0 0x10200>; 1477b0b0191SHector Martin enable-method = "spin-table"; 1487b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 14983fb5b55SRob Herring next-level-cache = <&l2_cache_2>; 15083fb5b55SRob Herring i-cache-size = <0x30000>; 15183fb5b55SRob Herring d-cache-size = <0x20000>; 152*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 153*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 154*d32c1530SHector Martin performance-domains = <&cpufreq_p1>; 1557b0b0191SHector Martin }; 1567b0b0191SHector Martin 1577b0b0191SHector Martin cpu_p11: cpu@10201 { 1587b0b0191SHector Martin compatible = "apple,firestorm"; 1597b0b0191SHector Martin device_type = "cpu"; 1607b0b0191SHector Martin reg = <0x0 0x10201>; 1617b0b0191SHector Martin enable-method = "spin-table"; 1627b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 16383fb5b55SRob Herring next-level-cache = <&l2_cache_2>; 16483fb5b55SRob Herring i-cache-size = <0x30000>; 16583fb5b55SRob Herring d-cache-size = <0x20000>; 166*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 167*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 168*d32c1530SHector Martin performance-domains = <&cpufreq_p1>; 1697b0b0191SHector Martin }; 1707b0b0191SHector Martin 1717b0b0191SHector Martin cpu_p12: cpu@10202 { 1727b0b0191SHector Martin compatible = "apple,firestorm"; 1737b0b0191SHector Martin device_type = "cpu"; 1747b0b0191SHector Martin reg = <0x0 0x10202>; 1757b0b0191SHector Martin enable-method = "spin-table"; 1767b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 17783fb5b55SRob Herring next-level-cache = <&l2_cache_2>; 17883fb5b55SRob Herring i-cache-size = <0x30000>; 17983fb5b55SRob Herring d-cache-size = <0x20000>; 180*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 181*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 182*d32c1530SHector Martin performance-domains = <&cpufreq_p1>; 1837b0b0191SHector Martin }; 1847b0b0191SHector Martin 1857b0b0191SHector Martin cpu_p13: cpu@10203 { 1867b0b0191SHector Martin compatible = "apple,firestorm"; 1877b0b0191SHector Martin device_type = "cpu"; 1887b0b0191SHector Martin reg = <0x0 0x10203>; 1897b0b0191SHector Martin enable-method = "spin-table"; 1907b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 19183fb5b55SRob Herring next-level-cache = <&l2_cache_2>; 19283fb5b55SRob Herring i-cache-size = <0x30000>; 19383fb5b55SRob Herring d-cache-size = <0x20000>; 194*d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 195*d32c1530SHector Martin capacity-dmips-mhz = <1024>; 196*d32c1530SHector Martin performance-domains = <&cpufreq_p1>; 19783fb5b55SRob Herring }; 19883fb5b55SRob Herring 19983fb5b55SRob Herring l2_cache_0: l2-cache-0 { 20083fb5b55SRob Herring compatible = "cache"; 20183fb5b55SRob Herring cache-level = <2>; 20283fb5b55SRob Herring cache-unified; 20383fb5b55SRob Herring cache-size = <0x400000>; 20483fb5b55SRob Herring }; 20583fb5b55SRob Herring 20683fb5b55SRob Herring l2_cache_1: l2-cache-1 { 20783fb5b55SRob Herring compatible = "cache"; 20883fb5b55SRob Herring cache-level = <2>; 20983fb5b55SRob Herring cache-unified; 21083fb5b55SRob Herring cache-size = <0xc00000>; 21183fb5b55SRob Herring }; 21283fb5b55SRob Herring 21383fb5b55SRob Herring l2_cache_2: l2-cache-2 { 21483fb5b55SRob Herring compatible = "cache"; 21583fb5b55SRob Herring cache-level = <2>; 21683fb5b55SRob Herring cache-unified; 21783fb5b55SRob Herring cache-size = <0xc00000>; 2187b0b0191SHector Martin }; 2197b0b0191SHector Martin }; 2207b0b0191SHector Martin 221*d32c1530SHector Martin icestorm_opp: opp-table-0 { 222*d32c1530SHector Martin compatible = "operating-points-v2"; 223*d32c1530SHector Martin 224*d32c1530SHector Martin opp01 { 225*d32c1530SHector Martin opp-hz = /bits/ 64 <600000000>; 226*d32c1530SHector Martin opp-level = <1>; 227*d32c1530SHector Martin clock-latency-ns = <7500>; 228*d32c1530SHector Martin }; 229*d32c1530SHector Martin opp02 { 230*d32c1530SHector Martin opp-hz = /bits/ 64 <972000000>; 231*d32c1530SHector Martin opp-level = <2>; 232*d32c1530SHector Martin clock-latency-ns = <23000>; 233*d32c1530SHector Martin }; 234*d32c1530SHector Martin opp03 { 235*d32c1530SHector Martin opp-hz = /bits/ 64 <1332000000>; 236*d32c1530SHector Martin opp-level = <3>; 237*d32c1530SHector Martin clock-latency-ns = <29000>; 238*d32c1530SHector Martin }; 239*d32c1530SHector Martin opp04 { 240*d32c1530SHector Martin opp-hz = /bits/ 64 <1704000000>; 241*d32c1530SHector Martin opp-level = <4>; 242*d32c1530SHector Martin clock-latency-ns = <40000>; 243*d32c1530SHector Martin }; 244*d32c1530SHector Martin opp05 { 245*d32c1530SHector Martin opp-hz = /bits/ 64 <2064000000>; 246*d32c1530SHector Martin opp-level = <5>; 247*d32c1530SHector Martin clock-latency-ns = <50000>; 248*d32c1530SHector Martin }; 249*d32c1530SHector Martin }; 250*d32c1530SHector Martin 251*d32c1530SHector Martin firestorm_opp: opp-table-1 { 252*d32c1530SHector Martin compatible = "operating-points-v2"; 253*d32c1530SHector Martin 254*d32c1530SHector Martin opp01 { 255*d32c1530SHector Martin opp-hz = /bits/ 64 <600000000>; 256*d32c1530SHector Martin opp-level = <1>; 257*d32c1530SHector Martin clock-latency-ns = <8000>; 258*d32c1530SHector Martin }; 259*d32c1530SHector Martin opp02 { 260*d32c1530SHector Martin opp-hz = /bits/ 64 <828000000>; 261*d32c1530SHector Martin opp-level = <2>; 262*d32c1530SHector Martin clock-latency-ns = <18000>; 263*d32c1530SHector Martin }; 264*d32c1530SHector Martin opp03 { 265*d32c1530SHector Martin opp-hz = /bits/ 64 <1056000000>; 266*d32c1530SHector Martin opp-level = <3>; 267*d32c1530SHector Martin clock-latency-ns = <19000>; 268*d32c1530SHector Martin }; 269*d32c1530SHector Martin opp04 { 270*d32c1530SHector Martin opp-hz = /bits/ 64 <1296000000>; 271*d32c1530SHector Martin opp-level = <4>; 272*d32c1530SHector Martin clock-latency-ns = <23000>; 273*d32c1530SHector Martin }; 274*d32c1530SHector Martin opp05 { 275*d32c1530SHector Martin opp-hz = /bits/ 64 <1524000000>; 276*d32c1530SHector Martin opp-level = <5>; 277*d32c1530SHector Martin clock-latency-ns = <24000>; 278*d32c1530SHector Martin }; 279*d32c1530SHector Martin opp06 { 280*d32c1530SHector Martin opp-hz = /bits/ 64 <1752000000>; 281*d32c1530SHector Martin opp-level = <6>; 282*d32c1530SHector Martin clock-latency-ns = <28000>; 283*d32c1530SHector Martin }; 284*d32c1530SHector Martin opp07 { 285*d32c1530SHector Martin opp-hz = /bits/ 64 <1980000000>; 286*d32c1530SHector Martin opp-level = <7>; 287*d32c1530SHector Martin clock-latency-ns = <31000>; 288*d32c1530SHector Martin }; 289*d32c1530SHector Martin opp08 { 290*d32c1530SHector Martin opp-hz = /bits/ 64 <2208000000>; 291*d32c1530SHector Martin opp-level = <8>; 292*d32c1530SHector Martin clock-latency-ns = <45000>; 293*d32c1530SHector Martin }; 294*d32c1530SHector Martin opp09 { 295*d32c1530SHector Martin opp-hz = /bits/ 64 <2448000000>; 296*d32c1530SHector Martin opp-level = <9>; 297*d32c1530SHector Martin clock-latency-ns = <49000>; 298*d32c1530SHector Martin }; 299*d32c1530SHector Martin opp10 { 300*d32c1530SHector Martin opp-hz = /bits/ 64 <2676000000>; 301*d32c1530SHector Martin opp-level = <10>; 302*d32c1530SHector Martin clock-latency-ns = <53000>; 303*d32c1530SHector Martin }; 304*d32c1530SHector Martin opp11 { 305*d32c1530SHector Martin opp-hz = /bits/ 64 <2904000000>; 306*d32c1530SHector Martin opp-level = <11>; 307*d32c1530SHector Martin clock-latency-ns = <56000>; 308*d32c1530SHector Martin }; 309*d32c1530SHector Martin opp12 { 310*d32c1530SHector Martin opp-hz = /bits/ 64 <3036000000>; 311*d32c1530SHector Martin opp-level = <12>; 312*d32c1530SHector Martin clock-latency-ns = <56000>; 313*d32c1530SHector Martin }; 314*d32c1530SHector Martin /* Not available until CPU deep sleep is implemented 315*d32c1530SHector Martin opp13 { 316*d32c1530SHector Martin opp-hz = /bits/ 64 <3132000000>; 317*d32c1530SHector Martin opp-level = <13>; 318*d32c1530SHector Martin clock-latency-ns = <56000>; 319*d32c1530SHector Martin turbo-mode; 320*d32c1530SHector Martin }; 321*d32c1530SHector Martin opp14 { 322*d32c1530SHector Martin opp-hz = /bits/ 64 <3168000000>; 323*d32c1530SHector Martin opp-level = <14>; 324*d32c1530SHector Martin clock-latency-ns = <56000>; 325*d32c1530SHector Martin turbo-mode; 326*d32c1530SHector Martin }; 327*d32c1530SHector Martin opp15 { 328*d32c1530SHector Martin opp-hz = /bits/ 64 <3228000000>; 329*d32c1530SHector Martin opp-level = <15>; 330*d32c1530SHector Martin clock-latency-ns = <56000>; 331*d32c1530SHector Martin turbo-mode; 332*d32c1530SHector Martin }; 333*d32c1530SHector Martin */ 334*d32c1530SHector Martin }; 335*d32c1530SHector Martin 3367b0b0191SHector Martin pmu-e { 3377b0b0191SHector Martin compatible = "apple,icestorm-pmu"; 3387b0b0191SHector Martin interrupt-parent = <&aic>; 3397b0b0191SHector Martin interrupts = <AIC_FIQ 0 AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>; 3407b0b0191SHector Martin }; 3417b0b0191SHector Martin 3427b0b0191SHector Martin pmu-p { 3437b0b0191SHector Martin compatible = "apple,firestorm-pmu"; 3447b0b0191SHector Martin interrupt-parent = <&aic>; 3457b0b0191SHector Martin interrupts = <AIC_FIQ 0 AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>; 3467b0b0191SHector Martin }; 3477b0b0191SHector Martin 3487b0b0191SHector Martin timer { 3497b0b0191SHector Martin compatible = "arm,armv8-timer"; 3507b0b0191SHector Martin interrupt-parent = <&aic>; 3517b0b0191SHector Martin interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; 3527b0b0191SHector Martin interrupts = <AIC_FIQ 0 AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 3537b0b0191SHector Martin <AIC_FIQ 0 AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, 3547b0b0191SHector Martin <AIC_FIQ 0 AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, 3557b0b0191SHector Martin <AIC_FIQ 0 AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; 3567b0b0191SHector Martin }; 3577b0b0191SHector Martin 3587b0b0191SHector Martin clkref: clock-ref { 3597b0b0191SHector Martin compatible = "fixed-clock"; 3607b0b0191SHector Martin #clock-cells = <0>; 3617b0b0191SHector Martin clock-frequency = <24000000>; 3627b0b0191SHector Martin clock-output-names = "clkref"; 3637b0b0191SHector Martin }; 3647b0b0191SHector Martin 36551979fbbSJanne Grunau /* 36651979fbbSJanne Grunau * This is a fabulated representation of the input clock 36751979fbbSJanne Grunau * to NCO since we don't know the true clock tree. 36851979fbbSJanne Grunau */ 36951979fbbSJanne Grunau nco_clkref: clock-ref-nco { 37051979fbbSJanne Grunau compatible = "fixed-clock"; 37151979fbbSJanne Grunau #clock-cells = <0>; 37251979fbbSJanne Grunau clock-output-names = "nco_ref"; 37351979fbbSJanne Grunau }; 3747b0b0191SHector Martin}; 375