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> 14d8bf8208SHector Martin#include <dt-bindings/spmi/spmi.h> 157b0b0191SHector Martin 167b0b0191SHector Martin#include "multi-die-cpp.h" 177b0b0191SHector Martin 187b0b0191SHector Martin#include "t600x-common.dtsi" 197b0b0191SHector Martin 207b0b0191SHector Martin/ { 217b0b0191SHector Martin compatible = "apple,t6002", "apple,arm-platform"; 227b0b0191SHector Martin 237b0b0191SHector Martin #address-cells = <2>; 247b0b0191SHector Martin #size-cells = <2>; 257b0b0191SHector Martin 267b0b0191SHector Martin cpus { 27d32c1530SHector Martin cpu-map { 28d32c1530SHector Martin cluster3 { 29d32c1530SHector Martin core0 { 30d32c1530SHector Martin cpu = <&cpu_e10>; 31d32c1530SHector Martin }; 32d32c1530SHector Martin core1 { 33d32c1530SHector Martin cpu = <&cpu_e11>; 34d32c1530SHector Martin }; 35d32c1530SHector Martin }; 36d32c1530SHector Martin 37d32c1530SHector Martin cluster4 { 38d32c1530SHector Martin core0 { 39d32c1530SHector Martin cpu = <&cpu_p20>; 40d32c1530SHector Martin }; 41d32c1530SHector Martin core1 { 42d32c1530SHector Martin cpu = <&cpu_p21>; 43d32c1530SHector Martin }; 44d32c1530SHector Martin core2 { 45d32c1530SHector Martin cpu = <&cpu_p22>; 46d32c1530SHector Martin }; 47d32c1530SHector Martin core3 { 48d32c1530SHector Martin cpu = <&cpu_p23>; 49d32c1530SHector Martin }; 50d32c1530SHector Martin }; 51d32c1530SHector Martin 52d32c1530SHector Martin cluster5 { 53d32c1530SHector Martin core0 { 54d32c1530SHector Martin cpu = <&cpu_p30>; 55d32c1530SHector Martin }; 56d32c1530SHector Martin core1 { 57d32c1530SHector Martin cpu = <&cpu_p31>; 58d32c1530SHector Martin }; 59d32c1530SHector Martin core2 { 60d32c1530SHector Martin cpu = <&cpu_p32>; 61d32c1530SHector Martin }; 62d32c1530SHector Martin core3 { 63d32c1530SHector Martin cpu = <&cpu_p33>; 64d32c1530SHector Martin }; 65d32c1530SHector Martin }; 66d32c1530SHector Martin }; 67d32c1530SHector Martin 687b0b0191SHector Martin cpu_e10: cpu@800 { 697b0b0191SHector Martin compatible = "apple,icestorm"; 707b0b0191SHector Martin device_type = "cpu"; 717b0b0191SHector Martin reg = <0x0 0x800>; 727b0b0191SHector Martin enable-method = "spin-table"; 737b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 7483fb5b55SRob Herring next-level-cache = <&l2_cache_3>; 7583fb5b55SRob Herring i-cache-size = <0x20000>; 7683fb5b55SRob Herring d-cache-size = <0x10000>; 77d32c1530SHector Martin operating-points-v2 = <&icestorm_opp>; 78d32c1530SHector Martin capacity-dmips-mhz = <714>; 79d32c1530SHector Martin performance-domains = <&cpufreq_e_die1>; 807b0b0191SHector Martin }; 817b0b0191SHector Martin 827b0b0191SHector Martin cpu_e11: cpu@801 { 837b0b0191SHector Martin compatible = "apple,icestorm"; 847b0b0191SHector Martin device_type = "cpu"; 857b0b0191SHector Martin reg = <0x0 0x801>; 867b0b0191SHector Martin enable-method = "spin-table"; 877b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 8883fb5b55SRob Herring next-level-cache = <&l2_cache_3>; 8983fb5b55SRob Herring i-cache-size = <0x20000>; 9083fb5b55SRob Herring d-cache-size = <0x10000>; 91d32c1530SHector Martin operating-points-v2 = <&icestorm_opp>; 92d32c1530SHector Martin capacity-dmips-mhz = <714>; 93d32c1530SHector Martin performance-domains = <&cpufreq_e_die1>; 947b0b0191SHector Martin }; 957b0b0191SHector Martin 967b0b0191SHector Martin cpu_p20: cpu@10900 { 977b0b0191SHector Martin compatible = "apple,firestorm"; 987b0b0191SHector Martin device_type = "cpu"; 997b0b0191SHector Martin reg = <0x0 0x10900>; 1007b0b0191SHector Martin enable-method = "spin-table"; 1017b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 10283fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 10383fb5b55SRob Herring i-cache-size = <0x30000>; 10483fb5b55SRob Herring d-cache-size = <0x20000>; 105d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 106d32c1530SHector Martin capacity-dmips-mhz = <1024>; 107d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1087b0b0191SHector Martin }; 1097b0b0191SHector Martin 1107b0b0191SHector Martin cpu_p21: cpu@10901 { 1117b0b0191SHector Martin compatible = "apple,firestorm"; 1127b0b0191SHector Martin device_type = "cpu"; 1137b0b0191SHector Martin reg = <0x0 0x10901>; 1147b0b0191SHector Martin enable-method = "spin-table"; 1157b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 11683fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 11783fb5b55SRob Herring i-cache-size = <0x30000>; 11883fb5b55SRob Herring d-cache-size = <0x20000>; 119d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 120d32c1530SHector Martin capacity-dmips-mhz = <1024>; 121d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1227b0b0191SHector Martin }; 1237b0b0191SHector Martin 1247b0b0191SHector Martin cpu_p22: cpu@10902 { 1257b0b0191SHector Martin compatible = "apple,firestorm"; 1267b0b0191SHector Martin device_type = "cpu"; 1277b0b0191SHector Martin reg = <0x0 0x10902>; 1287b0b0191SHector Martin enable-method = "spin-table"; 1297b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 13083fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 13183fb5b55SRob Herring i-cache-size = <0x30000>; 13283fb5b55SRob Herring d-cache-size = <0x20000>; 133d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 134d32c1530SHector Martin capacity-dmips-mhz = <1024>; 135d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1367b0b0191SHector Martin }; 1377b0b0191SHector Martin 1387b0b0191SHector Martin cpu_p23: cpu@10903 { 1397b0b0191SHector Martin compatible = "apple,firestorm"; 1407b0b0191SHector Martin device_type = "cpu"; 1417b0b0191SHector Martin reg = <0x0 0x10903>; 1427b0b0191SHector Martin enable-method = "spin-table"; 1437b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 14483fb5b55SRob Herring next-level-cache = <&l2_cache_4>; 14583fb5b55SRob Herring i-cache-size = <0x30000>; 14683fb5b55SRob Herring d-cache-size = <0x20000>; 147d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 148d32c1530SHector Martin capacity-dmips-mhz = <1024>; 149d32c1530SHector Martin performance-domains = <&cpufreq_p0_die1>; 1507b0b0191SHector Martin }; 1517b0b0191SHector Martin 1527b0b0191SHector Martin cpu_p30: cpu@10a00 { 1537b0b0191SHector Martin compatible = "apple,firestorm"; 1547b0b0191SHector Martin device_type = "cpu"; 1557b0b0191SHector Martin reg = <0x0 0x10a00>; 1567b0b0191SHector Martin enable-method = "spin-table"; 1577b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 15883fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 15983fb5b55SRob Herring i-cache-size = <0x30000>; 16083fb5b55SRob Herring d-cache-size = <0x20000>; 161d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 162d32c1530SHector Martin capacity-dmips-mhz = <1024>; 163d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 1647b0b0191SHector Martin }; 1657b0b0191SHector Martin 1667b0b0191SHector Martin cpu_p31: cpu@10a01 { 1677b0b0191SHector Martin compatible = "apple,firestorm"; 1687b0b0191SHector Martin device_type = "cpu"; 1697b0b0191SHector Martin reg = <0x0 0x10a01>; 1707b0b0191SHector Martin enable-method = "spin-table"; 1717b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 17283fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 17383fb5b55SRob Herring i-cache-size = <0x30000>; 17483fb5b55SRob Herring d-cache-size = <0x20000>; 175d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 176d32c1530SHector Martin capacity-dmips-mhz = <1024>; 177d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 1787b0b0191SHector Martin }; 1797b0b0191SHector Martin 1807b0b0191SHector Martin cpu_p32: cpu@10a02 { 1817b0b0191SHector Martin compatible = "apple,firestorm"; 1827b0b0191SHector Martin device_type = "cpu"; 1837b0b0191SHector Martin reg = <0x0 0x10a02>; 1847b0b0191SHector Martin enable-method = "spin-table"; 1857b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 18683fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 18783fb5b55SRob Herring i-cache-size = <0x30000>; 18883fb5b55SRob Herring d-cache-size = <0x20000>; 189d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 190d32c1530SHector Martin capacity-dmips-mhz = <1024>; 191d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 1927b0b0191SHector Martin }; 1937b0b0191SHector Martin 1947b0b0191SHector Martin cpu_p33: cpu@10a03 { 1957b0b0191SHector Martin compatible = "apple,firestorm"; 1967b0b0191SHector Martin device_type = "cpu"; 1977b0b0191SHector Martin reg = <0x0 0x10a03>; 1987b0b0191SHector Martin enable-method = "spin-table"; 1997b0b0191SHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 20083fb5b55SRob Herring next-level-cache = <&l2_cache_5>; 20183fb5b55SRob Herring i-cache-size = <0x30000>; 20283fb5b55SRob Herring d-cache-size = <0x20000>; 203d32c1530SHector Martin operating-points-v2 = <&firestorm_opp>; 204d32c1530SHector Martin capacity-dmips-mhz = <1024>; 205d32c1530SHector Martin performance-domains = <&cpufreq_p1_die1>; 20683fb5b55SRob Herring }; 20783fb5b55SRob Herring 20883fb5b55SRob Herring l2_cache_3: l2-cache-3 { 20983fb5b55SRob Herring compatible = "cache"; 21083fb5b55SRob Herring cache-level = <2>; 21183fb5b55SRob Herring cache-unified; 21283fb5b55SRob Herring cache-size = <0x400000>; 21383fb5b55SRob Herring }; 21483fb5b55SRob Herring 21583fb5b55SRob Herring l2_cache_4: l2-cache-4 { 21683fb5b55SRob Herring compatible = "cache"; 21783fb5b55SRob Herring cache-level = <2>; 21883fb5b55SRob Herring cache-unified; 21983fb5b55SRob Herring cache-size = <0xc00000>; 22083fb5b55SRob Herring }; 22183fb5b55SRob Herring 22283fb5b55SRob Herring l2_cache_5: l2-cache-5 { 22383fb5b55SRob Herring compatible = "cache"; 22483fb5b55SRob Herring cache-level = <2>; 22583fb5b55SRob Herring cache-unified; 22683fb5b55SRob Herring cache-size = <0xc00000>; 2277b0b0191SHector Martin }; 2287b0b0191SHector Martin }; 2297b0b0191SHector Martin 2307b0b0191SHector Martin die0: soc@200000000 { 2317b0b0191SHector Martin compatible = "simple-bus"; 2327b0b0191SHector Martin #address-cells = <2>; 2337b0b0191SHector Martin #size-cells = <2>; 2347b0b0191SHector Martin ranges = <0x2 0x0 0x2 0x0 0x4 0x0>, 2357b0b0191SHector Martin <0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>, 2367b0b0191SHector Martin <0x7 0x0 0x7 0x0 0xf 0x80000000>; 2377b0b0191SHector Martin nonposted-mmio; 2387b0b0191SHector Martin 2397b0b0191SHector Martin // filled via templated includes at the end of the file 2407b0b0191SHector Martin }; 2417b0b0191SHector Martin 2427b0b0191SHector Martin die1: soc@2200000000 { 2437b0b0191SHector Martin compatible = "simple-bus"; 2447b0b0191SHector Martin #address-cells = <2>; 2457b0b0191SHector Martin #size-cells = <2>; 2467b0b0191SHector Martin ranges = <0x2 0x0 0x22 0x0 0x4 0x0>, 2477b0b0191SHector Martin <0x7 0x0 0x27 0x0 0xf 0x80000000>; 2487b0b0191SHector Martin nonposted-mmio; 2497b0b0191SHector Martin 2507b0b0191SHector Martin // filled via templated includes at the end of the file 2517b0b0191SHector Martin }; 2527b0b0191SHector Martin}; 2537b0b0191SHector Martin 2547b0b0191SHector Martin#define DIE 2557b0b0191SHector Martin#define DIE_NO 0 2567b0b0191SHector Martin 2577b0b0191SHector Martin&die0 { 2587b0b0191SHector Martin #include "t600x-die0.dtsi" 2597b0b0191SHector Martin #include "t600x-dieX.dtsi" 2607b0b0191SHector Martin}; 2617b0b0191SHector Martin 2627b0b0191SHector Martin#include "t600x-pmgr.dtsi" 2637b0b0191SHector Martin#include "t600x-gpio-pins.dtsi" 2647b0b0191SHector Martin 2657b0b0191SHector Martin#undef DIE 2667b0b0191SHector Martin#undef DIE_NO 2677b0b0191SHector Martin 2687b0b0191SHector Martin#define DIE _die1 2697b0b0191SHector Martin#define DIE_NO 1 2707b0b0191SHector Martin 2717b0b0191SHector Martin&die1 { 2727b0b0191SHector Martin #include "t600x-dieX.dtsi" 2737b0b0191SHector Martin #include "t600x-nvme.dtsi" 2747b0b0191SHector Martin}; 2757b0b0191SHector Martin 2767b0b0191SHector Martin#include "t600x-pmgr.dtsi" 2777b0b0191SHector Martin 2787b0b0191SHector Martin#undef DIE 2797b0b0191SHector Martin#undef DIE_NO 2807b0b0191SHector Martin 2817b0b0191SHector Martin&aic { 2827b0b0191SHector Martin affinities { 2837b0b0191SHector Martin e-core-pmu-affinity { 2847b0b0191SHector Martin apple,fiq-index = <AIC_CPU_PMU_E>; 2857b0b0191SHector Martin cpus = <&cpu_e00 &cpu_e01 2867b0b0191SHector Martin &cpu_e10 &cpu_e11>; 2877b0b0191SHector Martin }; 2887b0b0191SHector Martin 2897b0b0191SHector Martin p-core-pmu-affinity { 2907b0b0191SHector Martin apple,fiq-index = <AIC_CPU_PMU_P>; 2917b0b0191SHector Martin cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03 2927b0b0191SHector Martin &cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13 2937b0b0191SHector Martin &cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23 2947b0b0191SHector Martin &cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>; 2957b0b0191SHector Martin }; 2967b0b0191SHector Martin }; 2977b0b0191SHector Martin}; 29867327f12SAsahi Lina 29967327f12SAsahi Lina&ps_gfx { 30067327f12SAsahi Lina // On t6002, the die0 GPU power domain needs both AFR power domains 30167327f12SAsahi Lina power-domains = <&ps_afr>, <&ps_afr_die1>; 30267327f12SAsahi Lina}; 303*76f3ffebSSasha Finkelstein 304*76f3ffebSSasha Finkelstein&gpu { 305*76f3ffebSSasha Finkelstein compatible = "apple,agx-g13d", "apple,agx-g13s"; 306*76f3ffebSSasha Finkelstein}; 307