17d2d16ccSHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT 27d2d16ccSHector Martin/* 37d2d16ccSHector Martin * Apple T8103 "M1" SoC 47d2d16ccSHector Martin * 57d2d16ccSHector Martin * Other names: H13G, "Tonga" 67d2d16ccSHector Martin * 77d2d16ccSHector Martin * Copyright The Asahi Linux Contributors 87d2d16ccSHector Martin */ 97d2d16ccSHector Martin 105b970dfcSMarc Zyngier#include <dt-bindings/gpio/gpio.h> 117d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h> 127d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h> 130a8282b8SMark Kettenis#include <dt-bindings/pinctrl/apple.h> 147d2d16ccSHector Martin 157d2d16ccSHector Martin/ { 167d2d16ccSHector Martin compatible = "apple,t8103", "apple,arm-platform"; 177d2d16ccSHector Martin 187d2d16ccSHector Martin #address-cells = <2>; 197d2d16ccSHector Martin #size-cells = <2>; 207d2d16ccSHector Martin 217d2d16ccSHector Martin cpus { 227d2d16ccSHector Martin #address-cells = <2>; 237d2d16ccSHector Martin #size-cells = <0>; 247d2d16ccSHector Martin 257d2d16ccSHector Martin cpu0: cpu@0 { 267d2d16ccSHector Martin compatible = "apple,icestorm"; 277d2d16ccSHector Martin device_type = "cpu"; 287d2d16ccSHector Martin reg = <0x0 0x0>; 297d2d16ccSHector Martin enable-method = "spin-table"; 307d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 317d2d16ccSHector Martin }; 327d2d16ccSHector Martin 337d2d16ccSHector Martin cpu1: cpu@1 { 347d2d16ccSHector Martin compatible = "apple,icestorm"; 357d2d16ccSHector Martin device_type = "cpu"; 367d2d16ccSHector Martin reg = <0x0 0x1>; 377d2d16ccSHector Martin enable-method = "spin-table"; 387d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 397d2d16ccSHector Martin }; 407d2d16ccSHector Martin 417d2d16ccSHector Martin cpu2: cpu@2 { 427d2d16ccSHector Martin compatible = "apple,icestorm"; 437d2d16ccSHector Martin device_type = "cpu"; 447d2d16ccSHector Martin reg = <0x0 0x2>; 457d2d16ccSHector Martin enable-method = "spin-table"; 467d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 477d2d16ccSHector Martin }; 487d2d16ccSHector Martin 497d2d16ccSHector Martin cpu3: cpu@3 { 507d2d16ccSHector Martin compatible = "apple,icestorm"; 517d2d16ccSHector Martin device_type = "cpu"; 527d2d16ccSHector Martin reg = <0x0 0x3>; 537d2d16ccSHector Martin enable-method = "spin-table"; 547d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 557d2d16ccSHector Martin }; 567d2d16ccSHector Martin 577d2d16ccSHector Martin cpu4: cpu@10100 { 587d2d16ccSHector Martin compatible = "apple,firestorm"; 597d2d16ccSHector Martin device_type = "cpu"; 607d2d16ccSHector Martin reg = <0x0 0x10100>; 617d2d16ccSHector Martin enable-method = "spin-table"; 627d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 637d2d16ccSHector Martin }; 647d2d16ccSHector Martin 657d2d16ccSHector Martin cpu5: cpu@10101 { 667d2d16ccSHector Martin compatible = "apple,firestorm"; 677d2d16ccSHector Martin device_type = "cpu"; 687d2d16ccSHector Martin reg = <0x0 0x10101>; 697d2d16ccSHector Martin enable-method = "spin-table"; 707d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 717d2d16ccSHector Martin }; 727d2d16ccSHector Martin 737d2d16ccSHector Martin cpu6: cpu@10102 { 747d2d16ccSHector Martin compatible = "apple,firestorm"; 757d2d16ccSHector Martin device_type = "cpu"; 767d2d16ccSHector Martin reg = <0x0 0x10102>; 777d2d16ccSHector Martin enable-method = "spin-table"; 787d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 797d2d16ccSHector Martin }; 807d2d16ccSHector Martin 817d2d16ccSHector Martin cpu7: cpu@10103 { 827d2d16ccSHector Martin compatible = "apple,firestorm"; 837d2d16ccSHector Martin device_type = "cpu"; 847d2d16ccSHector Martin reg = <0x0 0x10103>; 857d2d16ccSHector Martin enable-method = "spin-table"; 867d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 877d2d16ccSHector Martin }; 887d2d16ccSHector Martin }; 897d2d16ccSHector Martin 907d2d16ccSHector Martin timer { 917d2d16ccSHector Martin compatible = "arm,armv8-timer"; 927d2d16ccSHector Martin interrupt-parent = <&aic>; 937d2d16ccSHector Martin interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; 947d2d16ccSHector Martin interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 957d2d16ccSHector Martin <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, 967d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, 977d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; 987d2d16ccSHector Martin }; 997d2d16ccSHector Martin 10057337b25SHector Martin clkref: clock-ref { 1017d2d16ccSHector Martin compatible = "fixed-clock"; 1027d2d16ccSHector Martin #clock-cells = <0>; 1037d2d16ccSHector Martin clock-frequency = <24000000>; 10457337b25SHector Martin clock-output-names = "clkref"; 1057d2d16ccSHector Martin }; 1067d2d16ccSHector Martin 1077d2d16ccSHector Martin soc { 1087d2d16ccSHector Martin compatible = "simple-bus"; 1097d2d16ccSHector Martin #address-cells = <2>; 1107d2d16ccSHector Martin #size-cells = <2>; 1117d2d16ccSHector Martin 1127d2d16ccSHector Martin ranges; 1137d2d16ccSHector Martin nonposted-mmio; 1147d2d16ccSHector Martin 11590458f6eSJanne Grunau i2c0: i2c@235010000 { 11690458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 11790458f6eSJanne Grunau reg = <0x2 0x35010000 0x0 0x4000>; 11857337b25SHector Martin clocks = <&clkref>; 11990458f6eSJanne Grunau interrupt-parent = <&aic>; 12090458f6eSJanne Grunau interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>; 12190458f6eSJanne Grunau pinctrl-0 = <&i2c0_pins>; 12290458f6eSJanne Grunau pinctrl-names = "default"; 12390458f6eSJanne Grunau #address-cells = <0x1>; 12490458f6eSJanne Grunau #size-cells = <0x0>; 125106ba3b4SHector Martin power-domains = <&ps_i2c0>; 12690458f6eSJanne Grunau }; 12790458f6eSJanne Grunau 12890458f6eSJanne Grunau i2c1: i2c@235014000 { 12990458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 13090458f6eSJanne Grunau reg = <0x2 0x35014000 0x0 0x4000>; 13157337b25SHector Martin clocks = <&clkref>; 13290458f6eSJanne Grunau interrupt-parent = <&aic>; 13390458f6eSJanne Grunau interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>; 13490458f6eSJanne Grunau pinctrl-0 = <&i2c1_pins>; 13590458f6eSJanne Grunau pinctrl-names = "default"; 13690458f6eSJanne Grunau #address-cells = <0x1>; 13790458f6eSJanne Grunau #size-cells = <0x0>; 138106ba3b4SHector Martin power-domains = <&ps_i2c1>; 13990458f6eSJanne Grunau }; 14090458f6eSJanne Grunau 14190458f6eSJanne Grunau i2c2: i2c@235018000 { 14290458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 14390458f6eSJanne Grunau reg = <0x2 0x35018000 0x0 0x4000>; 14457337b25SHector Martin clocks = <&clkref>; 14590458f6eSJanne Grunau interrupt-parent = <&aic>; 14690458f6eSJanne Grunau interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>; 14790458f6eSJanne Grunau pinctrl-0 = <&i2c2_pins>; 14890458f6eSJanne Grunau pinctrl-names = "default"; 14990458f6eSJanne Grunau #address-cells = <0x1>; 15090458f6eSJanne Grunau #size-cells = <0x0>; 15190458f6eSJanne Grunau status = "disabled"; /* not used in all devices */ 152106ba3b4SHector Martin power-domains = <&ps_i2c2>; 15390458f6eSJanne Grunau }; 15490458f6eSJanne Grunau 15590458f6eSJanne Grunau i2c3: i2c@23501c000 { 15690458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 15790458f6eSJanne Grunau reg = <0x2 0x3501c000 0x0 0x4000>; 15857337b25SHector Martin clocks = <&clkref>; 15990458f6eSJanne Grunau interrupt-parent = <&aic>; 16090458f6eSJanne Grunau interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>; 16190458f6eSJanne Grunau pinctrl-0 = <&i2c3_pins>; 16290458f6eSJanne Grunau pinctrl-names = "default"; 16390458f6eSJanne Grunau #address-cells = <0x1>; 16490458f6eSJanne Grunau #size-cells = <0x0>; 165106ba3b4SHector Martin power-domains = <&ps_i2c3>; 16690458f6eSJanne Grunau }; 16790458f6eSJanne Grunau 16890458f6eSJanne Grunau i2c4: i2c@235020000 { 16990458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 17090458f6eSJanne Grunau reg = <0x2 0x35020000 0x0 0x4000>; 17157337b25SHector Martin clocks = <&clkref>; 17290458f6eSJanne Grunau interrupt-parent = <&aic>; 17390458f6eSJanne Grunau interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>; 17490458f6eSJanne Grunau pinctrl-0 = <&i2c4_pins>; 17590458f6eSJanne Grunau pinctrl-names = "default"; 17690458f6eSJanne Grunau #address-cells = <0x1>; 17790458f6eSJanne Grunau #size-cells = <0x0>; 178106ba3b4SHector Martin power-domains = <&ps_i2c4>; 17990458f6eSJanne Grunau status = "disabled"; /* only used in J293 */ 18090458f6eSJanne Grunau }; 18190458f6eSJanne Grunau 1827d2d16ccSHector Martin serial0: serial@235200000 { 1837d2d16ccSHector Martin compatible = "apple,s5l-uart"; 1847d2d16ccSHector Martin reg = <0x2 0x35200000 0x0 0x1000>; 1857d2d16ccSHector Martin reg-io-width = <4>; 1867d2d16ccSHector Martin interrupt-parent = <&aic>; 1877d2d16ccSHector Martin interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>; 1887d2d16ccSHector Martin /* 1897d2d16ccSHector Martin * TODO: figure out the clocking properly, there may 1907d2d16ccSHector Martin * be a third selectable clock. 1917d2d16ccSHector Martin */ 19257337b25SHector Martin clocks = <&clkref>, <&clkref>; 1937d2d16ccSHector Martin clock-names = "uart", "clk_uart_baud0"; 194106ba3b4SHector Martin power-domains = <&ps_uart0>; 1957d2d16ccSHector Martin status = "disabled"; 1967d2d16ccSHector Martin }; 1977d2d16ccSHector Martin 1982ba22cfeSHector Martin serial2: serial@235208000 { 1992ba22cfeSHector Martin compatible = "apple,s5l-uart"; 2002ba22cfeSHector Martin reg = <0x2 0x35208000 0x0 0x1000>; 2012ba22cfeSHector Martin reg-io-width = <4>; 2022ba22cfeSHector Martin interrupt-parent = <&aic>; 2032ba22cfeSHector Martin interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>; 20457337b25SHector Martin clocks = <&clkref>, <&clkref>; 2052ba22cfeSHector Martin clock-names = "uart", "clk_uart_baud0"; 2062ba22cfeSHector Martin power-domains = <&ps_uart2>; 2077d2d16ccSHector Martin status = "disabled"; 2087d2d16ccSHector Martin }; 2097d2d16ccSHector Martin 2107d2d16ccSHector Martin aic: interrupt-controller@23b100000 { 2117d2d16ccSHector Martin compatible = "apple,t8103-aic", "apple,aic"; 2127d2d16ccSHector Martin #interrupt-cells = <3>; 2137d2d16ccSHector Martin interrupt-controller; 2147d2d16ccSHector Martin reg = <0x2 0x3b100000 0x0 0x8000>; 215106ba3b4SHector Martin power-domains = <&ps_aic>; 216*1852e22bSMarc Zyngier 217*1852e22bSMarc Zyngier affinities { 218*1852e22bSMarc Zyngier e-core-pmu-affinity { 219*1852e22bSMarc Zyngier apple,fiq-index = <AIC_CPU_PMU_E>; 220*1852e22bSMarc Zyngier cpus = <&cpu0 &cpu1 &cpu2 &cpu3>; 221*1852e22bSMarc Zyngier }; 222*1852e22bSMarc Zyngier 223*1852e22bSMarc Zyngier p-core-pmu-affinity { 224*1852e22bSMarc Zyngier apple,fiq-index = <AIC_CPU_PMU_P>; 225*1852e22bSMarc Zyngier cpus = <&cpu4 &cpu5 &cpu6 &cpu7>; 226*1852e22bSMarc Zyngier }; 227*1852e22bSMarc Zyngier }; 228106ba3b4SHector Martin }; 229106ba3b4SHector Martin 230106ba3b4SHector Martin pmgr: power-management@23b700000 { 231106ba3b4SHector Martin compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 232106ba3b4SHector Martin #address-cells = <1>; 233106ba3b4SHector Martin #size-cells = <1>; 234106ba3b4SHector Martin reg = <0x2 0x3b700000 0 0x14000>; 2357d2d16ccSHector Martin }; 2360a8282b8SMark Kettenis 2370a8282b8SMark Kettenis pinctrl_ap: pinctrl@23c100000 { 2380a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 2390a8282b8SMark Kettenis reg = <0x2 0x3c100000 0x0 0x100000>; 240106ba3b4SHector Martin power-domains = <&ps_gpio>; 2410a8282b8SMark Kettenis 2420a8282b8SMark Kettenis gpio-controller; 2430a8282b8SMark Kettenis #gpio-cells = <2>; 2440a8282b8SMark Kettenis gpio-ranges = <&pinctrl_ap 0 0 212>; 2450a8282b8SMark Kettenis apple,npins = <212>; 2460a8282b8SMark Kettenis 2470a8282b8SMark Kettenis interrupt-controller; 2480668639eSJanne Grunau #interrupt-cells = <2>; 2490a8282b8SMark Kettenis interrupt-parent = <&aic>; 2500a8282b8SMark Kettenis interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>, 2510a8282b8SMark Kettenis <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>, 2520a8282b8SMark Kettenis <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>, 2530a8282b8SMark Kettenis <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>, 2540a8282b8SMark Kettenis <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>, 2550a8282b8SMark Kettenis <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>, 2560a8282b8SMark Kettenis <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>; 2570a8282b8SMark Kettenis 25890458f6eSJanne Grunau i2c0_pins: i2c0-pins { 25990458f6eSJanne Grunau pinmux = <APPLE_PINMUX(192, 1)>, 26090458f6eSJanne Grunau <APPLE_PINMUX(188, 1)>; 26190458f6eSJanne Grunau }; 26290458f6eSJanne Grunau 26390458f6eSJanne Grunau i2c1_pins: i2c1-pins { 26490458f6eSJanne Grunau pinmux = <APPLE_PINMUX(201, 1)>, 26590458f6eSJanne Grunau <APPLE_PINMUX(199, 1)>; 26690458f6eSJanne Grunau }; 26790458f6eSJanne Grunau 26890458f6eSJanne Grunau i2c2_pins: i2c2-pins { 26990458f6eSJanne Grunau pinmux = <APPLE_PINMUX(163, 1)>, 27090458f6eSJanne Grunau <APPLE_PINMUX(162, 1)>; 27190458f6eSJanne Grunau }; 27290458f6eSJanne Grunau 27390458f6eSJanne Grunau i2c3_pins: i2c3-pins { 27490458f6eSJanne Grunau pinmux = <APPLE_PINMUX(73, 1)>, 27590458f6eSJanne Grunau <APPLE_PINMUX(72, 1)>; 27690458f6eSJanne Grunau }; 27790458f6eSJanne Grunau 27890458f6eSJanne Grunau i2c4_pins: i2c4-pins { 27990458f6eSJanne Grunau pinmux = <APPLE_PINMUX(135, 1)>, 28090458f6eSJanne Grunau <APPLE_PINMUX(134, 1)>; 28190458f6eSJanne Grunau }; 28290458f6eSJanne Grunau 2830a8282b8SMark Kettenis pcie_pins: pcie-pins { 2840a8282b8SMark Kettenis pinmux = <APPLE_PINMUX(150, 1)>, 2850a8282b8SMark Kettenis <APPLE_PINMUX(151, 1)>, 2860a8282b8SMark Kettenis <APPLE_PINMUX(32, 1)>; 2870a8282b8SMark Kettenis }; 2880a8282b8SMark Kettenis }; 2890a8282b8SMark Kettenis 2900a8282b8SMark Kettenis pinctrl_nub: pinctrl@23d1f0000 { 2910a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 2920a8282b8SMark Kettenis reg = <0x2 0x3d1f0000 0x0 0x4000>; 293106ba3b4SHector Martin power-domains = <&ps_nub_gpio>; 2940a8282b8SMark Kettenis 2950a8282b8SMark Kettenis gpio-controller; 2960a8282b8SMark Kettenis #gpio-cells = <2>; 2970a8282b8SMark Kettenis gpio-ranges = <&pinctrl_nub 0 0 23>; 2980a8282b8SMark Kettenis apple,npins = <23>; 2990a8282b8SMark Kettenis 3000a8282b8SMark Kettenis interrupt-controller; 3010668639eSJanne Grunau #interrupt-cells = <2>; 3020a8282b8SMark Kettenis interrupt-parent = <&aic>; 3030a8282b8SMark Kettenis interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>, 3040a8282b8SMark Kettenis <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>, 3050a8282b8SMark Kettenis <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>, 3060a8282b8SMark Kettenis <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>, 3070a8282b8SMark Kettenis <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>, 3080a8282b8SMark Kettenis <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>, 3090a8282b8SMark Kettenis <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>; 3100a8282b8SMark Kettenis }; 3110a8282b8SMark Kettenis 3128adf987cSHector Martin pmgr_mini: power-management@23d280000 { 3138adf987cSHector Martin compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 3148adf987cSHector Martin #address-cells = <1>; 3158adf987cSHector Martin #size-cells = <1>; 3168adf987cSHector Martin reg = <0x2 0x3d280000 0 0x4000>; 3178adf987cSHector Martin }; 3188adf987cSHector Martin 319b4d11106SSven Peter wdt: watchdog@23d2b0000 { 320b4d11106SSven Peter compatible = "apple,t8103-wdt", "apple,wdt"; 321b4d11106SSven Peter reg = <0x2 0x3d2b0000 0x0 0x4000>; 32257337b25SHector Martin clocks = <&clkref>; 323b4d11106SSven Peter interrupt-parent = <&aic>; 324b4d11106SSven Peter interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>; 325b4d11106SSven Peter }; 326b4d11106SSven Peter 3270a8282b8SMark Kettenis pinctrl_smc: pinctrl@23e820000 { 3280a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 3290a8282b8SMark Kettenis reg = <0x2 0x3e820000 0x0 0x4000>; 3300a8282b8SMark Kettenis 3310a8282b8SMark Kettenis gpio-controller; 3320a8282b8SMark Kettenis #gpio-cells = <2>; 3330a8282b8SMark Kettenis gpio-ranges = <&pinctrl_smc 0 0 16>; 3340a8282b8SMark Kettenis apple,npins = <16>; 3350a8282b8SMark Kettenis 3360a8282b8SMark Kettenis interrupt-controller; 3370668639eSJanne Grunau #interrupt-cells = <2>; 3380a8282b8SMark Kettenis interrupt-parent = <&aic>; 3390a8282b8SMark Kettenis interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>, 3400a8282b8SMark Kettenis <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>, 3410a8282b8SMark Kettenis <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>, 3420a8282b8SMark Kettenis <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>, 3430a8282b8SMark Kettenis <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>, 3440a8282b8SMark Kettenis <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>, 3450a8282b8SMark Kettenis <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>; 3460a8282b8SMark Kettenis }; 347ff2a8d91SMark Kettenis 3488adf987cSHector Martin pinctrl_aop: pinctrl@24a820000 { 3498adf987cSHector Martin compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 3508adf987cSHector Martin reg = <0x2 0x4a820000 0x0 0x4000>; 3518adf987cSHector Martin 3528adf987cSHector Martin gpio-controller; 3538adf987cSHector Martin #gpio-cells = <2>; 3548adf987cSHector Martin gpio-ranges = <&pinctrl_aop 0 0 42>; 3558adf987cSHector Martin apple,npins = <42>; 3568adf987cSHector Martin 3578adf987cSHector Martin interrupt-controller; 3588adf987cSHector Martin #interrupt-cells = <2>; 3598adf987cSHector Martin interrupt-parent = <&aic>; 3608adf987cSHector Martin interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>, 3618adf987cSHector Martin <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>, 3628adf987cSHector Martin <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>, 3638adf987cSHector Martin <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>, 3648adf987cSHector Martin <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>, 3658adf987cSHector Martin <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>, 3668adf987cSHector Martin <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>; 3678adf987cSHector Martin }; 3688adf987cSHector Martin 3693c866bb7SMarc Zyngier pcie0_dart_0: dart@681008000 { 3703c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 3713c866bb7SMarc Zyngier reg = <0x6 0x81008000 0x0 0x4000>; 3723c866bb7SMarc Zyngier #iommu-cells = <1>; 3733c866bb7SMarc Zyngier interrupt-parent = <&aic>; 3743c866bb7SMarc Zyngier interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>; 375106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 3763c866bb7SMarc Zyngier }; 3773c866bb7SMarc Zyngier 3783c866bb7SMarc Zyngier pcie0_dart_1: dart@682008000 { 3793c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 3803c866bb7SMarc Zyngier reg = <0x6 0x82008000 0x0 0x4000>; 3813c866bb7SMarc Zyngier #iommu-cells = <1>; 3823c866bb7SMarc Zyngier interrupt-parent = <&aic>; 3833c866bb7SMarc Zyngier interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>; 384106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 3853c866bb7SMarc Zyngier }; 3863c866bb7SMarc Zyngier 3873c866bb7SMarc Zyngier pcie0_dart_2: dart@683008000 { 3883c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 3893c866bb7SMarc Zyngier reg = <0x6 0x83008000 0x0 0x4000>; 3903c866bb7SMarc Zyngier #iommu-cells = <1>; 3913c866bb7SMarc Zyngier interrupt-parent = <&aic>; 3923c866bb7SMarc Zyngier interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>; 393106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 3943c866bb7SMarc Zyngier }; 3953c866bb7SMarc Zyngier 396ff2a8d91SMark Kettenis pcie0: pcie@690000000 { 397ff2a8d91SMark Kettenis compatible = "apple,t8103-pcie", "apple,pcie"; 398ff2a8d91SMark Kettenis device_type = "pci"; 399ff2a8d91SMark Kettenis 400ff2a8d91SMark Kettenis reg = <0x6 0x90000000 0x0 0x1000000>, 401ff2a8d91SMark Kettenis <0x6 0x80000000 0x0 0x100000>, 402ff2a8d91SMark Kettenis <0x6 0x81000000 0x0 0x4000>, 403ff2a8d91SMark Kettenis <0x6 0x82000000 0x0 0x4000>, 404ff2a8d91SMark Kettenis <0x6 0x83000000 0x0 0x4000>; 405ff2a8d91SMark Kettenis reg-names = "config", "rc", "port0", "port1", "port2"; 406ff2a8d91SMark Kettenis 407ff2a8d91SMark Kettenis interrupt-parent = <&aic>; 408ff2a8d91SMark Kettenis interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>, 409ff2a8d91SMark Kettenis <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>, 410ff2a8d91SMark Kettenis <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>; 411ff2a8d91SMark Kettenis 412ff2a8d91SMark Kettenis msi-controller; 413ff2a8d91SMark Kettenis msi-parent = <&pcie0>; 414ff2a8d91SMark Kettenis msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>; 415ff2a8d91SMark Kettenis 4163c866bb7SMarc Zyngier 4173c866bb7SMarc Zyngier iommu-map = <0x100 &pcie0_dart_0 1 1>, 4183c866bb7SMarc Zyngier <0x200 &pcie0_dart_1 1 1>, 4193c866bb7SMarc Zyngier <0x300 &pcie0_dart_2 1 1>; 4203c866bb7SMarc Zyngier iommu-map-mask = <0xff00>; 4213c866bb7SMarc Zyngier 422ff2a8d91SMark Kettenis bus-range = <0 3>; 423ff2a8d91SMark Kettenis #address-cells = <3>; 424ff2a8d91SMark Kettenis #size-cells = <2>; 425ff2a8d91SMark Kettenis ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>, 426ff2a8d91SMark Kettenis <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>; 427ff2a8d91SMark Kettenis 428106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 429ff2a8d91SMark Kettenis pinctrl-0 = <&pcie_pins>; 430ff2a8d91SMark Kettenis pinctrl-names = "default"; 431ff2a8d91SMark Kettenis 432128888a6SMarc Zyngier port00: pci@0,0 { 433ff2a8d91SMark Kettenis device_type = "pci"; 434ff2a8d91SMark Kettenis reg = <0x0 0x0 0x0 0x0 0x0>; 4355b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>; 436ff2a8d91SMark Kettenis 437ff2a8d91SMark Kettenis #address-cells = <3>; 438ff2a8d91SMark Kettenis #size-cells = <2>; 439ff2a8d91SMark Kettenis ranges; 440128888a6SMarc Zyngier 441128888a6SMarc Zyngier interrupt-controller; 442128888a6SMarc Zyngier #interrupt-cells = <1>; 443128888a6SMarc Zyngier 444128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 445128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port00 0 0 0 0>, 446128888a6SMarc Zyngier <0 0 0 2 &port00 0 0 0 1>, 447128888a6SMarc Zyngier <0 0 0 3 &port00 0 0 0 2>, 448128888a6SMarc Zyngier <0 0 0 4 &port00 0 0 0 3>; 449ff2a8d91SMark Kettenis }; 450ff2a8d91SMark Kettenis 451128888a6SMarc Zyngier port01: pci@1,0 { 452ff2a8d91SMark Kettenis device_type = "pci"; 453ff2a8d91SMark Kettenis reg = <0x800 0x0 0x0 0x0 0x0>; 4545b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>; 455ff2a8d91SMark Kettenis 456ff2a8d91SMark Kettenis #address-cells = <3>; 457ff2a8d91SMark Kettenis #size-cells = <2>; 458ff2a8d91SMark Kettenis ranges; 459128888a6SMarc Zyngier 460128888a6SMarc Zyngier interrupt-controller; 461128888a6SMarc Zyngier #interrupt-cells = <1>; 462128888a6SMarc Zyngier 463128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 464128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port01 0 0 0 0>, 465128888a6SMarc Zyngier <0 0 0 2 &port01 0 0 0 1>, 466128888a6SMarc Zyngier <0 0 0 3 &port01 0 0 0 2>, 467128888a6SMarc Zyngier <0 0 0 4 &port01 0 0 0 3>; 468ff2a8d91SMark Kettenis }; 469ff2a8d91SMark Kettenis 470128888a6SMarc Zyngier port02: pci@2,0 { 471ff2a8d91SMark Kettenis device_type = "pci"; 472ff2a8d91SMark Kettenis reg = <0x1000 0x0 0x0 0x0 0x0>; 4735b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>; 474ff2a8d91SMark Kettenis 475ff2a8d91SMark Kettenis #address-cells = <3>; 476ff2a8d91SMark Kettenis #size-cells = <2>; 477ff2a8d91SMark Kettenis ranges; 478128888a6SMarc Zyngier 479128888a6SMarc Zyngier interrupt-controller; 480128888a6SMarc Zyngier #interrupt-cells = <1>; 481128888a6SMarc Zyngier 482128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 483128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port02 0 0 0 0>, 484128888a6SMarc Zyngier <0 0 0 2 &port02 0 0 0 1>, 485128888a6SMarc Zyngier <0 0 0 3 &port02 0 0 0 2>, 486128888a6SMarc Zyngier <0 0 0 4 &port02 0 0 0 3>; 487ff2a8d91SMark Kettenis }; 488ff2a8d91SMark Kettenis }; 4897d2d16ccSHector Martin }; 4907d2d16ccSHector Martin}; 491106ba3b4SHector Martin 492106ba3b4SHector Martin#include "t8103-pmgr.dtsi" 493