Home | History | Annotate | Line # | Download | only in apple
      1 // SPDX-License-Identifier: GPL-2.0+ OR MIT
      2 /*
      3  * Apple T6002 "M1 Ultra" SoC
      4  *
      5  * Other names: H13J, "Jade 2C"
      6  *
      7  * Copyright The Asahi Linux Contributors
      8  */
      9 
     10 #include <dt-bindings/gpio/gpio.h>
     11 #include <dt-bindings/interrupt-controller/apple-aic.h>
     12 #include <dt-bindings/interrupt-controller/irq.h>
     13 #include <dt-bindings/pinctrl/apple.h>
     14 
     15 #include "multi-die-cpp.h"
     16 
     17 #include "t600x-common.dtsi"
     18 
     19 / {
     20 	compatible = "apple,t6002", "apple,arm-platform";
     21 
     22 	#address-cells = <2>;
     23 	#size-cells = <2>;
     24 
     25 	cpus {
     26 		cpu-map {
     27 			cluster3 {
     28 				core0 {
     29 					cpu = <&cpu_e10>;
     30 				};
     31 				core1 {
     32 					cpu = <&cpu_e11>;
     33 				};
     34 			};
     35 
     36 			cluster4 {
     37 				core0 {
     38 					cpu = <&cpu_p20>;
     39 				};
     40 				core1 {
     41 					cpu = <&cpu_p21>;
     42 				};
     43 				core2 {
     44 					cpu = <&cpu_p22>;
     45 				};
     46 				core3 {
     47 					cpu = <&cpu_p23>;
     48 				};
     49 			};
     50 
     51 			cluster5 {
     52 				core0 {
     53 					cpu = <&cpu_p30>;
     54 				};
     55 				core1 {
     56 					cpu = <&cpu_p31>;
     57 				};
     58 				core2 {
     59 					cpu = <&cpu_p32>;
     60 				};
     61 				core3 {
     62 					cpu = <&cpu_p33>;
     63 				};
     64 			};
     65 		};
     66 
     67 		cpu_e10: cpu@800 {
     68 			compatible = "apple,icestorm";
     69 			device_type = "cpu";
     70 			reg = <0x0 0x800>;
     71 			enable-method = "spin-table";
     72 			cpu-release-addr = <0 0>; /* To be filled by loader */
     73 			next-level-cache = <&l2_cache_3>;
     74 			i-cache-size = <0x20000>;
     75 			d-cache-size = <0x10000>;
     76 			operating-points-v2 = <&icestorm_opp>;
     77 			capacity-dmips-mhz = <714>;
     78 			performance-domains = <&cpufreq_e_die1>;
     79 		};
     80 
     81 		cpu_e11: cpu@801 {
     82 			compatible = "apple,icestorm";
     83 			device_type = "cpu";
     84 			reg = <0x0 0x801>;
     85 			enable-method = "spin-table";
     86 			cpu-release-addr = <0 0>; /* To be filled by loader */
     87 			next-level-cache = <&l2_cache_3>;
     88 			i-cache-size = <0x20000>;
     89 			d-cache-size = <0x10000>;
     90 			operating-points-v2 = <&icestorm_opp>;
     91 			capacity-dmips-mhz = <714>;
     92 			performance-domains = <&cpufreq_e_die1>;
     93 		};
     94 
     95 		cpu_p20: cpu@10900 {
     96 			compatible = "apple,firestorm";
     97 			device_type = "cpu";
     98 			reg = <0x0 0x10900>;
     99 			enable-method = "spin-table";
    100 			cpu-release-addr = <0 0>; /* To be filled by loader */
    101 			next-level-cache = <&l2_cache_4>;
    102 			i-cache-size = <0x30000>;
    103 			d-cache-size = <0x20000>;
    104 			operating-points-v2 = <&firestorm_opp>;
    105 			capacity-dmips-mhz = <1024>;
    106 			performance-domains = <&cpufreq_p0_die1>;
    107 		};
    108 
    109 		cpu_p21: cpu@10901 {
    110 			compatible = "apple,firestorm";
    111 			device_type = "cpu";
    112 			reg = <0x0 0x10901>;
    113 			enable-method = "spin-table";
    114 			cpu-release-addr = <0 0>; /* To be filled by loader */
    115 			next-level-cache = <&l2_cache_4>;
    116 			i-cache-size = <0x30000>;
    117 			d-cache-size = <0x20000>;
    118 			operating-points-v2 = <&firestorm_opp>;
    119 			capacity-dmips-mhz = <1024>;
    120 			performance-domains = <&cpufreq_p0_die1>;
    121 		};
    122 
    123 		cpu_p22: cpu@10902 {
    124 			compatible = "apple,firestorm";
    125 			device_type = "cpu";
    126 			reg = <0x0 0x10902>;
    127 			enable-method = "spin-table";
    128 			cpu-release-addr = <0 0>; /* To be filled by loader */
    129 			next-level-cache = <&l2_cache_4>;
    130 			i-cache-size = <0x30000>;
    131 			d-cache-size = <0x20000>;
    132 			operating-points-v2 = <&firestorm_opp>;
    133 			capacity-dmips-mhz = <1024>;
    134 			performance-domains = <&cpufreq_p0_die1>;
    135 		};
    136 
    137 		cpu_p23: cpu@10903 {
    138 			compatible = "apple,firestorm";
    139 			device_type = "cpu";
    140 			reg = <0x0 0x10903>;
    141 			enable-method = "spin-table";
    142 			cpu-release-addr = <0 0>; /* To be filled by loader */
    143 			next-level-cache = <&l2_cache_4>;
    144 			i-cache-size = <0x30000>;
    145 			d-cache-size = <0x20000>;
    146 			operating-points-v2 = <&firestorm_opp>;
    147 			capacity-dmips-mhz = <1024>;
    148 			performance-domains = <&cpufreq_p0_die1>;
    149 		};
    150 
    151 		cpu_p30: cpu@10a00 {
    152 			compatible = "apple,firestorm";
    153 			device_type = "cpu";
    154 			reg = <0x0 0x10a00>;
    155 			enable-method = "spin-table";
    156 			cpu-release-addr = <0 0>; /* To be filled by loader */
    157 			next-level-cache = <&l2_cache_5>;
    158 			i-cache-size = <0x30000>;
    159 			d-cache-size = <0x20000>;
    160 			operating-points-v2 = <&firestorm_opp>;
    161 			capacity-dmips-mhz = <1024>;
    162 			performance-domains = <&cpufreq_p1_die1>;
    163 		};
    164 
    165 		cpu_p31: cpu@10a01 {
    166 			compatible = "apple,firestorm";
    167 			device_type = "cpu";
    168 			reg = <0x0 0x10a01>;
    169 			enable-method = "spin-table";
    170 			cpu-release-addr = <0 0>; /* To be filled by loader */
    171 			next-level-cache = <&l2_cache_5>;
    172 			i-cache-size = <0x30000>;
    173 			d-cache-size = <0x20000>;
    174 			operating-points-v2 = <&firestorm_opp>;
    175 			capacity-dmips-mhz = <1024>;
    176 			performance-domains = <&cpufreq_p1_die1>;
    177 		};
    178 
    179 		cpu_p32: cpu@10a02 {
    180 			compatible = "apple,firestorm";
    181 			device_type = "cpu";
    182 			reg = <0x0 0x10a02>;
    183 			enable-method = "spin-table";
    184 			cpu-release-addr = <0 0>; /* To be filled by loader */
    185 			next-level-cache = <&l2_cache_5>;
    186 			i-cache-size = <0x30000>;
    187 			d-cache-size = <0x20000>;
    188 			operating-points-v2 = <&firestorm_opp>;
    189 			capacity-dmips-mhz = <1024>;
    190 			performance-domains = <&cpufreq_p1_die1>;
    191 		};
    192 
    193 		cpu_p33: cpu@10a03 {
    194 			compatible = "apple,firestorm";
    195 			device_type = "cpu";
    196 			reg = <0x0 0x10a03>;
    197 			enable-method = "spin-table";
    198 			cpu-release-addr = <0 0>; /* To be filled by loader */
    199 			next-level-cache = <&l2_cache_5>;
    200 			i-cache-size = <0x30000>;
    201 			d-cache-size = <0x20000>;
    202 			operating-points-v2 = <&firestorm_opp>;
    203 			capacity-dmips-mhz = <1024>;
    204 			performance-domains = <&cpufreq_p1_die1>;
    205 		};
    206 
    207 		l2_cache_3: l2-cache-3 {
    208 			compatible = "cache";
    209 			cache-level = <2>;
    210 			cache-unified;
    211 			cache-size = <0x400000>;
    212 		};
    213 
    214 		l2_cache_4: l2-cache-4 {
    215 			compatible = "cache";
    216 			cache-level = <2>;
    217 			cache-unified;
    218 			cache-size = <0xc00000>;
    219 		};
    220 
    221 		l2_cache_5: l2-cache-5 {
    222 			compatible = "cache";
    223 			cache-level = <2>;
    224 			cache-unified;
    225 			cache-size = <0xc00000>;
    226 		};
    227 	};
    228 
    229 	die0: soc@200000000 {
    230 		compatible = "simple-bus";
    231 		#address-cells = <2>;
    232 		#size-cells = <2>;
    233 		ranges = <0x2 0x0 0x2 0x0 0x4 0x0>,
    234 			 <0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>,
    235 			 <0x7 0x0 0x7 0x0 0xf 0x80000000>;
    236 		nonposted-mmio;
    237 
    238 		// filled via templated includes at the end of the file
    239 	};
    240 
    241 	die1: soc@2200000000 {
    242 		compatible = "simple-bus";
    243 		#address-cells = <2>;
    244 		#size-cells = <2>;
    245 		ranges = <0x2 0x0 0x22 0x0 0x4 0x0>,
    246 			 <0x7 0x0 0x27 0x0 0xf 0x80000000>;
    247 		nonposted-mmio;
    248 
    249 		// filled via templated includes at the end of the file
    250 	};
    251 };
    252 
    253 #define DIE
    254 #define DIE_NO 0
    255 
    256 &die0 {
    257 	#include "t600x-die0.dtsi"
    258 	#include "t600x-dieX.dtsi"
    259 };
    260 
    261 #include "t600x-pmgr.dtsi"
    262 #include "t600x-gpio-pins.dtsi"
    263 
    264 #undef DIE
    265 #undef DIE_NO
    266 
    267 #define DIE _die1
    268 #define DIE_NO 1
    269 
    270 &die1 {
    271 	#include "t600x-dieX.dtsi"
    272 	#include "t600x-nvme.dtsi"
    273 };
    274 
    275 #include "t600x-pmgr.dtsi"
    276 
    277 #undef DIE
    278 #undef DIE_NO
    279 
    280 &aic {
    281 	affinities {
    282 		e-core-pmu-affinity {
    283 			apple,fiq-index = <AIC_CPU_PMU_E>;
    284 			cpus = <&cpu_e00 &cpu_e01
    285 				&cpu_e10 &cpu_e11>;
    286 		};
    287 
    288 		p-core-pmu-affinity {
    289 			apple,fiq-index = <AIC_CPU_PMU_P>;
    290 			cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03
    291 				&cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13
    292 				&cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23
    293 				&cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>;
    294 		};
    295 	};
    296 };
    297 
    298 &ps_gfx {
    299 	// On t6002, the die0 GPU power domain needs both AFR power domains
    300 	power-domains = <&ps_afr>, <&ps_afr_die1>;
    301 };
    302