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
1000f522efcSMarc Zyngier	pmu-e {
1010f522efcSMarc Zyngier		compatible = "apple,icestorm-pmu";
1020f522efcSMarc Zyngier		interrupt-parent = <&aic>;
1030f522efcSMarc Zyngier		interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
1040f522efcSMarc Zyngier	};
1050f522efcSMarc Zyngier
1060f522efcSMarc Zyngier	pmu-p {
1070f522efcSMarc Zyngier		compatible = "apple,firestorm-pmu";
1080f522efcSMarc Zyngier		interrupt-parent = <&aic>;
1090f522efcSMarc Zyngier		interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
1100f522efcSMarc Zyngier	};
1110f522efcSMarc Zyngier
11257337b25SHector Martin	clkref: clock-ref {
1137d2d16ccSHector Martin		compatible = "fixed-clock";
1147d2d16ccSHector Martin		#clock-cells = <0>;
1157d2d16ccSHector Martin		clock-frequency = <24000000>;
11657337b25SHector Martin		clock-output-names = "clkref";
1177d2d16ccSHector Martin	};
1187d2d16ccSHector Martin
1198a3df85aSMartin Povišer	/*
1208a3df85aSMartin Povišer	 * This is a fabulated representation of the input clock
1218a3df85aSMartin Povišer	 * to NCO since we don't know the true clock tree.
1228a3df85aSMartin Povišer	 */
1238a3df85aSMartin Povišer	nco_clkref: clock-ref-nco {
1248a3df85aSMartin Povišer		compatible = "fixed-clock";
1258a3df85aSMartin Povišer		#clock-cells = <0>;
1268a3df85aSMartin Povišer		clock-output-names = "nco_ref";
1278a3df85aSMartin Povišer	};
1288a3df85aSMartin Povišer
1297d2d16ccSHector Martin	soc {
1307d2d16ccSHector Martin		compatible = "simple-bus";
1317d2d16ccSHector Martin		#address-cells = <2>;
1327d2d16ccSHector Martin		#size-cells = <2>;
1337d2d16ccSHector Martin
1347d2d16ccSHector Martin		ranges;
1357d2d16ccSHector Martin		nonposted-mmio;
1367d2d16ccSHector Martin
1378a3df85aSMartin Povišer		dart_sio: iommu@235004000 {
1388a3df85aSMartin Povišer			compatible = "apple,t8103-dart";
1398a3df85aSMartin Povišer			reg = <0x2 0x35004000 0x0 0x4000>;
1408a3df85aSMartin Povišer			interrupt-parent = <&aic>;
1418a3df85aSMartin Povišer			interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>;
1428a3df85aSMartin Povišer			#iommu-cells = <1>;
1438a3df85aSMartin Povišer			power-domains = <&ps_sio_cpu>;
1448a3df85aSMartin Povišer		};
1458a3df85aSMartin Povišer
14690458f6eSJanne Grunau		i2c0: i2c@235010000 {
14790458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
14890458f6eSJanne Grunau			reg = <0x2 0x35010000 0x0 0x4000>;
14957337b25SHector Martin			clocks = <&clkref>;
15090458f6eSJanne Grunau			interrupt-parent = <&aic>;
15190458f6eSJanne Grunau			interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
15290458f6eSJanne Grunau			pinctrl-0 = <&i2c0_pins>;
15390458f6eSJanne Grunau			pinctrl-names = "default";
15490458f6eSJanne Grunau			#address-cells = <0x1>;
15590458f6eSJanne Grunau			#size-cells = <0x0>;
156106ba3b4SHector Martin			power-domains = <&ps_i2c0>;
15790458f6eSJanne Grunau		};
15890458f6eSJanne Grunau
15990458f6eSJanne Grunau		i2c1: i2c@235014000 {
16090458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
16190458f6eSJanne Grunau			reg = <0x2 0x35014000 0x0 0x4000>;
16257337b25SHector Martin			clocks = <&clkref>;
16390458f6eSJanne Grunau			interrupt-parent = <&aic>;
16490458f6eSJanne Grunau			interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>;
16590458f6eSJanne Grunau			pinctrl-0 = <&i2c1_pins>;
16690458f6eSJanne Grunau			pinctrl-names = "default";
16790458f6eSJanne Grunau			#address-cells = <0x1>;
16890458f6eSJanne Grunau			#size-cells = <0x0>;
169106ba3b4SHector Martin			power-domains = <&ps_i2c1>;
17090458f6eSJanne Grunau		};
17190458f6eSJanne Grunau
17290458f6eSJanne Grunau		i2c2: i2c@235018000 {
17390458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
17490458f6eSJanne Grunau			reg = <0x2 0x35018000 0x0 0x4000>;
17557337b25SHector Martin			clocks = <&clkref>;
17690458f6eSJanne Grunau			interrupt-parent = <&aic>;
17790458f6eSJanne Grunau			interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>;
17890458f6eSJanne Grunau			pinctrl-0 = <&i2c2_pins>;
17990458f6eSJanne Grunau			pinctrl-names = "default";
18090458f6eSJanne Grunau			#address-cells = <0x1>;
18190458f6eSJanne Grunau			#size-cells = <0x0>;
18290458f6eSJanne Grunau			status = "disabled"; /* not used in all devices */
183106ba3b4SHector Martin			power-domains = <&ps_i2c2>;
18490458f6eSJanne Grunau		};
18590458f6eSJanne Grunau
18690458f6eSJanne Grunau		i2c3: i2c@23501c000 {
18790458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
18890458f6eSJanne Grunau			reg = <0x2 0x3501c000 0x0 0x4000>;
18957337b25SHector Martin			clocks = <&clkref>;
19090458f6eSJanne Grunau			interrupt-parent = <&aic>;
19190458f6eSJanne Grunau			interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>;
19290458f6eSJanne Grunau			pinctrl-0 = <&i2c3_pins>;
19390458f6eSJanne Grunau			pinctrl-names = "default";
19490458f6eSJanne Grunau			#address-cells = <0x1>;
19590458f6eSJanne Grunau			#size-cells = <0x0>;
196106ba3b4SHector Martin			power-domains = <&ps_i2c3>;
19790458f6eSJanne Grunau		};
19890458f6eSJanne Grunau
19990458f6eSJanne Grunau		i2c4: i2c@235020000 {
20090458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
20190458f6eSJanne Grunau			reg = <0x2 0x35020000 0x0 0x4000>;
20257337b25SHector Martin			clocks = <&clkref>;
20390458f6eSJanne Grunau			interrupt-parent = <&aic>;
20490458f6eSJanne Grunau			interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>;
20590458f6eSJanne Grunau			pinctrl-0 = <&i2c4_pins>;
20690458f6eSJanne Grunau			pinctrl-names = "default";
20790458f6eSJanne Grunau			#address-cells = <0x1>;
20890458f6eSJanne Grunau			#size-cells = <0x0>;
209106ba3b4SHector Martin			power-domains = <&ps_i2c4>;
21090458f6eSJanne Grunau			status = "disabled"; /* only used in J293 */
21190458f6eSJanne Grunau		};
21290458f6eSJanne Grunau
2137d2d16ccSHector Martin		serial0: serial@235200000 {
2147d2d16ccSHector Martin			compatible = "apple,s5l-uart";
2157d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
2167d2d16ccSHector Martin			reg-io-width = <4>;
2177d2d16ccSHector Martin			interrupt-parent = <&aic>;
2187d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
2197d2d16ccSHector Martin			/*
2207d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
2217d2d16ccSHector Martin			 * be a third selectable clock.
2227d2d16ccSHector Martin			 */
22357337b25SHector Martin			clocks = <&clkref>, <&clkref>;
2247d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
225106ba3b4SHector Martin			power-domains = <&ps_uart0>;
2267d2d16ccSHector Martin			status = "disabled";
2277d2d16ccSHector Martin		};
2287d2d16ccSHector Martin
2292ba22cfeSHector Martin		serial2: serial@235208000 {
2302ba22cfeSHector Martin			compatible = "apple,s5l-uart";
2312ba22cfeSHector Martin			reg = <0x2 0x35208000 0x0 0x1000>;
2322ba22cfeSHector Martin			reg-io-width = <4>;
2332ba22cfeSHector Martin			interrupt-parent = <&aic>;
2342ba22cfeSHector Martin			interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
23557337b25SHector Martin			clocks = <&clkref>, <&clkref>;
2362ba22cfeSHector Martin			clock-names = "uart", "clk_uart_baud0";
2372ba22cfeSHector Martin			power-domains = <&ps_uart2>;
2387d2d16ccSHector Martin			status = "disabled";
2397d2d16ccSHector Martin		};
2407d2d16ccSHector Martin
2418a3df85aSMartin Povišer		admac: dma-controller@238200000 {
2428a3df85aSMartin Povišer			compatible = "apple,t8103-admac", "apple,admac";
2438a3df85aSMartin Povišer			reg = <0x2 0x38200000 0x0 0x34000>;
2448a3df85aSMartin Povišer			dma-channels = <24>;
2458a3df85aSMartin Povišer			interrupts-extended = <0>,
2468a3df85aSMartin Povišer					      <&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>,
2478a3df85aSMartin Povišer					      <0>,
2488a3df85aSMartin Povišer					      <0>;
2498a3df85aSMartin Povišer			#dma-cells = <1>;
2508a3df85aSMartin Povišer			iommus = <&dart_sio 2>;
2518a3df85aSMartin Povišer			power-domains = <&ps_sio_adma>;
252*56fed763SMartin Povišer			resets = <&ps_audio_p>;
2538a3df85aSMartin Povišer		};
2548a3df85aSMartin Povišer
2558a3df85aSMartin Povišer		mca: i2s@238400000 {
2568a3df85aSMartin Povišer			compatible = "apple,t8103-mca", "apple,mca";
2578a3df85aSMartin Povišer			reg = <0x2 0x38400000 0x0 0x18000>,
2588a3df85aSMartin Povišer			      <0x2 0x38300000 0x0 0x30000>;
2598a3df85aSMartin Povišer
2608a3df85aSMartin Povišer			interrupt-parent = <&aic>;
2618a3df85aSMartin Povišer			interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>,
2628a3df85aSMartin Povišer				     <AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>,
2638a3df85aSMartin Povišer				     <AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>,
2648a3df85aSMartin Povišer				     <AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>,
2658a3df85aSMartin Povišer				     <AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>,
2668a3df85aSMartin Povišer				     <AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>;
2678a3df85aSMartin Povišer
2688a3df85aSMartin Povišer			resets = <&ps_audio_p>;
2698a3df85aSMartin Povišer			clocks = <&nco 0>, <&nco 1>, <&nco 2>,
2708a3df85aSMartin Povišer				 <&nco 3>, <&nco 4>, <&nco 4>;
2718a3df85aSMartin Povišer			power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
2728a3df85aSMartin Povišer					<&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
2738a3df85aSMartin Povišer			dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
2748a3df85aSMartin Povišer			       <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
2758a3df85aSMartin Povišer			       <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
2768a3df85aSMartin Povišer			       <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>,
2778a3df85aSMartin Povišer			       <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>,
2788a3df85aSMartin Povišer			       <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>;
2798a3df85aSMartin Povišer			dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
2808a3df85aSMartin Povišer				"tx1a", "rx1a", "tx1b", "rx1b",
2818a3df85aSMartin Povišer				"tx2a", "rx2a", "tx2b", "rx2b",
2828a3df85aSMartin Povišer				"tx3a", "rx3a", "tx3b", "rx3b",
2838a3df85aSMartin Povišer				"tx4a", "rx4a", "tx4b", "rx4b",
2848a3df85aSMartin Povišer				"tx5a", "rx5a", "tx5b", "rx5b";
2858a3df85aSMartin Povišer
2868a3df85aSMartin Povišer			#sound-dai-cells = <1>;
2878a3df85aSMartin Povišer		};
2888a3df85aSMartin Povišer
2898a3df85aSMartin Povišer		nco: clock-controller@23b044000 {
2908a3df85aSMartin Povišer			compatible = "apple,t8103-nco", "apple,nco";
2918a3df85aSMartin Povišer			reg = <0x2 0x3b044000 0x0 0x14000>;
2928a3df85aSMartin Povišer			clocks = <&nco_clkref>;
2938a3df85aSMartin Povišer			#clock-cells = <1>;
2948a3df85aSMartin Povišer		};
2958a3df85aSMartin Povišer
2967d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
2977d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
2987d2d16ccSHector Martin			#interrupt-cells = <3>;
2997d2d16ccSHector Martin			interrupt-controller;
3007d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
301106ba3b4SHector Martin			power-domains = <&ps_aic>;
3021852e22bSMarc Zyngier
3031852e22bSMarc Zyngier			affinities {
3041852e22bSMarc Zyngier				e-core-pmu-affinity {
3051852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_E>;
3061852e22bSMarc Zyngier					cpus = <&cpu0 &cpu1 &cpu2 &cpu3>;
3071852e22bSMarc Zyngier				};
3081852e22bSMarc Zyngier
3091852e22bSMarc Zyngier				p-core-pmu-affinity {
3101852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_P>;
3111852e22bSMarc Zyngier					cpus = <&cpu4 &cpu5 &cpu6 &cpu7>;
3121852e22bSMarc Zyngier				};
3131852e22bSMarc Zyngier			};
314106ba3b4SHector Martin		};
315106ba3b4SHector Martin
316106ba3b4SHector Martin		pmgr: power-management@23b700000 {
317106ba3b4SHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
318106ba3b4SHector Martin			#address-cells = <1>;
319106ba3b4SHector Martin			#size-cells = <1>;
320106ba3b4SHector Martin			reg = <0x2 0x3b700000 0 0x14000>;
3217d2d16ccSHector Martin		};
3220a8282b8SMark Kettenis
3230a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
3240a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
3250a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
326106ba3b4SHector Martin			power-domains = <&ps_gpio>;
3270a8282b8SMark Kettenis
3280a8282b8SMark Kettenis			gpio-controller;
3290a8282b8SMark Kettenis			#gpio-cells = <2>;
3300a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
3310a8282b8SMark Kettenis			apple,npins = <212>;
3320a8282b8SMark Kettenis
3330a8282b8SMark Kettenis			interrupt-controller;
3340668639eSJanne Grunau			#interrupt-cells = <2>;
3350a8282b8SMark Kettenis			interrupt-parent = <&aic>;
3360a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
3370a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
3380a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
3390a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
3400a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
3410a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
3420a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
3430a8282b8SMark Kettenis
34490458f6eSJanne Grunau			i2c0_pins: i2c0-pins {
34590458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(192, 1)>,
34690458f6eSJanne Grunau					 <APPLE_PINMUX(188, 1)>;
34790458f6eSJanne Grunau			};
34890458f6eSJanne Grunau
34990458f6eSJanne Grunau			i2c1_pins: i2c1-pins {
35090458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(201, 1)>,
35190458f6eSJanne Grunau					 <APPLE_PINMUX(199, 1)>;
35290458f6eSJanne Grunau			};
35390458f6eSJanne Grunau
35490458f6eSJanne Grunau			i2c2_pins: i2c2-pins {
35590458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(163, 1)>,
35690458f6eSJanne Grunau					 <APPLE_PINMUX(162, 1)>;
35790458f6eSJanne Grunau			};
35890458f6eSJanne Grunau
35990458f6eSJanne Grunau			i2c3_pins: i2c3-pins {
36090458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(73, 1)>,
36190458f6eSJanne Grunau					 <APPLE_PINMUX(72, 1)>;
36290458f6eSJanne Grunau			};
36390458f6eSJanne Grunau
36490458f6eSJanne Grunau			i2c4_pins: i2c4-pins {
36590458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(135, 1)>,
36690458f6eSJanne Grunau					 <APPLE_PINMUX(134, 1)>;
36790458f6eSJanne Grunau			};
36890458f6eSJanne Grunau
3690a8282b8SMark Kettenis			pcie_pins: pcie-pins {
3700a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
3710a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
3720a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
3730a8282b8SMark Kettenis			};
3740a8282b8SMark Kettenis		};
3750a8282b8SMark Kettenis
3760a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
3770a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
3780a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
379106ba3b4SHector Martin			power-domains = <&ps_nub_gpio>;
3800a8282b8SMark Kettenis
3810a8282b8SMark Kettenis			gpio-controller;
3820a8282b8SMark Kettenis			#gpio-cells = <2>;
3830a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
3840a8282b8SMark Kettenis			apple,npins = <23>;
3850a8282b8SMark Kettenis
3860a8282b8SMark Kettenis			interrupt-controller;
3870668639eSJanne Grunau			#interrupt-cells = <2>;
3880a8282b8SMark Kettenis			interrupt-parent = <&aic>;
3890a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
3900a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
3910a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
3920a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
3930a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
3940a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
3950a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
3960a8282b8SMark Kettenis		};
3970a8282b8SMark Kettenis
3988adf987cSHector Martin		pmgr_mini: power-management@23d280000 {
3998adf987cSHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
4008adf987cSHector Martin			#address-cells = <1>;
4018adf987cSHector Martin			#size-cells = <1>;
4028adf987cSHector Martin			reg = <0x2 0x3d280000 0 0x4000>;
4038adf987cSHector Martin		};
4048adf987cSHector Martin
405b4d11106SSven Peter		wdt: watchdog@23d2b0000 {
406b4d11106SSven Peter			compatible = "apple,t8103-wdt", "apple,wdt";
407b4d11106SSven Peter			reg = <0x2 0x3d2b0000 0x0 0x4000>;
40857337b25SHector Martin			clocks = <&clkref>;
409b4d11106SSven Peter			interrupt-parent = <&aic>;
410b4d11106SSven Peter			interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>;
411b4d11106SSven Peter		};
412b4d11106SSven Peter
4130a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
4140a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
4150a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
4160a8282b8SMark Kettenis
4170a8282b8SMark Kettenis			gpio-controller;
4180a8282b8SMark Kettenis			#gpio-cells = <2>;
4190a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
4200a8282b8SMark Kettenis			apple,npins = <16>;
4210a8282b8SMark Kettenis
4220a8282b8SMark Kettenis			interrupt-controller;
4230668639eSJanne Grunau			#interrupt-cells = <2>;
4240a8282b8SMark Kettenis			interrupt-parent = <&aic>;
4250a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
4260a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
4270a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
4280a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
4290a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
4300a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
4310a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
4320a8282b8SMark Kettenis		};
433ff2a8d91SMark Kettenis
4348adf987cSHector Martin		pinctrl_aop: pinctrl@24a820000 {
4358adf987cSHector Martin			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
4368adf987cSHector Martin			reg = <0x2 0x4a820000 0x0 0x4000>;
4378adf987cSHector Martin
4388adf987cSHector Martin			gpio-controller;
4398adf987cSHector Martin			#gpio-cells = <2>;
4408adf987cSHector Martin			gpio-ranges = <&pinctrl_aop 0 0 42>;
4418adf987cSHector Martin			apple,npins = <42>;
4428adf987cSHector Martin
4438adf987cSHector Martin			interrupt-controller;
4448adf987cSHector Martin			#interrupt-cells = <2>;
4458adf987cSHector Martin			interrupt-parent = <&aic>;
4468adf987cSHector Martin			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
4478adf987cSHector Martin				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
4488adf987cSHector Martin				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
4498adf987cSHector Martin				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
4508adf987cSHector Martin				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
4518adf987cSHector Martin				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
4528adf987cSHector Martin				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
4538adf987cSHector Martin		};
4548adf987cSHector Martin
4555316d73bSSven Peter		ans_mbox: mbox@277408000 {
4565316d73bSSven Peter			compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
4575316d73bSSven Peter			reg = <0x2 0x77408000 0x0 0x4000>;
4585316d73bSSven Peter			interrupt-parent = <&aic>;
4595316d73bSSven Peter			interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>,
4605316d73bSSven Peter				<AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>,
4615316d73bSSven Peter				<AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>,
4625316d73bSSven Peter				<AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
4635316d73bSSven Peter			interrupt-names = "send-empty", "send-not-empty",
4645316d73bSSven Peter				"recv-empty", "recv-not-empty";
4655316d73bSSven Peter			#mbox-cells = <0>;
4665316d73bSSven Peter			power-domains = <&ps_ans2>;
4675316d73bSSven Peter		};
4685316d73bSSven Peter
4695316d73bSSven Peter		sart: iommu@27bc50000 {
4705316d73bSSven Peter			compatible = "apple,t8103-sart";
4715316d73bSSven Peter			reg = <0x2 0x7bc50000 0x0 0x10000>;
4725316d73bSSven Peter			power-domains = <&ps_ans2>;
4735316d73bSSven Peter		};
4745316d73bSSven Peter
4755316d73bSSven Peter		nvme@27bcc0000 {
4765316d73bSSven Peter			compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
4775316d73bSSven Peter			reg = <0x2 0x7bcc0000 0x0 0x40000>,
4785316d73bSSven Peter				<0x2 0x77400000 0x0 0x4000>;
4795316d73bSSven Peter			reg-names = "nvme", "ans";
4805316d73bSSven Peter			interrupt-parent = <&aic>;
4815316d73bSSven Peter			interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
4825316d73bSSven Peter			mboxes = <&ans_mbox>;
4835316d73bSSven Peter			apple,sart = <&sart>;
4845316d73bSSven Peter			power-domains = <&ps_ans2>, <&ps_apcie_st>;
4855316d73bSSven Peter			power-domain-names = "ans", "apcie0";
4865316d73bSSven Peter			resets = <&ps_ans2>;
4875316d73bSSven Peter		};
4885316d73bSSven Peter
4893c866bb7SMarc Zyngier		pcie0_dart_0: dart@681008000 {
4903c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
4913c866bb7SMarc Zyngier			reg = <0x6 0x81008000 0x0 0x4000>;
4923c866bb7SMarc Zyngier			#iommu-cells = <1>;
4933c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
4943c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
495106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
4963c866bb7SMarc Zyngier		};
4973c866bb7SMarc Zyngier
4983c866bb7SMarc Zyngier		pcie0_dart_1: dart@682008000 {
4993c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
5003c866bb7SMarc Zyngier			reg = <0x6 0x82008000 0x0 0x4000>;
5013c866bb7SMarc Zyngier			#iommu-cells = <1>;
5023c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
5033c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
504106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
5053c866bb7SMarc Zyngier		};
5063c866bb7SMarc Zyngier
5073c866bb7SMarc Zyngier		pcie0_dart_2: dart@683008000 {
5083c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
5093c866bb7SMarc Zyngier			reg = <0x6 0x83008000 0x0 0x4000>;
5103c866bb7SMarc Zyngier			#iommu-cells = <1>;
5113c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
5123c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
513106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
5143c866bb7SMarc Zyngier		};
5153c866bb7SMarc Zyngier
516ff2a8d91SMark Kettenis		pcie0: pcie@690000000 {
517ff2a8d91SMark Kettenis			compatible = "apple,t8103-pcie", "apple,pcie";
518ff2a8d91SMark Kettenis			device_type = "pci";
519ff2a8d91SMark Kettenis
520ff2a8d91SMark Kettenis			reg = <0x6 0x90000000 0x0 0x1000000>,
521ff2a8d91SMark Kettenis			      <0x6 0x80000000 0x0 0x100000>,
522ff2a8d91SMark Kettenis			      <0x6 0x81000000 0x0 0x4000>,
523ff2a8d91SMark Kettenis			      <0x6 0x82000000 0x0 0x4000>,
524ff2a8d91SMark Kettenis			      <0x6 0x83000000 0x0 0x4000>;
525ff2a8d91SMark Kettenis			reg-names = "config", "rc", "port0", "port1", "port2";
526ff2a8d91SMark Kettenis
527ff2a8d91SMark Kettenis			interrupt-parent = <&aic>;
528ff2a8d91SMark Kettenis			interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
529ff2a8d91SMark Kettenis				     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
530ff2a8d91SMark Kettenis				     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
531ff2a8d91SMark Kettenis
532ff2a8d91SMark Kettenis			msi-controller;
533ff2a8d91SMark Kettenis			msi-parent = <&pcie0>;
534ff2a8d91SMark Kettenis			msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
535ff2a8d91SMark Kettenis
5363c866bb7SMarc Zyngier
5373c866bb7SMarc Zyngier			iommu-map = <0x100 &pcie0_dart_0 1 1>,
5383c866bb7SMarc Zyngier				    <0x200 &pcie0_dart_1 1 1>,
5393c866bb7SMarc Zyngier				    <0x300 &pcie0_dart_2 1 1>;
5403c866bb7SMarc Zyngier			iommu-map-mask = <0xff00>;
5413c866bb7SMarc Zyngier
542ff2a8d91SMark Kettenis			bus-range = <0 3>;
543ff2a8d91SMark Kettenis			#address-cells = <3>;
544ff2a8d91SMark Kettenis			#size-cells = <2>;
545ff2a8d91SMark Kettenis			ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
546ff2a8d91SMark Kettenis				 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
547ff2a8d91SMark Kettenis
548106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
549ff2a8d91SMark Kettenis			pinctrl-0 = <&pcie_pins>;
550ff2a8d91SMark Kettenis			pinctrl-names = "default";
551ff2a8d91SMark Kettenis
552128888a6SMarc Zyngier			port00: pci@0,0 {
553ff2a8d91SMark Kettenis				device_type = "pci";
554ff2a8d91SMark Kettenis				reg = <0x0 0x0 0x0 0x0 0x0>;
5555b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>;
556ff2a8d91SMark Kettenis
557ff2a8d91SMark Kettenis				#address-cells = <3>;
558ff2a8d91SMark Kettenis				#size-cells = <2>;
559ff2a8d91SMark Kettenis				ranges;
560128888a6SMarc Zyngier
561128888a6SMarc Zyngier				interrupt-controller;
562128888a6SMarc Zyngier				#interrupt-cells = <1>;
563128888a6SMarc Zyngier
564128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
565128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
566128888a6SMarc Zyngier						<0 0 0 2 &port00 0 0 0 1>,
567128888a6SMarc Zyngier						<0 0 0 3 &port00 0 0 0 2>,
568128888a6SMarc Zyngier						<0 0 0 4 &port00 0 0 0 3>;
569ff2a8d91SMark Kettenis			};
570ff2a8d91SMark Kettenis
571128888a6SMarc Zyngier			port01: pci@1,0 {
572ff2a8d91SMark Kettenis				device_type = "pci";
573ff2a8d91SMark Kettenis				reg = <0x800 0x0 0x0 0x0 0x0>;
5745b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>;
575ff2a8d91SMark Kettenis
576ff2a8d91SMark Kettenis				#address-cells = <3>;
577ff2a8d91SMark Kettenis				#size-cells = <2>;
578ff2a8d91SMark Kettenis				ranges;
579128888a6SMarc Zyngier
580128888a6SMarc Zyngier				interrupt-controller;
581128888a6SMarc Zyngier				#interrupt-cells = <1>;
582128888a6SMarc Zyngier
583128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
584128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
585128888a6SMarc Zyngier						<0 0 0 2 &port01 0 0 0 1>,
586128888a6SMarc Zyngier						<0 0 0 3 &port01 0 0 0 2>,
587128888a6SMarc Zyngier						<0 0 0 4 &port01 0 0 0 3>;
588ff2a8d91SMark Kettenis			};
589ff2a8d91SMark Kettenis
590128888a6SMarc Zyngier			port02: pci@2,0 {
591ff2a8d91SMark Kettenis				device_type = "pci";
592ff2a8d91SMark Kettenis				reg = <0x1000 0x0 0x0 0x0 0x0>;
5935b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>;
594ff2a8d91SMark Kettenis
595ff2a8d91SMark Kettenis				#address-cells = <3>;
596ff2a8d91SMark Kettenis				#size-cells = <2>;
597ff2a8d91SMark Kettenis				ranges;
598128888a6SMarc Zyngier
599128888a6SMarc Zyngier				interrupt-controller;
600128888a6SMarc Zyngier				#interrupt-cells = <1>;
601128888a6SMarc Zyngier
602128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
603128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
604128888a6SMarc Zyngier						<0 0 0 2 &port02 0 0 0 1>,
605128888a6SMarc Zyngier						<0 0 0 3 &port02 0 0 0 2>,
606128888a6SMarc Zyngier						<0 0 0 4 &port02 0 0 0 3>;
607ff2a8d91SMark Kettenis			};
608ff2a8d91SMark Kettenis		};
6097d2d16ccSHector Martin	};
6107d2d16ccSHector Martin};
611106ba3b4SHector Martin
612106ba3b4SHector Martin#include "t8103-pmgr.dtsi"
613