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