17b0b0191SHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT 27b0b0191SHector Martin/* 37b0b0191SHector Martin * Apple T6002 "M1 Ultra" SoC 47b0b0191SHector Martin * 57b0b0191SHector Martin * Other names: H13J, "Jade 2C" 67b0b0191SHector Martin * 77b0b0191SHector Martin * Copyright The Asahi Linux Contributors 87b0b0191SHector Martin */ 97b0b0191SHector Martin 107b0b0191SHector Martin#include <dt-bindings/gpio/gpio.h> 117b0b0191SHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h> 127b0b0191SHector Martin#include <dt-bindings/interrupt-controller/irq.h> 137b0b0191SHector Martin#include <dt-bindings/pinctrl/apple.h> 147b0b0191SHector Martin 157b0b0191SHector Martin#include "multi-die-cpp.h" 167b0b0191SHector Martin 177b0b0191SHector Martin#include "t600x-common.dtsi" 187b0b0191SHector Martin 197b0b0191SHector Martin/ { 207b0b0191SHector Martin compatible = "apple,t6002", "apple,arm-platform"; 217b0b0191SHector Martin 227b0b0191SHector Martin #address-cells = <2>; 237b0b0191SHector Martin #size-cells = <2>; 247b0b0191SHector Martin 257b0b0191SHector Martin cpus { 26d32c1530SHector Martin cpu-map { 27d32c1530SHector Martin cluster3 { 28d32c1530SHector Martin core0 { 29d32c1530SHector Martin cpu = <&cpu_e10>; 30d32c1530SHector Martin }; 31d32c1530SHector Martin core1 { 32d32c1530SHector Martin cpu = <&cpu_e11>; 33d32c1530SHector Martin }; 34d32c1530SHector Martin }; 35d32c1530SHector Martin 36d32c1530SHector Martin cluster4 { 37d32c1530SHector Martin core0 { 38d32c1530SHector Martin cpu = <&cpu_p20>; 39d32c1530SHector Martin }; 40d32c1530SHector Martin core1 { 41d32c1530SHector Martin cpu = <&cpu_p21>; 42d32c1530SHector Martin }; 43d32c1530SHector Martin core2 { 44d32c1530SHector Martin cpu = <&cpu_p22>; 45d32c1530SHector Martin }; 46d32c1530SHector Martin core3 { 47d32c1530SHector Martin cpu = <&cpu_p23>; 48d32c1530SHector Martin }; 49d32c1530SHector Martin }; 50d32c1530SHector Martin 51d32c1530SHector Martin cluster5 { 52d32c1530SHector Martin core0 { 53d32c1530SHector Martin cpu = <&cpu_p30>; 54d32c1530SHector Martin }; 55d32c1530SHector Martin core1 { 56d32c1530SHector Martin cpu = <&cpu_p31>; 57d32c1530SHector Martin }; 58d32c1530SHector Martin core2 { 59d32c1530SHector Martin cpu = <&cpu_p32>; 60d32c1530SHector Martin }; 61d32c1530SHector Martin core3 { 62d32c1530SHector Martin cpu = <&cpu_p33>; 63d32c1530SHector Martin }; 64d32c1530SHector Martin }; 65d32c1530SHector Martin }; 66d32c1530SHector Martin 677b0b0191SHector Martin cpu_e10: cpu@800 { 687b0b0191SHector Martin compatible = "apple,icestorm"; 697b0b0191SHector Martin device_type = "cpu"; 707b0b0191SHector Martin reg = <0x0 0x800>; 717b0b0191SHector Martin enable-method = "spin-table"; 727b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 7383fb5b55SRob Herring next-level-cache = <&l2_cache_3>; 7483fb5b55SRob Herring i-cache-size = <0x20000>; 7583fb5b55SRob Herring d-cache-size = <0x10000>; 76d32c1530SHector Martin operating-points-v2 = <&icestorm_opp>; 77d32c1530SHector Martin capacity-dmips-mhz = <714>; 78d32c1530SHector Martin performance-domains = <&cpufreq_e_die1>; 797b0b0191SHector Martin }; 807b0b0191SHector Martin 817b0b0191SHector Martin cpu_e11: cpu@801 { 827b0b0191SHector Martin compatible = "apple,icestorm"; 837b0b0191SHector Martin device_type = "cpu"; 847b0b0191SHector Martin reg = <0x0 0x801>; 857b0b0191SHector Martin enable-method = "spin-table"; 867b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 8783fb5b55SRob Herring next-level-cache = <&l2_cache_3>; 8883fb5b55SRob Herring i-cache-size = <0x20000>; 8983fb5b55SRob Herring d-cache-size = <0x10000>; 90d32c1530SHector Martin operating-points-v2 = <&icestorm_opp>; 91d32c1530SHector Martin capacity-dmips-mhz = <714>; 92d32c1530SHector Martin performance-domains = <&cpufreq_e_die1>; 937b0b0191SHector Martin }; 947b0b0191SHector Martin 957b0b0191SHector Martin cpu_p20: cpu@10900 { 967b0b0191SHector Martin compatible = "apple,firestorm"; 977b0b0191SHector Martin device_type = "cpu"; 987b0b0191SHector Martin reg = <0x0 0x10900>; 997b0b0191SHector Martin enable-method = "spin-table"; 1007b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 10183fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 10283fb5b55SRob Herring i-cache-size = <0x30000>; 10383fb5b55SRob Herring d-cache-size = <0x20000>; 104d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 105d32c1530SHector Martin capacity-dmips-mhz = <1024>; 106d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1077b0b0191SHector Martin }; 1087b0b0191SHector Martin 1097b0b0191SHector Martin cpu_p21: cpu@10901 { 1107b0b0191SHector Martin compatible = "apple,firestorm"; 1117b0b0191SHector Martin device_type = "cpu"; 1127b0b0191SHector Martin reg = <0x0 0x10901>; 1137b0b0191SHector Martin enable-method = "spin-table"; 1147b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 11583fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 11683fb5b55SRob Herring i-cache-size = <0x30000>; 11783fb5b55SRob Herring d-cache-size = <0x20000>; 118d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 119d32c1530SHector Martin capacity-dmips-mhz = <1024>; 120d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1217b0b0191SHector Martin }; 1227b0b0191SHector Martin 1237b0b0191SHector Martin cpu_p22: cpu@10902 { 1247b0b0191SHector Martin compatible = "apple,firestorm"; 1257b0b0191SHector Martin device_type = "cpu"; 1267b0b0191SHector Martin reg = <0x0 0x10902>; 1277b0b0191SHector Martin enable-method = "spin-table"; 1287b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 12983fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 13083fb5b55SRob Herring i-cache-size = <0x30000>; 13183fb5b55SRob Herring d-cache-size = <0x20000>; 132d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 133d32c1530SHector Martin capacity-dmips-mhz = <1024>; 134d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1357b0b0191SHector Martin }; 1367b0b0191SHector Martin 1377b0b0191SHector Martin cpu_p23: cpu@10903 { 1387b0b0191SHector Martin compatible = "apple,firestorm"; 1397b0b0191SHector Martin device_type = "cpu"; 1407b0b0191SHector Martin reg = <0x0 0x10903>; 1417b0b0191SHector Martin enable-method = "spin-table"; 1427b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 14383fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 14483fb5b55SRob Herring i-cache-size = <0x30000>; 14583fb5b55SRob Herring d-cache-size = <0x20000>; 146d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 147d32c1530SHector Martin capacity-dmips-mhz = <1024>; 148d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1497b0b0191SHector Martin }; 1507b0b0191SHector Martin 1517b0b0191SHector Martin cpu_p30: cpu@10a00 { 1527b0b0191SHector Martin compatible = "apple,firestorm"; 1537b0b0191SHector Martin device_type = "cpu"; 1547b0b0191SHector Martin reg = <0x0 0x10a00>; 1557b0b0191SHector Martin enable-method = "spin-table"; 1567b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 15783fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 15883fb5b55SRob Herring i-cache-size = <0x30000>; 15983fb5b55SRob Herring d-cache-size = <0x20000>; 160d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 161d32c1530SHector Martin capacity-dmips-mhz = <1024>; 162d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 1637b0b0191SHector Martin }; 1647b0b0191SHector Martin 1657b0b0191SHector Martin cpu_p31: cpu@10a01 { 1667b0b0191SHector Martin compatible = "apple,firestorm"; 1677b0b0191SHector Martin device_type = "cpu"; 1687b0b0191SHector Martin reg = <0x0 0x10a01>; 1697b0b0191SHector Martin enable-method = "spin-table"; 1707b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 17183fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 17283fb5b55SRob Herring i-cache-size = <0x30000>; 17383fb5b55SRob Herring d-cache-size = <0x20000>; 174d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 175d32c1530SHector Martin capacity-dmips-mhz = <1024>; 176d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 1777b0b0191SHector Martin }; 1787b0b0191SHector Martin 1797b0b0191SHector Martin cpu_p32: cpu@10a02 { 1807b0b0191SHector Martin compatible = "apple,firestorm"; 1817b0b0191SHector Martin device_type = "cpu"; 1827b0b0191SHector Martin reg = <0x0 0x10a02>; 1837b0b0191SHector Martin enable-method = "spin-table"; 1847b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 18583fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 18683fb5b55SRob Herring i-cache-size = <0x30000>; 18783fb5b55SRob Herring d-cache-size = <0x20000>; 188d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 189d32c1530SHector Martin capacity-dmips-mhz = <1024>; 190d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 1917b0b0191SHector Martin }; 1927b0b0191SHector Martin 1937b0b0191SHector Martin cpu_p33: cpu@10a03 { 1947b0b0191SHector Martin compatible = "apple,firestorm"; 1957b0b0191SHector Martin device_type = "cpu"; 1967b0b0191SHector Martin reg = <0x0 0x10a03>; 1977b0b0191SHector Martin enable-method = "spin-table"; 1987b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 19983fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 20083fb5b55SRob Herring i-cache-size = <0x30000>; 20183fb5b55SRob Herring d-cache-size = <0x20000>; 202d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 203d32c1530SHector Martin capacity-dmips-mhz = <1024>; 204d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 20583fb5b55SRob Herring }; 20683fb5b55SRob Herring 20783fb5b55SRob Herring l2_cache_3: l2-cache-3 { 20883fb5b55SRob Herring compatible = "cache"; 20983fb5b55SRob Herring cache-level = <2>; 21083fb5b55SRob Herring cache-unified; 21183fb5b55SRob Herring cache-size = <0x400000>; 21283fb5b55SRob Herring }; 21383fb5b55SRob Herring 21483fb5b55SRob Herring l2_cache_4: l2-cache-4 { 21583fb5b55SRob Herring compatible = "cache"; 21683fb5b55SRob Herring cache-level = <2>; 21783fb5b55SRob Herring cache-unified; 21883fb5b55SRob Herring cache-size = <0xc00000>; 21983fb5b55SRob Herring }; 22083fb5b55SRob Herring 22183fb5b55SRob Herring l2_cache_5: l2-cache-5 { 22283fb5b55SRob Herring compatible = "cache"; 22383fb5b55SRob Herring cache-level = <2>; 22483fb5b55SRob Herring cache-unified; 22583fb5b55SRob Herring cache-size = <0xc00000>; 2267b0b0191SHector Martin }; 2277b0b0191SHector Martin }; 2287b0b0191SHector Martin 2297b0b0191SHector Martin die0: soc@200000000 { 2307b0b0191SHector Martin compatible = "simple-bus"; 2317b0b0191SHector Martin #address-cells = <2>; 2327b0b0191SHector Martin #size-cells = <2>; 2337b0b0191SHector Martin ranges = <0x2 0x0 0x2 0x0 0x4 0x0>, 2347b0b0191SHector Martin <0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>, 2357b0b0191SHector Martin <0x7 0x0 0x7 0x0 0xf 0x80000000>; 2367b0b0191SHector Martin nonposted-mmio; 2377b0b0191SHector Martin 2387b0b0191SHector Martin // filled via templated includes at the end of the file 2397b0b0191SHector Martin }; 2407b0b0191SHector Martin 2417b0b0191SHector Martin die1: soc@2200000000 { 2427b0b0191SHector Martin compatible = "simple-bus"; 2437b0b0191SHector Martin #address-cells = <2>; 2447b0b0191SHector Martin #size-cells = <2>; 2457b0b0191SHector Martin ranges = <0x2 0x0 0x22 0x0 0x4 0x0>, 2467b0b0191SHector Martin <0x7 0x0 0x27 0x0 0xf 0x80000000>; 2477b0b0191SHector Martin nonposted-mmio; 2487b0b0191SHector Martin 2497b0b0191SHector Martin // filled via templated includes at the end of the file 2507b0b0191SHector Martin }; 2517b0b0191SHector Martin}; 2527b0b0191SHector Martin 2537b0b0191SHector Martin#define DIE 2547b0b0191SHector Martin#define DIE_NO 0 2557b0b0191SHector Martin 2567b0b0191SHector Martin&die0 { 2577b0b0191SHector Martin #include "t600x-die0.dtsi" 2587b0b0191SHector Martin #include "t600x-dieX.dtsi" 2597b0b0191SHector Martin}; 2607b0b0191SHector Martin 2617b0b0191SHector Martin#include "t600x-pmgr.dtsi" 2627b0b0191SHector Martin#include "t600x-gpio-pins.dtsi" 2637b0b0191SHector Martin 2647b0b0191SHector Martin#undef DIE 2657b0b0191SHector Martin#undef DIE_NO 2667b0b0191SHector Martin 2677b0b0191SHector Martin#define DIE _die1 2687b0b0191SHector Martin#define DIE_NO 1 2697b0b0191SHector Martin 2707b0b0191SHector Martin&die1 { 2717b0b0191SHector Martin #include "t600x-dieX.dtsi" 2727b0b0191SHector Martin #include "t600x-nvme.dtsi" 2737b0b0191SHector Martin}; 2747b0b0191SHector Martin 2757b0b0191SHector Martin#include "t600x-pmgr.dtsi" 2767b0b0191SHector Martin 2777b0b0191SHector Martin#undef DIE 2787b0b0191SHector Martin#undef DIE_NO 2797b0b0191SHector Martin 2807b0b0191SHector Martin&aic { 2817b0b0191SHector Martin affinities { 2827b0b0191SHector Martin e-core-pmu-affinity { 2837b0b0191SHector Martin apple,fiq-index = <AIC_CPU_PMU_E>; 2847b0b0191SHector Martin cpus = <&cpu_e00 &cpu_e01 2857b0b0191SHector Martin &cpu_e10 &cpu_e11>; 2867b0b0191SHector Martin }; 2877b0b0191SHector Martin 2887b0b0191SHector Martin p-core-pmu-affinity { 2897b0b0191SHector Martin apple,fiq-index = <AIC_CPU_PMU_P>; 2907b0b0191SHector Martin cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03 2917b0b0191SHector Martin &cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13 2927b0b0191SHector Martin &cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23 2937b0b0191SHector Martin &cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>; 2947b0b0191SHector Martin }; 2957b0b0191SHector Martin }; 2967b0b0191SHector Martin}; 297*67327f12SAsahi Lina 298*67327f12SAsahi Lina&ps_gfx { 299*67327f12SAsahi Lina // On t6002, the die0 GPU power domain needs both AFR power domains 300*67327f12SAsahi Lina power-domains = <&ps_afr>, <&ps_afr_die1>; 301*67327f12SAsahi Lina}; 302