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
107d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h>
117d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h>
120a8282b8SMark Kettenis#include <dt-bindings/pinctrl/apple.h>
137d2d16ccSHector Martin
147d2d16ccSHector Martin/ {
157d2d16ccSHector Martin	compatible = "apple,t8103", "apple,arm-platform";
167d2d16ccSHector Martin
177d2d16ccSHector Martin	#address-cells = <2>;
187d2d16ccSHector Martin	#size-cells = <2>;
197d2d16ccSHector Martin
207d2d16ccSHector Martin	cpus {
217d2d16ccSHector Martin		#address-cells = <2>;
227d2d16ccSHector Martin		#size-cells = <0>;
237d2d16ccSHector Martin
247d2d16ccSHector Martin		cpu0: cpu@0 {
257d2d16ccSHector Martin			compatible = "apple,icestorm";
267d2d16ccSHector Martin			device_type = "cpu";
277d2d16ccSHector Martin			reg = <0x0 0x0>;
287d2d16ccSHector Martin			enable-method = "spin-table";
297d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
307d2d16ccSHector Martin		};
317d2d16ccSHector Martin
327d2d16ccSHector Martin		cpu1: cpu@1 {
337d2d16ccSHector Martin			compatible = "apple,icestorm";
347d2d16ccSHector Martin			device_type = "cpu";
357d2d16ccSHector Martin			reg = <0x0 0x1>;
367d2d16ccSHector Martin			enable-method = "spin-table";
377d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
387d2d16ccSHector Martin		};
397d2d16ccSHector Martin
407d2d16ccSHector Martin		cpu2: cpu@2 {
417d2d16ccSHector Martin			compatible = "apple,icestorm";
427d2d16ccSHector Martin			device_type = "cpu";
437d2d16ccSHector Martin			reg = <0x0 0x2>;
447d2d16ccSHector Martin			enable-method = "spin-table";
457d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
467d2d16ccSHector Martin		};
477d2d16ccSHector Martin
487d2d16ccSHector Martin		cpu3: cpu@3 {
497d2d16ccSHector Martin			compatible = "apple,icestorm";
507d2d16ccSHector Martin			device_type = "cpu";
517d2d16ccSHector Martin			reg = <0x0 0x3>;
527d2d16ccSHector Martin			enable-method = "spin-table";
537d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
547d2d16ccSHector Martin		};
557d2d16ccSHector Martin
567d2d16ccSHector Martin		cpu4: cpu@10100 {
577d2d16ccSHector Martin			compatible = "apple,firestorm";
587d2d16ccSHector Martin			device_type = "cpu";
597d2d16ccSHector Martin			reg = <0x0 0x10100>;
607d2d16ccSHector Martin			enable-method = "spin-table";
617d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
627d2d16ccSHector Martin		};
637d2d16ccSHector Martin
647d2d16ccSHector Martin		cpu5: cpu@10101 {
657d2d16ccSHector Martin			compatible = "apple,firestorm";
667d2d16ccSHector Martin			device_type = "cpu";
677d2d16ccSHector Martin			reg = <0x0 0x10101>;
687d2d16ccSHector Martin			enable-method = "spin-table";
697d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
707d2d16ccSHector Martin		};
717d2d16ccSHector Martin
727d2d16ccSHector Martin		cpu6: cpu@10102 {
737d2d16ccSHector Martin			compatible = "apple,firestorm";
747d2d16ccSHector Martin			device_type = "cpu";
757d2d16ccSHector Martin			reg = <0x0 0x10102>;
767d2d16ccSHector Martin			enable-method = "spin-table";
777d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
787d2d16ccSHector Martin		};
797d2d16ccSHector Martin
807d2d16ccSHector Martin		cpu7: cpu@10103 {
817d2d16ccSHector Martin			compatible = "apple,firestorm";
827d2d16ccSHector Martin			device_type = "cpu";
837d2d16ccSHector Martin			reg = <0x0 0x10103>;
847d2d16ccSHector Martin			enable-method = "spin-table";
857d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
867d2d16ccSHector Martin		};
877d2d16ccSHector Martin	};
887d2d16ccSHector Martin
897d2d16ccSHector Martin	timer {
907d2d16ccSHector Martin		compatible = "arm,armv8-timer";
917d2d16ccSHector Martin		interrupt-parent = <&aic>;
927d2d16ccSHector Martin		interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
937d2d16ccSHector Martin		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
947d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
957d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
967d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
977d2d16ccSHector Martin	};
987d2d16ccSHector Martin
9957337b25SHector Martin	clkref: clock-ref {
1007d2d16ccSHector Martin		compatible = "fixed-clock";
1017d2d16ccSHector Martin		#clock-cells = <0>;
1027d2d16ccSHector Martin		clock-frequency = <24000000>;
10357337b25SHector Martin		clock-output-names = "clkref";
1047d2d16ccSHector Martin	};
1057d2d16ccSHector Martin
1067d2d16ccSHector Martin	soc {
1077d2d16ccSHector Martin		compatible = "simple-bus";
1087d2d16ccSHector Martin		#address-cells = <2>;
1097d2d16ccSHector Martin		#size-cells = <2>;
1107d2d16ccSHector Martin
1117d2d16ccSHector Martin		ranges;
1127d2d16ccSHector Martin		nonposted-mmio;
1137d2d16ccSHector Martin
11490458f6eSJanne Grunau		i2c0: i2c@235010000 {
11590458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
11690458f6eSJanne Grunau			reg = <0x2 0x35010000 0x0 0x4000>;
11757337b25SHector Martin			clocks = <&clkref>;
11890458f6eSJanne Grunau			interrupt-parent = <&aic>;
11990458f6eSJanne Grunau			interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
12090458f6eSJanne Grunau			pinctrl-0 = <&i2c0_pins>;
12190458f6eSJanne Grunau			pinctrl-names = "default";
12290458f6eSJanne Grunau			#address-cells = <0x1>;
12390458f6eSJanne Grunau			#size-cells = <0x0>;
124106ba3b4SHector Martin			power-domains = <&ps_i2c0>;
12590458f6eSJanne Grunau		};
12690458f6eSJanne Grunau
12790458f6eSJanne Grunau		i2c1: i2c@235014000 {
12890458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
12990458f6eSJanne Grunau			reg = <0x2 0x35014000 0x0 0x4000>;
13057337b25SHector Martin			clocks = <&clkref>;
13190458f6eSJanne Grunau			interrupt-parent = <&aic>;
13290458f6eSJanne Grunau			interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>;
13390458f6eSJanne Grunau			pinctrl-0 = <&i2c1_pins>;
13490458f6eSJanne Grunau			pinctrl-names = "default";
13590458f6eSJanne Grunau			#address-cells = <0x1>;
13690458f6eSJanne Grunau			#size-cells = <0x0>;
137106ba3b4SHector Martin			power-domains = <&ps_i2c1>;
13890458f6eSJanne Grunau		};
13990458f6eSJanne Grunau
14090458f6eSJanne Grunau		i2c2: i2c@235018000 {
14190458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
14290458f6eSJanne Grunau			reg = <0x2 0x35018000 0x0 0x4000>;
14357337b25SHector Martin			clocks = <&clkref>;
14490458f6eSJanne Grunau			interrupt-parent = <&aic>;
14590458f6eSJanne Grunau			interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>;
14690458f6eSJanne Grunau			pinctrl-0 = <&i2c2_pins>;
14790458f6eSJanne Grunau			pinctrl-names = "default";
14890458f6eSJanne Grunau			#address-cells = <0x1>;
14990458f6eSJanne Grunau			#size-cells = <0x0>;
15090458f6eSJanne Grunau			status = "disabled"; /* not used in all devices */
151106ba3b4SHector Martin			power-domains = <&ps_i2c2>;
15290458f6eSJanne Grunau		};
15390458f6eSJanne Grunau
15490458f6eSJanne Grunau		i2c3: i2c@23501c000 {
15590458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
15690458f6eSJanne Grunau			reg = <0x2 0x3501c000 0x0 0x4000>;
15757337b25SHector Martin			clocks = <&clkref>;
15890458f6eSJanne Grunau			interrupt-parent = <&aic>;
15990458f6eSJanne Grunau			interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>;
16090458f6eSJanne Grunau			pinctrl-0 = <&i2c3_pins>;
16190458f6eSJanne Grunau			pinctrl-names = "default";
16290458f6eSJanne Grunau			#address-cells = <0x1>;
16390458f6eSJanne Grunau			#size-cells = <0x0>;
164106ba3b4SHector Martin			power-domains = <&ps_i2c3>;
16590458f6eSJanne Grunau		};
16690458f6eSJanne Grunau
16790458f6eSJanne Grunau		i2c4: i2c@235020000 {
16890458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
16990458f6eSJanne Grunau			reg = <0x2 0x35020000 0x0 0x4000>;
17057337b25SHector Martin			clocks = <&clkref>;
17190458f6eSJanne Grunau			interrupt-parent = <&aic>;
17290458f6eSJanne Grunau			interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>;
17390458f6eSJanne Grunau			pinctrl-0 = <&i2c4_pins>;
17490458f6eSJanne Grunau			pinctrl-names = "default";
17590458f6eSJanne Grunau			#address-cells = <0x1>;
17690458f6eSJanne Grunau			#size-cells = <0x0>;
177106ba3b4SHector Martin			power-domains = <&ps_i2c4>;
17890458f6eSJanne Grunau			status = "disabled"; /* only used in J293 */
17990458f6eSJanne Grunau		};
18090458f6eSJanne Grunau
1817d2d16ccSHector Martin		serial0: serial@235200000 {
1827d2d16ccSHector Martin			compatible = "apple,s5l-uart";
1837d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
1847d2d16ccSHector Martin			reg-io-width = <4>;
1857d2d16ccSHector Martin			interrupt-parent = <&aic>;
1867d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
1877d2d16ccSHector Martin			/*
1887d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
1897d2d16ccSHector Martin			 * be a third selectable clock.
1907d2d16ccSHector Martin			 */
19157337b25SHector Martin			clocks = <&clkref>, <&clkref>;
1927d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
193106ba3b4SHector Martin			power-domains = <&ps_uart0>;
1947d2d16ccSHector Martin			status = "disabled";
1957d2d16ccSHector Martin		};
1967d2d16ccSHector Martin
1972ba22cfeSHector Martin		serial2: serial@235208000 {
1982ba22cfeSHector Martin			compatible = "apple,s5l-uart";
1992ba22cfeSHector Martin			reg = <0x2 0x35208000 0x0 0x1000>;
2002ba22cfeSHector Martin			reg-io-width = <4>;
2012ba22cfeSHector Martin			interrupt-parent = <&aic>;
2022ba22cfeSHector Martin			interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
20357337b25SHector Martin			clocks = <&clkref>, <&clkref>;
2042ba22cfeSHector Martin			clock-names = "uart", "clk_uart_baud0";
2052ba22cfeSHector Martin			power-domains = <&ps_uart2>;
2062ba22cfeSHector Martin			status = "disabled";
2072ba22cfeSHector Martin		};
2082ba22cfeSHector Martin
2097d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
2107d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
2117d2d16ccSHector Martin			#interrupt-cells = <3>;
2127d2d16ccSHector Martin			interrupt-controller;
2137d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
214106ba3b4SHector Martin			power-domains = <&ps_aic>;
215106ba3b4SHector Martin		};
216106ba3b4SHector Martin
217106ba3b4SHector Martin		pmgr: power-management@23b700000 {
218106ba3b4SHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
219106ba3b4SHector Martin			#address-cells = <1>;
220106ba3b4SHector Martin			#size-cells = <1>;
221106ba3b4SHector Martin			reg = <0x2 0x3b700000 0 0x14000>;
2227d2d16ccSHector Martin		};
2230a8282b8SMark Kettenis
2240a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
2250a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
2260a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
227106ba3b4SHector Martin			power-domains = <&ps_gpio>;
2280a8282b8SMark Kettenis
2290a8282b8SMark Kettenis			gpio-controller;
2300a8282b8SMark Kettenis			#gpio-cells = <2>;
2310a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
2320a8282b8SMark Kettenis			apple,npins = <212>;
2330a8282b8SMark Kettenis
2340a8282b8SMark Kettenis			interrupt-controller;
2350668639eSJanne Grunau			#interrupt-cells = <2>;
2360a8282b8SMark Kettenis			interrupt-parent = <&aic>;
2370a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
2380a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
2390a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
2400a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
2410a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
2420a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
2430a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
2440a8282b8SMark Kettenis
24590458f6eSJanne Grunau			i2c0_pins: i2c0-pins {
24690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(192, 1)>,
24790458f6eSJanne Grunau					 <APPLE_PINMUX(188, 1)>;
24890458f6eSJanne Grunau			};
24990458f6eSJanne Grunau
25090458f6eSJanne Grunau			i2c1_pins: i2c1-pins {
25190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(201, 1)>,
25290458f6eSJanne Grunau					 <APPLE_PINMUX(199, 1)>;
25390458f6eSJanne Grunau			};
25490458f6eSJanne Grunau
25590458f6eSJanne Grunau			i2c2_pins: i2c2-pins {
25690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(163, 1)>,
25790458f6eSJanne Grunau					 <APPLE_PINMUX(162, 1)>;
25890458f6eSJanne Grunau			};
25990458f6eSJanne Grunau
26090458f6eSJanne Grunau			i2c3_pins: i2c3-pins {
26190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(73, 1)>,
26290458f6eSJanne Grunau					 <APPLE_PINMUX(72, 1)>;
26390458f6eSJanne Grunau			};
26490458f6eSJanne Grunau
26590458f6eSJanne Grunau			i2c4_pins: i2c4-pins {
26690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(135, 1)>,
26790458f6eSJanne Grunau					 <APPLE_PINMUX(134, 1)>;
26890458f6eSJanne Grunau			};
26990458f6eSJanne Grunau
2700a8282b8SMark Kettenis			pcie_pins: pcie-pins {
2710a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
2720a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
2730a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
2740a8282b8SMark Kettenis			};
2750a8282b8SMark Kettenis		};
2760a8282b8SMark Kettenis
2770a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
2780a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
2790a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
280106ba3b4SHector Martin			power-domains = <&ps_nub_gpio>;
2810a8282b8SMark Kettenis
2820a8282b8SMark Kettenis			gpio-controller;
2830a8282b8SMark Kettenis			#gpio-cells = <2>;
2840a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
2850a8282b8SMark Kettenis			apple,npins = <23>;
2860a8282b8SMark Kettenis
2870a8282b8SMark Kettenis			interrupt-controller;
2880668639eSJanne Grunau			#interrupt-cells = <2>;
2890a8282b8SMark Kettenis			interrupt-parent = <&aic>;
2900a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
2910a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
2920a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
2930a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
2940a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
2950a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
2960a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
2970a8282b8SMark Kettenis		};
2980a8282b8SMark Kettenis
299*8adf987cSHector Martin		pmgr_mini: power-management@23d280000 {
300*8adf987cSHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
301*8adf987cSHector Martin			#address-cells = <1>;
302*8adf987cSHector Martin			#size-cells = <1>;
303*8adf987cSHector Martin			reg = <0x2 0x3d280000 0 0x4000>;
304*8adf987cSHector Martin		};
305*8adf987cSHector Martin
306b4d11106SSven Peter		wdt: watchdog@23d2b0000 {
307b4d11106SSven Peter			compatible = "apple,t8103-wdt", "apple,wdt";
308b4d11106SSven Peter			reg = <0x2 0x3d2b0000 0x0 0x4000>;
30957337b25SHector Martin			clocks = <&clkref>;
310b4d11106SSven Peter			interrupt-parent = <&aic>;
311b4d11106SSven Peter			interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>;
312b4d11106SSven Peter		};
313b4d11106SSven Peter
3140a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
3150a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
3160a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
3170a8282b8SMark Kettenis
3180a8282b8SMark Kettenis			gpio-controller;
3190a8282b8SMark Kettenis			#gpio-cells = <2>;
3200a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
3210a8282b8SMark Kettenis			apple,npins = <16>;
3220a8282b8SMark Kettenis
3230a8282b8SMark Kettenis			interrupt-controller;
3240668639eSJanne Grunau			#interrupt-cells = <2>;
3250a8282b8SMark Kettenis			interrupt-parent = <&aic>;
3260a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
3270a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
3280a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
3290a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
3300a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
3310a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
3320a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
3330a8282b8SMark Kettenis		};
334ff2a8d91SMark Kettenis
335*8adf987cSHector Martin		pinctrl_aop: pinctrl@24a820000 {
336*8adf987cSHector Martin			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
337*8adf987cSHector Martin			reg = <0x2 0x4a820000 0x0 0x4000>;
338*8adf987cSHector Martin
339*8adf987cSHector Martin			gpio-controller;
340*8adf987cSHector Martin			#gpio-cells = <2>;
341*8adf987cSHector Martin			gpio-ranges = <&pinctrl_aop 0 0 42>;
342*8adf987cSHector Martin			apple,npins = <42>;
343*8adf987cSHector Martin
344*8adf987cSHector Martin			interrupt-controller;
345*8adf987cSHector Martin			#interrupt-cells = <2>;
346*8adf987cSHector Martin			interrupt-parent = <&aic>;
347*8adf987cSHector Martin			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
348*8adf987cSHector Martin				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
349*8adf987cSHector Martin				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
350*8adf987cSHector Martin				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
351*8adf987cSHector Martin				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
352*8adf987cSHector Martin				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
353*8adf987cSHector Martin				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
354*8adf987cSHector Martin		};
355*8adf987cSHector Martin
3563c866bb7SMarc Zyngier		pcie0_dart_0: dart@681008000 {
3573c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
3583c866bb7SMarc Zyngier			reg = <0x6 0x81008000 0x0 0x4000>;
3593c866bb7SMarc Zyngier			#iommu-cells = <1>;
3603c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
3613c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
362106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
3633c866bb7SMarc Zyngier		};
3643c866bb7SMarc Zyngier
3653c866bb7SMarc Zyngier		pcie0_dart_1: dart@682008000 {
3663c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
3673c866bb7SMarc Zyngier			reg = <0x6 0x82008000 0x0 0x4000>;
3683c866bb7SMarc Zyngier			#iommu-cells = <1>;
3693c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
3703c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
371106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
3723c866bb7SMarc Zyngier		};
3733c866bb7SMarc Zyngier
3743c866bb7SMarc Zyngier		pcie0_dart_2: dart@683008000 {
3753c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
3763c866bb7SMarc Zyngier			reg = <0x6 0x83008000 0x0 0x4000>;
3773c866bb7SMarc Zyngier			#iommu-cells = <1>;
3783c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
3793c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
380106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
3813c866bb7SMarc Zyngier		};
3823c866bb7SMarc Zyngier
383ff2a8d91SMark Kettenis		pcie0: pcie@690000000 {
384ff2a8d91SMark Kettenis			compatible = "apple,t8103-pcie", "apple,pcie";
385ff2a8d91SMark Kettenis			device_type = "pci";
386ff2a8d91SMark Kettenis
387ff2a8d91SMark Kettenis			reg = <0x6 0x90000000 0x0 0x1000000>,
388ff2a8d91SMark Kettenis			      <0x6 0x80000000 0x0 0x100000>,
389ff2a8d91SMark Kettenis			      <0x6 0x81000000 0x0 0x4000>,
390ff2a8d91SMark Kettenis			      <0x6 0x82000000 0x0 0x4000>,
391ff2a8d91SMark Kettenis			      <0x6 0x83000000 0x0 0x4000>;
392ff2a8d91SMark Kettenis			reg-names = "config", "rc", "port0", "port1", "port2";
393ff2a8d91SMark Kettenis
394ff2a8d91SMark Kettenis			interrupt-parent = <&aic>;
395ff2a8d91SMark Kettenis			interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
396ff2a8d91SMark Kettenis				     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
397ff2a8d91SMark Kettenis				     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
398ff2a8d91SMark Kettenis
399ff2a8d91SMark Kettenis			msi-controller;
400ff2a8d91SMark Kettenis			msi-parent = <&pcie0>;
401ff2a8d91SMark Kettenis			msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
402ff2a8d91SMark Kettenis
4033c866bb7SMarc Zyngier
4043c866bb7SMarc Zyngier			iommu-map = <0x100 &pcie0_dart_0 1 1>,
4053c866bb7SMarc Zyngier				    <0x200 &pcie0_dart_1 1 1>,
4063c866bb7SMarc Zyngier				    <0x300 &pcie0_dart_2 1 1>;
4073c866bb7SMarc Zyngier			iommu-map-mask = <0xff00>;
4083c866bb7SMarc Zyngier
409ff2a8d91SMark Kettenis			bus-range = <0 3>;
410ff2a8d91SMark Kettenis			#address-cells = <3>;
411ff2a8d91SMark Kettenis			#size-cells = <2>;
412ff2a8d91SMark Kettenis			ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
413ff2a8d91SMark Kettenis				 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
414ff2a8d91SMark Kettenis
415106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
416ff2a8d91SMark Kettenis			pinctrl-0 = <&pcie_pins>;
417ff2a8d91SMark Kettenis			pinctrl-names = "default";
418ff2a8d91SMark Kettenis
419128888a6SMarc Zyngier			port00: pci@0,0 {
420ff2a8d91SMark Kettenis				device_type = "pci";
421ff2a8d91SMark Kettenis				reg = <0x0 0x0 0x0 0x0 0x0>;
422ff2a8d91SMark Kettenis				reset-gpios = <&pinctrl_ap 152 0>;
423ff2a8d91SMark Kettenis
424ff2a8d91SMark Kettenis				#address-cells = <3>;
425ff2a8d91SMark Kettenis				#size-cells = <2>;
426ff2a8d91SMark Kettenis				ranges;
427128888a6SMarc Zyngier
428128888a6SMarc Zyngier				interrupt-controller;
429128888a6SMarc Zyngier				#interrupt-cells = <1>;
430128888a6SMarc Zyngier
431128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
432128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
433128888a6SMarc Zyngier						<0 0 0 2 &port00 0 0 0 1>,
434128888a6SMarc Zyngier						<0 0 0 3 &port00 0 0 0 2>,
435128888a6SMarc Zyngier						<0 0 0 4 &port00 0 0 0 3>;
436ff2a8d91SMark Kettenis			};
437ff2a8d91SMark Kettenis
438128888a6SMarc Zyngier			port01: pci@1,0 {
439ff2a8d91SMark Kettenis				device_type = "pci";
440ff2a8d91SMark Kettenis				reg = <0x800 0x0 0x0 0x0 0x0>;
441ff2a8d91SMark Kettenis				reset-gpios = <&pinctrl_ap 153 0>;
442ff2a8d91SMark Kettenis
443ff2a8d91SMark Kettenis				#address-cells = <3>;
444ff2a8d91SMark Kettenis				#size-cells = <2>;
445ff2a8d91SMark Kettenis				ranges;
446128888a6SMarc Zyngier
447128888a6SMarc Zyngier				interrupt-controller;
448128888a6SMarc Zyngier				#interrupt-cells = <1>;
449128888a6SMarc Zyngier
450128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
451128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
452128888a6SMarc Zyngier						<0 0 0 2 &port01 0 0 0 1>,
453128888a6SMarc Zyngier						<0 0 0 3 &port01 0 0 0 2>,
454128888a6SMarc Zyngier						<0 0 0 4 &port01 0 0 0 3>;
455ff2a8d91SMark Kettenis			};
456ff2a8d91SMark Kettenis
457128888a6SMarc Zyngier			port02: pci@2,0 {
458ff2a8d91SMark Kettenis				device_type = "pci";
459ff2a8d91SMark Kettenis				reg = <0x1000 0x0 0x0 0x0 0x0>;
460ff2a8d91SMark Kettenis				reset-gpios = <&pinctrl_ap 33 0>;
461ff2a8d91SMark Kettenis
462ff2a8d91SMark Kettenis				#address-cells = <3>;
463ff2a8d91SMark Kettenis				#size-cells = <2>;
464ff2a8d91SMark Kettenis				ranges;
465128888a6SMarc Zyngier
466128888a6SMarc Zyngier				interrupt-controller;
467128888a6SMarc Zyngier				#interrupt-cells = <1>;
468128888a6SMarc Zyngier
469128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
470128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
471128888a6SMarc Zyngier						<0 0 0 2 &port02 0 0 0 1>,
472128888a6SMarc Zyngier						<0 0 0 3 &port02 0 0 0 2>,
473128888a6SMarc Zyngier						<0 0 0 4 &port02 0 0 0 3>;
474ff2a8d91SMark Kettenis			};
475ff2a8d91SMark Kettenis		};
4767d2d16ccSHector Martin	};
4777d2d16ccSHector Martin};
478106ba3b4SHector Martin
479106ba3b4SHector Martin#include "t8103-pmgr.dtsi"
480