1// SPDX-License-Identifier: GPL-2.0+ OR MIT 2/* 3 * Apple T8112 "M2" SoC 4 * 5 * Other names: H14G 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#include <dt-bindings/spmi/spmi.h> 15 16/ { 17 compatible = "apple,t8112", "apple,arm-platform"; 18 19 #address-cells = <2>; 20 #size-cells = <2>; 21 22 cpus { 23 #address-cells = <2>; 24 #size-cells = <0>; 25 26 cpu-map { 27 cluster0 { 28 core0 { 29 cpu = <&cpu_e0>; 30 }; 31 core1 { 32 cpu = <&cpu_e1>; 33 }; 34 core2 { 35 cpu = <&cpu_e2>; 36 }; 37 core3 { 38 cpu = <&cpu_e3>; 39 }; 40 }; 41 42 cluster1 { 43 core0 { 44 cpu = <&cpu_p0>; 45 }; 46 core1 { 47 cpu = <&cpu_p1>; 48 }; 49 core2 { 50 cpu = <&cpu_p2>; 51 }; 52 core3 { 53 cpu = <&cpu_p3>; 54 }; 55 }; 56 }; 57 58 cpu_e0: cpu@0 { 59 compatible = "apple,blizzard"; 60 device_type = "cpu"; 61 reg = <0x0 0x0>; 62 enable-method = "spin-table"; 63 cpu-release-addr = <0 0>; /* To be filled by loader */ 64 operating-points-v2 = <&ecluster_opp>; 65 capacity-dmips-mhz = <756>; 66 performance-domains = <&cpufreq_e>; 67 next-level-cache = <&l2_cache_0>; 68 i-cache-size = <0x20000>; 69 d-cache-size = <0x10000>; 70 }; 71 72 cpu_e1: cpu@1 { 73 compatible = "apple,blizzard"; 74 device_type = "cpu"; 75 reg = <0x0 0x1>; 76 enable-method = "spin-table"; 77 cpu-release-addr = <0 0>; /* To be filled by loader */ 78 operating-points-v2 = <&ecluster_opp>; 79 capacity-dmips-mhz = <756>; 80 performance-domains = <&cpufreq_e>; 81 next-level-cache = <&l2_cache_0>; 82 i-cache-size = <0x20000>; 83 d-cache-size = <0x10000>; 84 }; 85 86 cpu_e2: cpu@2 { 87 compatible = "apple,blizzard"; 88 device_type = "cpu"; 89 reg = <0x0 0x2>; 90 enable-method = "spin-table"; 91 cpu-release-addr = <0 0>; /* To be filled by loader */ 92 operating-points-v2 = <&ecluster_opp>; 93 capacity-dmips-mhz = <756>; 94 performance-domains = <&cpufreq_e>; 95 next-level-cache = <&l2_cache_0>; 96 i-cache-size = <0x20000>; 97 d-cache-size = <0x10000>; 98 }; 99 100 cpu_e3: cpu@3 { 101 compatible = "apple,blizzard"; 102 device_type = "cpu"; 103 reg = <0x0 0x3>; 104 enable-method = "spin-table"; 105 cpu-release-addr = <0 0>; /* To be filled by loader */ 106 operating-points-v2 = <&ecluster_opp>; 107 capacity-dmips-mhz = <756>; 108 performance-domains = <&cpufreq_e>; 109 next-level-cache = <&l2_cache_0>; 110 i-cache-size = <0x20000>; 111 d-cache-size = <0x10000>; 112 }; 113 114 cpu_p0: cpu@10100 { 115 compatible = "apple,avalanche"; 116 device_type = "cpu"; 117 reg = <0x0 0x10100>; 118 enable-method = "spin-table"; 119 cpu-release-addr = <0 0>; /* To be filled by loader */ 120 operating-points-v2 = <&pcluster_opp>; 121 capacity-dmips-mhz = <1024>; 122 performance-domains = <&cpufreq_p>; 123 next-level-cache = <&l2_cache_1>; 124 i-cache-size = <0x30000>; 125 d-cache-size = <0x20000>; 126 }; 127 128 cpu_p1: cpu@10101 { 129 compatible = "apple,avalanche"; 130 device_type = "cpu"; 131 reg = <0x0 0x10101>; 132 enable-method = "spin-table"; 133 cpu-release-addr = <0 0>; /* To be filled by loader */ 134 operating-points-v2 = <&pcluster_opp>; 135 capacity-dmips-mhz = <1024>; 136 performance-domains = <&cpufreq_p>; 137 next-level-cache = <&l2_cache_1>; 138 i-cache-size = <0x30000>; 139 d-cache-size = <0x20000>; 140 }; 141 142 cpu_p2: cpu@10102 { 143 compatible = "apple,avalanche"; 144 device_type = "cpu"; 145 reg = <0x0 0x10102>; 146 enable-method = "spin-table"; 147 cpu-release-addr = <0 0>; /* To be filled by loader */ 148 operating-points-v2 = <&pcluster_opp>; 149 capacity-dmips-mhz = <1024>; 150 performance-domains = <&cpufreq_p>; 151 next-level-cache = <&l2_cache_1>; 152 i-cache-size = <0x30000>; 153 d-cache-size = <0x20000>; 154 }; 155 156 cpu_p3: cpu@10103 { 157 compatible = "apple,avalanche"; 158 device_type = "cpu"; 159 reg = <0x0 0x10103>; 160 enable-method = "spin-table"; 161 cpu-release-addr = <0 0>; /* To be filled by loader */ 162 operating-points-v2 = <&pcluster_opp>; 163 capacity-dmips-mhz = <1024>; 164 performance-domains = <&cpufreq_p>; 165 next-level-cache = <&l2_cache_1>; 166 i-cache-size = <0x30000>; 167 d-cache-size = <0x20000>; 168 }; 169 170 l2_cache_0: l2-cache-0 { 171 compatible = "cache"; 172 cache-level = <2>; 173 cache-unified; 174 cache-size = <0x400000>; 175 }; 176 177 l2_cache_1: l2-cache-1 { 178 compatible = "cache"; 179 cache-level = <2>; 180 cache-unified; 181 cache-size = <0x1000000>; 182 }; 183 }; 184 185 ecluster_opp: opp-table-0 { 186 compatible = "operating-points-v2"; 187 opp-shared; 188 189 opp01 { 190 opp-hz = /bits/ 64 <600000000>; 191 opp-level = <1>; 192 clock-latency-ns = <7500>; 193 }; 194 opp02 { 195 opp-hz = /bits/ 64 <912000000>; 196 opp-level = <2>; 197 clock-latency-ns = <20000>; 198 }; 199 opp03 { 200 opp-hz = /bits/ 64 <1284000000>; 201 opp-level = <3>; 202 clock-latency-ns = <22000>; 203 }; 204 opp04 { 205 opp-hz = /bits/ 64 <1752000000>; 206 opp-level = <4>; 207 clock-latency-ns = <30000>; 208 }; 209 opp05 { 210 opp-hz = /bits/ 64 <2004000000>; 211 opp-level = <5>; 212 clock-latency-ns = <35000>; 213 }; 214 opp06 { 215 opp-hz = /bits/ 64 <2256000000>; 216 opp-level = <6>; 217 clock-latency-ns = <39000>; 218 }; 219 opp07 { 220 opp-hz = /bits/ 64 <2424000000>; 221 opp-level = <7>; 222 clock-latency-ns = <53000>; 223 }; 224 }; 225 226 pcluster_opp: opp-table-1 { 227 compatible = "operating-points-v2"; 228 opp-shared; 229 230 opp01 { 231 opp-hz = /bits/ 64 <660000000>; 232 opp-level = <1>; 233 clock-latency-ns = <9000>; 234 }; 235 opp02 { 236 opp-hz = /bits/ 64 <924000000>; 237 opp-level = <2>; 238 clock-latency-ns = <19000>; 239 }; 240 opp03 { 241 opp-hz = /bits/ 64 <1188000000>; 242 opp-level = <3>; 243 clock-latency-ns = <22000>; 244 }; 245 opp04 { 246 opp-hz = /bits/ 64 <1452000000>; 247 opp-level = <4>; 248 clock-latency-ns = <24000>; 249 }; 250 opp05 { 251 opp-hz = /bits/ 64 <1704000000>; 252 opp-level = <5>; 253 clock-latency-ns = <26000>; 254 }; 255 opp06 { 256 opp-hz = /bits/ 64 <1968000000>; 257 opp-level = <6>; 258 clock-latency-ns = <28000>; 259 }; 260 opp07 { 261 opp-hz = /bits/ 64 <2208000000>; 262 opp-level = <7>; 263 clock-latency-ns = <30000>; 264 }; 265 opp08 { 266 opp-hz = /bits/ 64 <2400000000>; 267 opp-level = <8>; 268 clock-latency-ns = <33000>; 269 }; 270 opp09 { 271 opp-hz = /bits/ 64 <2568000000>; 272 opp-level = <9>; 273 clock-latency-ns = <34000>; 274 }; 275 opp10 { 276 opp-hz = /bits/ 64 <2724000000>; 277 opp-level = <10>; 278 clock-latency-ns = <36000>; 279 }; 280 opp11 { 281 opp-hz = /bits/ 64 <2868000000>; 282 opp-level = <11>; 283 clock-latency-ns = <41000>; 284 }; 285 opp12 { 286 opp-hz = /bits/ 64 <2988000000>; 287 opp-level = <12>; 288 clock-latency-ns = <42000>; 289 }; 290 opp13 { 291 opp-hz = /bits/ 64 <3096000000>; 292 opp-level = <13>; 293 clock-latency-ns = <44000>; 294 }; 295 opp14 { 296 opp-hz = /bits/ 64 <3204000000>; 297 opp-level = <14>; 298 clock-latency-ns = <46000>; 299 }; 300 /* Not available until CPU deep sleep is implemented */ 301#if 0 302 opp15 { 303 opp-hz = /bits/ 64 <3324000000>; 304 opp-level = <15>; 305 clock-latency-ns = <62000>; 306 turbo-mode; 307 }; 308 opp16 { 309 opp-hz = /bits/ 64 <3408000000>; 310 opp-level = <16>; 311 clock-latency-ns = <62000>; 312 turbo-mode; 313 }; 314 opp17 { 315 opp-hz = /bits/ 64 <3504000000>; 316 opp-level = <17>; 317 clock-latency-ns = <62000>; 318 turbo-mode; 319 }; 320#endif 321 }; 322 323 timer { 324 compatible = "arm,armv8-timer"; 325 interrupt-parent = <&aic>; 326 interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; 327 interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 328 <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, 329 <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, 330 <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; 331 }; 332 333 pmu-e { 334 compatible = "apple,blizzard-pmu"; 335 interrupt-parent = <&aic>; 336 interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>; 337 }; 338 339 pmu-p { 340 compatible = "apple,avalanche-pmu"; 341 interrupt-parent = <&aic>; 342 interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>; 343 }; 344 345 clkref: clock-ref { 346 compatible = "fixed-clock"; 347 #clock-cells = <0>; 348 clock-frequency = <24000000>; 349 clock-output-names = "clkref"; 350 }; 351 352 /* 353 * This is a fabulated representation of the input clock 354 * to NCO since we don't know the true clock tree. 355 */ 356 nco_clkref: clock-ref-nco { 357 compatible = "fixed-clock"; 358 #clock-cells = <0>; 359 clock-output-names = "nco_ref"; 360 }; 361 362 soc { 363 compatible = "simple-bus"; 364 #address-cells = <2>; 365 #size-cells = <2>; 366 367 ranges; 368 nonposted-mmio; 369 370 cpufreq_e: cpufreq@210e20000 { 371 compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq"; 372 reg = <0x2 0x10e20000 0 0x1000>; 373 #performance-domain-cells = <0>; 374 }; 375 376 cpufreq_p: cpufreq@211e20000 { 377 compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq"; 378 reg = <0x2 0x11e20000 0 0x1000>; 379 #performance-domain-cells = <0>; 380 }; 381 382 sio_dart: iommu@235004000 { 383 compatible = "apple,t8110-dart"; 384 reg = <0x2 0x35004000 0x0 0x4000>; 385 interrupt-parent = <&aic>; 386 interrupts = <AIC_IRQ 769 IRQ_TYPE_LEVEL_HIGH>; 387 #iommu-cells = <1>; 388 power-domains = <&ps_sio_cpu>; 389 }; 390 391 i2c0: i2c@235010000 { 392 compatible = "apple,t8112-i2c", "apple,i2c"; 393 reg = <0x2 0x35010000 0x0 0x4000>; 394 clocks = <&clkref>; 395 interrupt-parent = <&aic>; 396 interrupts = <AIC_IRQ 761 IRQ_TYPE_LEVEL_HIGH>; 397 pinctrl-0 = <&i2c0_pins>; 398 pinctrl-names = "default"; 399 #address-cells = <0x1>; 400 #size-cells = <0x0>; 401 power-domains = <&ps_i2c0>; 402 status = "disabled"; 403 }; 404 405 i2c1: i2c@235014000 { 406 compatible = "apple,t8112-i2c", "apple,i2c"; 407 reg = <0x2 0x35014000 0x0 0x4000>; 408 clocks = <&clkref>; 409 interrupt-parent = <&aic>; 410 interrupts = <AIC_IRQ 762 IRQ_TYPE_LEVEL_HIGH>; 411 pinctrl-0 = <&i2c1_pins>; 412 pinctrl-names = "default"; 413 #address-cells = <0x1>; 414 #size-cells = <0x0>; 415 power-domains = <&ps_i2c1>; 416 status = "disabled"; 417 }; 418 419 i2c2: i2c@235018000 { 420 compatible = "apple,t8112-i2c", "apple,i2c"; 421 reg = <0x2 0x35018000 0x0 0x4000>; 422 clocks = <&clkref>; 423 interrupt-parent = <&aic>; 424 interrupts = <AIC_IRQ 763 IRQ_TYPE_LEVEL_HIGH>; 425 pinctrl-0 = <&i2c2_pins>; 426 pinctrl-names = "default"; 427 #address-cells = <0x1>; 428 #size-cells = <0x0>; 429 power-domains = <&ps_i2c2>; 430 status = "disabled"; 431 }; 432 433 i2c3: i2c@23501c000 { 434 compatible = "apple,t8112-i2c", "apple,i2c"; 435 reg = <0x2 0x3501c000 0x0 0x4000>; 436 clocks = <&clkref>; 437 interrupt-parent = <&aic>; 438 interrupts = <AIC_IRQ 764 IRQ_TYPE_LEVEL_HIGH>; 439 pinctrl-0 = <&i2c3_pins>; 440 pinctrl-names = "default"; 441 #address-cells = <0x1>; 442 #size-cells = <0x0>; 443 power-domains = <&ps_i2c3>; 444 status = "disabled"; 445 }; 446 447 i2c4: i2c@235020000 { 448 compatible = "apple,t8112-i2c", "apple,i2c"; 449 reg = <0x2 0x35020000 0x0 0x4000>; 450 clocks = <&clkref>; 451 interrupt-parent = <&aic>; 452 interrupts = <AIC_IRQ 765 IRQ_TYPE_LEVEL_HIGH>; 453 pinctrl-0 = <&i2c4_pins>; 454 pinctrl-names = "default"; 455 #address-cells = <0x1>; 456 #size-cells = <0x0>; 457 power-domains = <&ps_i2c4>; 458 status = "disabled"; 459 }; 460 461 fpwm1: pwm@235044000 { 462 compatible = "apple,t8112-fpwm", "apple,s5l-fpwm"; 463 reg = <0x2 0x35044000 0x0 0x4000>; 464 power-domains = <&ps_fpwm1>; 465 clocks = <&clkref>; 466 #pwm-cells = <2>; 467 status = "disabled"; 468 }; 469 470 serial0: serial@235200000 { 471 compatible = "apple,s5l-uart"; 472 reg = <0x2 0x35200000 0x0 0x1000>; 473 reg-io-width = <4>; 474 interrupt-parent = <&aic>; 475 interrupts = <AIC_IRQ 739 IRQ_TYPE_LEVEL_HIGH>; 476 /* 477 * TODO: figure out the clocking properly, there may 478 * be a third selectable clock. 479 */ 480 clocks = <&clkref>, <&clkref>; 481 clock-names = "uart", "clk_uart_baud0"; 482 power-domains = <&ps_uart0>; 483 status = "disabled"; 484 }; 485 486 serial2: serial@235208000 { 487 compatible = "apple,s5l-uart"; 488 reg = <0x2 0x35208000 0x0 0x1000>; 489 reg-io-width = <4>; 490 interrupt-parent = <&aic>; 491 interrupts = <AIC_IRQ 741 IRQ_TYPE_LEVEL_HIGH>; 492 clocks = <&clkref>, <&clkref>; 493 clock-names = "uart", "clk_uart_baud0"; 494 power-domains = <&ps_uart2>; 495 status = "disabled"; 496 }; 497 498 admac: dma-controller@238200000 { 499 compatible = "apple,t8112-admac", "apple,admac"; 500 reg = <0x2 0x38200000 0x0 0x34000>; 501 dma-channels = <24>; 502 interrupts-extended = <0>, 503 <&aic AIC_IRQ 760 IRQ_TYPE_LEVEL_HIGH>, 504 <0>, 505 <0>; 506 #dma-cells = <1>; 507 iommus = <&sio_dart 2>; 508 power-domains = <&ps_sio_adma>; 509 resets = <&ps_audio_p>; 510 }; 511 512 mca: i2s@238400000 { 513 compatible = "apple,t8112-mca", "apple,mca"; 514 reg = <0x2 0x38400000 0x0 0x18000>, 515 <0x2 0x38300000 0x0 0x30000>; 516 517 interrupt-parent = <&aic>; 518 interrupts = <AIC_IRQ 753 IRQ_TYPE_LEVEL_HIGH>, 519 <AIC_IRQ 754 IRQ_TYPE_LEVEL_HIGH>, 520 <AIC_IRQ 755 IRQ_TYPE_LEVEL_HIGH>, 521 <AIC_IRQ 756 IRQ_TYPE_LEVEL_HIGH>, 522 <AIC_IRQ 757 IRQ_TYPE_LEVEL_HIGH>, 523 <AIC_IRQ 758 IRQ_TYPE_LEVEL_HIGH>; 524 525 resets = <&ps_audio_p>; 526 clocks = <&nco 0>, <&nco 1>, <&nco 2>, 527 <&nco 3>, <&nco 4>, <&nco 4>; 528 power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>, 529 <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>; 530 dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>, 531 <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>, 532 <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>, 533 <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>, 534 <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>, 535 <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>; 536 dma-names = "tx0a", "rx0a", "tx0b", "rx0b", 537 "tx1a", "rx1a", "tx1b", "rx1b", 538 "tx2a", "rx2a", "tx2b", "rx2b", 539 "tx3a", "rx3a", "tx3b", "rx3b", 540 "tx4a", "rx4a", "tx4b", "rx4b", 541 "tx5a", "rx5a", "tx5b", "rx5b"; 542 543 #sound-dai-cells = <1>; 544 }; 545 546 nco: clock-controller@23b044000 { 547 compatible = "apple,t8112-nco", "apple,nco"; 548 reg = <0x2 0x3b044000 0x0 0x14000>; 549 clocks = <&nco_clkref>; 550 #clock-cells = <1>; 551 }; 552 553 aic: interrupt-controller@23b0c0000 { 554 compatible = "apple,t8112-aic", "apple,aic2"; 555 #interrupt-cells = <3>; 556 interrupt-controller; 557 reg = <0x2 0x3b0c0000 0x0 0x8000>, 558 <0x2 0x3b0c8000 0x0 0x4>; 559 reg-names = "core", "event"; 560 power-domains = <&ps_aic>; 561 562 affinities { 563 e-core-pmu-affinity { 564 apple,fiq-index = <AIC_CPU_PMU_E>; 565 cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>; 566 }; 567 568 p-core-pmu-affinity { 569 apple,fiq-index = <AIC_CPU_PMU_P>; 570 cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>; 571 }; 572 }; 573 }; 574 575 pmgr: power-management@23b700000 { 576 compatible = "apple,t8112-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 577 #address-cells = <1>; 578 #size-cells = <1>; 579 reg = <0x2 0x3b700000 0 0x14000>; 580 /* child nodes are added in t8103-pmgr.dtsi */ 581 }; 582 583 pinctrl_ap: pinctrl@23c100000 { 584 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 585 reg = <0x2 0x3c100000 0x0 0x100000>; 586 power-domains = <&ps_gpio>; 587 588 gpio-controller; 589 #gpio-cells = <2>; 590 gpio-ranges = <&pinctrl_ap 0 0 213>; 591 apple,npins = <213>; 592 593 interrupt-controller; 594 #interrupt-cells = <2>; 595 interrupt-parent = <&aic>; 596 interrupts = <AIC_IRQ 199 IRQ_TYPE_LEVEL_HIGH>, 597 <AIC_IRQ 200 IRQ_TYPE_LEVEL_HIGH>, 598 <AIC_IRQ 201 IRQ_TYPE_LEVEL_HIGH>, 599 <AIC_IRQ 202 IRQ_TYPE_LEVEL_HIGH>, 600 <AIC_IRQ 203 IRQ_TYPE_LEVEL_HIGH>, 601 <AIC_IRQ 204 IRQ_TYPE_LEVEL_HIGH>, 602 <AIC_IRQ 205 IRQ_TYPE_LEVEL_HIGH>; 603 604 i2c0_pins: i2c0-pins { 605 pinmux = <APPLE_PINMUX(111, 1)>, 606 <APPLE_PINMUX(110, 1)>; 607 }; 608 609 i2c1_pins: i2c1-pins { 610 pinmux = <APPLE_PINMUX(113, 1)>, 611 <APPLE_PINMUX(112, 1)>; 612 }; 613 614 i2c2_pins: i2c2-pins { 615 pinmux = <APPLE_PINMUX(87, 1)>, 616 <APPLE_PINMUX(86, 1)>; 617 }; 618 619 i2c3_pins: i2c3-pins { 620 pinmux = <APPLE_PINMUX(54, 1)>, 621 <APPLE_PINMUX(53, 1)>; 622 }; 623 624 i2c4_pins: i2c4-pins { 625 pinmux = <APPLE_PINMUX(131, 1)>, 626 <APPLE_PINMUX(130, 1)>; 627 }; 628 629 spi3_pins: spi3-pins { 630 pinmux = <APPLE_PINMUX(46, 1)>, 631 <APPLE_PINMUX(47, 1)>, 632 <APPLE_PINMUX(48, 1)>, 633 <APPLE_PINMUX(49, 1)>; 634 }; 635 636 pcie_pins: pcie-pins { 637 pinmux = <APPLE_PINMUX(162, 1)>, 638 <APPLE_PINMUX(163, 1)>, 639 <APPLE_PINMUX(164, 1)>; 640 // TODO: 1 more CLKREQs 641 }; 642 }; 643 644 pinctrl_nub: pinctrl@23d1f0000 { 645 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 646 reg = <0x2 0x3d1f0000 0x0 0x4000>; 647 power-domains = <&ps_nub_gpio>; 648 649 gpio-controller; 650 #gpio-cells = <2>; 651 gpio-ranges = <&pinctrl_nub 0 0 24>; 652 apple,npins = <24>; 653 654 interrupt-controller; 655 #interrupt-cells = <2>; 656 interrupt-parent = <&aic>; 657 interrupts = <AIC_IRQ 371 IRQ_TYPE_LEVEL_HIGH>, 658 <AIC_IRQ 372 IRQ_TYPE_LEVEL_HIGH>, 659 <AIC_IRQ 373 IRQ_TYPE_LEVEL_HIGH>, 660 <AIC_IRQ 374 IRQ_TYPE_LEVEL_HIGH>, 661 <AIC_IRQ 375 IRQ_TYPE_LEVEL_HIGH>, 662 <AIC_IRQ 376 IRQ_TYPE_LEVEL_HIGH>, 663 <AIC_IRQ 377 IRQ_TYPE_LEVEL_HIGH>; 664 }; 665 666 pmgr_mini: power-management@23d280000 { 667 compatible = "apple,t8112-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 668 #address-cells = <1>; 669 #size-cells = <1>; 670 reg = <0x2 0x3d280000 0 0x4000>; 671 /* child nodes are added in t8103-pmgr.dtsi */ 672 }; 673 674 wdt: watchdog@23d2b0000 { 675 compatible = "apple,t8112-wdt", "apple,wdt"; 676 reg = <0x2 0x3d2b0000 0x0 0x4000>; 677 clocks = <&clkref>; 678 interrupt-parent = <&aic>; 679 interrupts = <AIC_IRQ 379 IRQ_TYPE_LEVEL_HIGH>; 680 }; 681 682 pinctrl_smc: pinctrl@23e820000 { 683 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 684 reg = <0x2 0x3e820000 0x0 0x4000>; 685 686 gpio-controller; 687 #gpio-cells = <2>; 688 gpio-ranges = <&pinctrl_smc 0 0 18>; 689 apple,npins = <18>; 690 691 interrupt-controller; 692 #interrupt-cells = <2>; 693 interrupt-parent = <&aic>; 694 interrupts = <AIC_IRQ 490 IRQ_TYPE_LEVEL_HIGH>, 695 <AIC_IRQ 491 IRQ_TYPE_LEVEL_HIGH>, 696 <AIC_IRQ 492 IRQ_TYPE_LEVEL_HIGH>, 697 <AIC_IRQ 493 IRQ_TYPE_LEVEL_HIGH>, 698 <AIC_IRQ 494 IRQ_TYPE_LEVEL_HIGH>, 699 <AIC_IRQ 495 IRQ_TYPE_LEVEL_HIGH>, 700 <AIC_IRQ 496 IRQ_TYPE_LEVEL_HIGH>; 701 }; 702 703 pinctrl_aop: pinctrl@24a820000 { 704 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 705 reg = <0x2 0x4a820000 0x0 0x4000>; 706 707 gpio-controller; 708 #gpio-cells = <2>; 709 gpio-ranges = <&pinctrl_aop 0 0 54>; 710 apple,npins = <54>; 711 712 interrupt-controller; 713 #interrupt-cells = <2>; 714 interrupt-parent = <&aic>; 715 interrupts = <AIC_IRQ 301 IRQ_TYPE_LEVEL_HIGH>, 716 <AIC_IRQ 302 IRQ_TYPE_LEVEL_HIGH>, 717 <AIC_IRQ 303 IRQ_TYPE_LEVEL_HIGH>, 718 <AIC_IRQ 304 IRQ_TYPE_LEVEL_HIGH>, 719 <AIC_IRQ 305 IRQ_TYPE_LEVEL_HIGH>, 720 <AIC_IRQ 306 IRQ_TYPE_LEVEL_HIGH>, 721 <AIC_IRQ 307 IRQ_TYPE_LEVEL_HIGH>; 722 }; 723 724 ans_mbox: mbox@277408000 { 725 compatible = "apple,t8112-asc-mailbox", "apple,asc-mailbox-v4"; 726 reg = <0x2 0x77408000 0x0 0x4000>; 727 interrupt-parent = <&aic>; 728 interrupts = <AIC_IRQ 717 IRQ_TYPE_LEVEL_HIGH>, 729 <AIC_IRQ 718 IRQ_TYPE_LEVEL_HIGH>, 730 <AIC_IRQ 719 IRQ_TYPE_LEVEL_HIGH>, 731 <AIC_IRQ 720 IRQ_TYPE_LEVEL_HIGH>; 732 interrupt-names = "send-empty", "send-not-empty", 733 "recv-empty", "recv-not-empty"; 734 #mbox-cells = <0>; 735 power-domains = <&ps_ans>; 736 }; 737 738 sart: sart@27bc50000 { 739 compatible = "apple,t8112-sart", "apple,t6000-sart"; 740 reg = <0x2 0x7bc50000 0x0 0x10000>; 741 power-domains = <&ps_ans>; 742 }; 743 744 nvme@27bcc0000 { 745 compatible = "apple,t8112-nvme-ans2", "apple,nvme-ans2"; 746 reg = <0x2 0x7bcc0000 0x0 0x40000>, 747 <0x2 0x77400000 0x0 0x4000>; 748 reg-names = "nvme", "ans"; 749 interrupt-parent = <&aic>; 750 interrupts = <AIC_IRQ 724 IRQ_TYPE_LEVEL_HIGH>; 751 mboxes = <&ans_mbox>; 752 apple,sart = <&sart>; 753 power-domains = <&ps_ans>, <&ps_apcie_st>; 754 power-domain-names = "ans", "apcie0"; 755 resets = <&ps_ans>; 756 }; 757 758 pcie0_dart: iommu@681008000 { 759 compatible = "apple,t8110-dart"; 760 reg = <0x6 0x81008000 0x0 0x4000>; 761 #iommu-cells = <1>; 762 interrupt-parent = <&aic>; 763 interrupts = <AIC_IRQ 782 IRQ_TYPE_LEVEL_HIGH>; 764 power-domains = <&ps_apcie_gp>; 765 }; 766 767 pcie1_dart: iommu@682008000 { 768 compatible = "apple,t8110-dart"; 769 reg = <0x6 0x82008000 0x0 0x4000>; 770 #iommu-cells = <1>; 771 interrupt-parent = <&aic>; 772 interrupts = <AIC_IRQ 785 IRQ_TYPE_LEVEL_HIGH>; 773 power-domains = <&ps_apcie_gp>; 774 status = "disabled"; 775 }; 776 777 pcie2_dart: iommu@683008000 { 778 compatible = "apple,t8110-dart"; 779 reg = <0x6 0x83008000 0x0 0x4000>; 780 #iommu-cells = <1>; 781 interrupt-parent = <&aic>; 782 interrupts = <AIC_IRQ 788 IRQ_TYPE_LEVEL_HIGH>; 783 power-domains = <&ps_apcie_gp>; 784 status = "disabled"; 785 }; 786 787 pcie3_dart: iommu@684008000 { 788 compatible = "apple,t8110-dart"; 789 reg = <0x6 0x84008000 0x0 0x4000>; 790 #iommu-cells = <1>; 791 interrupt-parent = <&aic>; 792 interrupts = <AIC_IRQ 791 IRQ_TYPE_LEVEL_HIGH>; 793 power-domains = <&ps_apcie_gp>; 794 status = "disabled"; 795 }; 796 797 pcie0: pcie@690000000 { 798 compatible = "apple,t8112-pcie", "apple,pcie"; 799 device_type = "pci"; 800 801 reg = <0x6 0x90000000 0x0 0x1000000>, 802 <0x6 0x80000000 0x0 0x100000>, 803 <0x6 0x81000000 0x0 0x4000>, 804 <0x6 0x82000000 0x0 0x4000>, 805 <0x6 0x83000000 0x0 0x4000>, 806 <0x6 0x84000000 0x0 0x4000>; 807 reg-names = "config", "rc", "port0", "port1", "port2", "port3"; 808 809 interrupt-parent = <&aic>; 810 interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>, 811 <AIC_IRQ 784 IRQ_TYPE_LEVEL_HIGH>, 812 <AIC_IRQ 787 IRQ_TYPE_LEVEL_HIGH>, 813 <AIC_IRQ 790 IRQ_TYPE_LEVEL_HIGH>; 814 815 msi-controller; 816 msi-parent = <&pcie0>; 817 msi-ranges = <&aic AIC_IRQ 793 IRQ_TYPE_EDGE_RISING 32>; 818 819 iommu-map = <0x100 &pcie0_dart 0 1>, 820 <0x200 &pcie1_dart 1 1>, 821 <0x300 &pcie2_dart 2 1>, 822 <0x400 &pcie3_dart 3 1>; 823 iommu-map-mask = <0xff00>; 824 825 bus-range = <0 4>; 826 #address-cells = <3>; 827 #size-cells = <2>; 828 ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>, 829 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>; 830 831 power-domains = <&ps_apcie_gp>; 832 pinctrl-0 = <&pcie_pins>; 833 pinctrl-names = "default"; 834 835 port00: pci@0,0 { 836 device_type = "pci"; 837 reg = <0x0 0x0 0x0 0x0 0x0>; 838 reset-gpios = <&pinctrl_ap 166 GPIO_ACTIVE_LOW>; 839 840 #address-cells = <3>; 841 #size-cells = <2>; 842 ranges; 843 844 interrupt-controller; 845 #interrupt-cells = <1>; 846 847 interrupt-map-mask = <0 0 0 7>; 848 interrupt-map = <0 0 0 1 &port00 0 0 0 0>, 849 <0 0 0 2 &port00 0 0 0 1>, 850 <0 0 0 3 &port00 0 0 0 2>, 851 <0 0 0 4 &port00 0 0 0 3>; 852 }; 853 854 port01: pci@1,0 { 855 device_type = "pci"; 856 reg = <0x800 0x0 0x0 0x0 0x0>; 857 reset-gpios = <&pinctrl_ap 167 GPIO_ACTIVE_LOW>; 858 859 #address-cells = <3>; 860 #size-cells = <2>; 861 ranges; 862 863 interrupt-controller; 864 #interrupt-cells = <1>; 865 866 interrupt-map-mask = <0 0 0 7>; 867 interrupt-map = <0 0 0 1 &port01 0 0 0 0>, 868 <0 0 0 2 &port01 0 0 0 1>, 869 <0 0 0 3 &port01 0 0 0 2>, 870 <0 0 0 4 &port01 0 0 0 3>; 871 872 status = "disabled"; 873 }; 874 875 port02: pci@2,0 { 876 device_type = "pci"; 877 reg = <0x1000 0x0 0x0 0x0 0x0>; 878 reset-gpios = <&pinctrl_ap 168 GPIO_ACTIVE_LOW>; 879 880 #address-cells = <3>; 881 #size-cells = <2>; 882 ranges; 883 884 interrupt-controller; 885 #interrupt-cells = <1>; 886 887 interrupt-map-mask = <0 0 0 7>; 888 interrupt-map = <0 0 0 1 &port02 0 0 0 0>, 889 <0 0 0 2 &port02 0 0 0 1>, 890 <0 0 0 3 &port02 0 0 0 2>, 891 <0 0 0 4 &port02 0 0 0 3>; 892 893 status = "disabled"; 894 }; 895 896 /* TODO: GPIO unknown */ 897 port03: pci@3,0 { 898 device_type = "pci"; 899 reg = <0x1800 0x0 0x0 0x0 0x0>; 900 //reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>; 901 902 #address-cells = <3>; 903 #size-cells = <2>; 904 ranges; 905 906 interrupt-controller; 907 #interrupt-cells = <1>; 908 909 interrupt-map-mask = <0 0 0 7>; 910 interrupt-map = <0 0 0 1 &port03 0 0 0 0>, 911 <0 0 0 2 &port03 0 0 0 1>, 912 <0 0 0 3 &port03 0 0 0 2>, 913 <0 0 0 4 &port03 0 0 0 3>; 914 915 status = "disabled"; 916 }; 917 }; 918 }; 919}; 920 921#include "t8112-pmgr.dtsi" 922