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 {
267b0b0191SHector Martin		cpu_e10: cpu@800 {
277b0b0191SHector Martin			compatible = "apple,icestorm";
287b0b0191SHector Martin			device_type = "cpu";
297b0b0191SHector Martin			reg = <0x0 0x800>;
307b0b0191SHector Martin			enable-method = "spin-table";
317b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
32*83fb5b55SRob Herring			next-level-cache = <&l2_cache_3>;
33*83fb5b55SRob Herring			i-cache-size = <0x20000>;
34*83fb5b55SRob Herring			d-cache-size = <0x10000>;
357b0b0191SHector Martin		};
367b0b0191SHector Martin
377b0b0191SHector Martin		cpu_e11: cpu@801 {
387b0b0191SHector Martin			compatible = "apple,icestorm";
397b0b0191SHector Martin			device_type = "cpu";
407b0b0191SHector Martin			reg = <0x0 0x801>;
417b0b0191SHector Martin			enable-method = "spin-table";
427b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
43*83fb5b55SRob Herring			next-level-cache = <&l2_cache_3>;
44*83fb5b55SRob Herring			i-cache-size = <0x20000>;
45*83fb5b55SRob Herring			d-cache-size = <0x10000>;
467b0b0191SHector Martin		};
477b0b0191SHector Martin
487b0b0191SHector Martin		cpu_p20: cpu@10900 {
497b0b0191SHector Martin			compatible = "apple,firestorm";
507b0b0191SHector Martin			device_type = "cpu";
517b0b0191SHector Martin			reg = <0x0 0x10900>;
527b0b0191SHector Martin			enable-method = "spin-table";
537b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
54*83fb5b55SRob Herring			next-level-cache = <&l2_cache_4>;
55*83fb5b55SRob Herring			i-cache-size = <0x30000>;
56*83fb5b55SRob Herring			d-cache-size = <0x20000>;
577b0b0191SHector Martin		};
587b0b0191SHector Martin
597b0b0191SHector Martin		cpu_p21: cpu@10901 {
607b0b0191SHector Martin			compatible = "apple,firestorm";
617b0b0191SHector Martin			device_type = "cpu";
627b0b0191SHector Martin			reg = <0x0 0x10901>;
637b0b0191SHector Martin			enable-method = "spin-table";
647b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
65*83fb5b55SRob Herring			next-level-cache = <&l2_cache_4>;
66*83fb5b55SRob Herring			i-cache-size = <0x30000>;
67*83fb5b55SRob Herring			d-cache-size = <0x20000>;
687b0b0191SHector Martin		};
697b0b0191SHector Martin
707b0b0191SHector Martin		cpu_p22: cpu@10902 {
717b0b0191SHector Martin			compatible = "apple,firestorm";
727b0b0191SHector Martin			device_type = "cpu";
737b0b0191SHector Martin			reg = <0x0 0x10902>;
747b0b0191SHector Martin			enable-method = "spin-table";
757b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
76*83fb5b55SRob Herring			next-level-cache = <&l2_cache_4>;
77*83fb5b55SRob Herring			i-cache-size = <0x30000>;
78*83fb5b55SRob Herring			d-cache-size = <0x20000>;
797b0b0191SHector Martin		};
807b0b0191SHector Martin
817b0b0191SHector Martin		cpu_p23: cpu@10903 {
827b0b0191SHector Martin			compatible = "apple,firestorm";
837b0b0191SHector Martin			device_type = "cpu";
847b0b0191SHector Martin			reg = <0x0 0x10903>;
857b0b0191SHector Martin			enable-method = "spin-table";
867b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
87*83fb5b55SRob Herring			next-level-cache = <&l2_cache_4>;
88*83fb5b55SRob Herring			i-cache-size = <0x30000>;
89*83fb5b55SRob Herring			d-cache-size = <0x20000>;
907b0b0191SHector Martin		};
917b0b0191SHector Martin
927b0b0191SHector Martin		cpu_p30: cpu@10a00 {
937b0b0191SHector Martin			compatible = "apple,firestorm";
947b0b0191SHector Martin			device_type = "cpu";
957b0b0191SHector Martin			reg = <0x0 0x10a00>;
967b0b0191SHector Martin			enable-method = "spin-table";
977b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
98*83fb5b55SRob Herring			next-level-cache = <&l2_cache_5>;
99*83fb5b55SRob Herring			i-cache-size = <0x30000>;
100*83fb5b55SRob Herring			d-cache-size = <0x20000>;
1017b0b0191SHector Martin		};
1027b0b0191SHector Martin
1037b0b0191SHector Martin		cpu_p31: cpu@10a01 {
1047b0b0191SHector Martin			compatible = "apple,firestorm";
1057b0b0191SHector Martin			device_type = "cpu";
1067b0b0191SHector Martin			reg = <0x0 0x10a01>;
1077b0b0191SHector Martin			enable-method = "spin-table";
1087b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
109*83fb5b55SRob Herring			next-level-cache = <&l2_cache_5>;
110*83fb5b55SRob Herring			i-cache-size = <0x30000>;
111*83fb5b55SRob Herring			d-cache-size = <0x20000>;
1127b0b0191SHector Martin		};
1137b0b0191SHector Martin
1147b0b0191SHector Martin		cpu_p32: cpu@10a02 {
1157b0b0191SHector Martin			compatible = "apple,firestorm";
1167b0b0191SHector Martin			device_type = "cpu";
1177b0b0191SHector Martin			reg = <0x0 0x10a02>;
1187b0b0191SHector Martin			enable-method = "spin-table";
1197b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
120*83fb5b55SRob Herring			next-level-cache = <&l2_cache_5>;
121*83fb5b55SRob Herring			i-cache-size = <0x30000>;
122*83fb5b55SRob Herring			d-cache-size = <0x20000>;
1237b0b0191SHector Martin		};
1247b0b0191SHector Martin
1257b0b0191SHector Martin		cpu_p33: cpu@10a03 {
1267b0b0191SHector Martin			compatible = "apple,firestorm";
1277b0b0191SHector Martin			device_type = "cpu";
1287b0b0191SHector Martin			reg = <0x0 0x10a03>;
1297b0b0191SHector Martin			enable-method = "spin-table";
1307b0b0191SHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
131*83fb5b55SRob Herring			next-level-cache = <&l2_cache_5>;
132*83fb5b55SRob Herring			i-cache-size = <0x30000>;
133*83fb5b55SRob Herring			d-cache-size = <0x20000>;
134*83fb5b55SRob Herring		};
135*83fb5b55SRob Herring
136*83fb5b55SRob Herring		l2_cache_3: l2-cache-3 {
137*83fb5b55SRob Herring			compatible = "cache";
138*83fb5b55SRob Herring			cache-level = <2>;
139*83fb5b55SRob Herring			cache-unified;
140*83fb5b55SRob Herring			cache-size = <0x400000>;
141*83fb5b55SRob Herring		};
142*83fb5b55SRob Herring
143*83fb5b55SRob Herring		l2_cache_4: l2-cache-4 {
144*83fb5b55SRob Herring			compatible = "cache";
145*83fb5b55SRob Herring			cache-level = <2>;
146*83fb5b55SRob Herring			cache-unified;
147*83fb5b55SRob Herring			cache-size = <0xc00000>;
148*83fb5b55SRob Herring		};
149*83fb5b55SRob Herring
150*83fb5b55SRob Herring		l2_cache_5: l2-cache-5 {
151*83fb5b55SRob Herring			compatible = "cache";
152*83fb5b55SRob Herring			cache-level = <2>;
153*83fb5b55SRob Herring			cache-unified;
154*83fb5b55SRob Herring			cache-size = <0xc00000>;
1557b0b0191SHector Martin		};
1567b0b0191SHector Martin	};
1577b0b0191SHector Martin
1587b0b0191SHector Martin	die0: soc@200000000 {
1597b0b0191SHector Martin		compatible = "simple-bus";
1607b0b0191SHector Martin		#address-cells = <2>;
1617b0b0191SHector Martin		#size-cells = <2>;
1627b0b0191SHector Martin		ranges = <0x2 0x0 0x2 0x0 0x4 0x0>,
1637b0b0191SHector Martin			 <0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>,
1647b0b0191SHector Martin			 <0x7 0x0 0x7 0x0 0xf 0x80000000>;
1657b0b0191SHector Martin		nonposted-mmio;
1667b0b0191SHector Martin
1677b0b0191SHector Martin		// filled via templated includes at the end of the file
1687b0b0191SHector Martin	};
1697b0b0191SHector Martin
1707b0b0191SHector Martin	die1: soc@2200000000 {
1717b0b0191SHector Martin		compatible = "simple-bus";
1727b0b0191SHector Martin		#address-cells = <2>;
1737b0b0191SHector Martin		#size-cells = <2>;
1747b0b0191SHector Martin		ranges = <0x2 0x0 0x22 0x0 0x4 0x0>,
1757b0b0191SHector Martin			 <0x7 0x0 0x27 0x0 0xf 0x80000000>;
1767b0b0191SHector Martin		nonposted-mmio;
1777b0b0191SHector Martin
1787b0b0191SHector Martin		// filled via templated includes at the end of the file
1797b0b0191SHector Martin	};
1807b0b0191SHector Martin};
1817b0b0191SHector Martin
1827b0b0191SHector Martin#define DIE
1837b0b0191SHector Martin#define DIE_NO 0
1847b0b0191SHector Martin
1857b0b0191SHector Martin&die0 {
1867b0b0191SHector Martin	#include "t600x-die0.dtsi"
1877b0b0191SHector Martin	#include "t600x-dieX.dtsi"
1887b0b0191SHector Martin};
1897b0b0191SHector Martin
1907b0b0191SHector Martin#include "t600x-pmgr.dtsi"
1917b0b0191SHector Martin#include "t600x-gpio-pins.dtsi"
1927b0b0191SHector Martin
1937b0b0191SHector Martin#undef DIE
1947b0b0191SHector Martin#undef DIE_NO
1957b0b0191SHector Martin
1967b0b0191SHector Martin#define DIE _die1
1977b0b0191SHector Martin#define DIE_NO 1
1987b0b0191SHector Martin
1997b0b0191SHector Martin&die1 {
2007b0b0191SHector Martin	#include "t600x-dieX.dtsi"
2017b0b0191SHector Martin	#include "t600x-nvme.dtsi"
2027b0b0191SHector Martin};
2037b0b0191SHector Martin
2047b0b0191SHector Martin#include "t600x-pmgr.dtsi"
2057b0b0191SHector Martin
2067b0b0191SHector Martin#undef DIE
2077b0b0191SHector Martin#undef DIE_NO
2087b0b0191SHector Martin
2097b0b0191SHector Martin
2107b0b0191SHector Martin&aic {
2117b0b0191SHector Martin	affinities {
2127b0b0191SHector Martin		e-core-pmu-affinity {
2137b0b0191SHector Martin			apple,fiq-index = <AIC_CPU_PMU_E>;
2147b0b0191SHector Martin			cpus = <&cpu_e00 &cpu_e01
2157b0b0191SHector Martin				&cpu_e10 &cpu_e11>;
2167b0b0191SHector Martin		};
2177b0b0191SHector Martin
2187b0b0191SHector Martin		p-core-pmu-affinity {
2197b0b0191SHector Martin			apple,fiq-index = <AIC_CPU_PMU_P>;
2207b0b0191SHector Martin			cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03
2217b0b0191SHector Martin				&cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13
2227b0b0191SHector Martin				&cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23
2237b0b0191SHector Martin				&cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>;
2247b0b0191SHector Martin		};
2257b0b0191SHector Martin	};
2267b0b0191SHector Martin};
227