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