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
25*3e895a64SHector Martin		cpu-map {
26*3e895a64SHector Martin			cluster0 {
27*3e895a64SHector Martin				core0 {
28*3e895a64SHector Martin					cpu = <&cpu_e0>;
29*3e895a64SHector Martin				};
30*3e895a64SHector Martin				core1 {
31*3e895a64SHector Martin					cpu = <&cpu_e1>;
32*3e895a64SHector Martin				};
33*3e895a64SHector Martin				core2 {
34*3e895a64SHector Martin					cpu = <&cpu_e2>;
35*3e895a64SHector Martin				};
36*3e895a64SHector Martin				core3 {
37*3e895a64SHector Martin					cpu = <&cpu_e3>;
38*3e895a64SHector Martin				};
39*3e895a64SHector Martin			};
40*3e895a64SHector Martin
41*3e895a64SHector Martin			cluster1 {
42*3e895a64SHector Martin				core0 {
43*3e895a64SHector Martin					cpu = <&cpu_p0>;
44*3e895a64SHector Martin				};
45*3e895a64SHector Martin				core1 {
46*3e895a64SHector Martin					cpu = <&cpu_p1>;
47*3e895a64SHector Martin				};
48*3e895a64SHector Martin				core2 {
49*3e895a64SHector Martin					cpu = <&cpu_p2>;
50*3e895a64SHector Martin				};
51*3e895a64SHector Martin				core3 {
52*3e895a64SHector Martin					cpu = <&cpu_p3>;
53*3e895a64SHector Martin				};
54*3e895a64SHector Martin			};
55*3e895a64SHector Martin		};
56*3e895a64SHector Martin
57*3e895a64SHector Martin		cpu_e0: cpu@0 {
587d2d16ccSHector Martin			compatible = "apple,icestorm";
597d2d16ccSHector Martin			device_type = "cpu";
607d2d16ccSHector Martin			reg = <0x0 0x0>;
617d2d16ccSHector Martin			enable-method = "spin-table";
627d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
63*3e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
64*3e895a64SHector Martin			capacity-dmips-mhz = <714>;
65*3e895a64SHector Martin			performance-domains = <&cpufreq_e>;
667d2d16ccSHector Martin		};
677d2d16ccSHector Martin
68*3e895a64SHector Martin		cpu_e1: cpu@1 {
697d2d16ccSHector Martin			compatible = "apple,icestorm";
707d2d16ccSHector Martin			device_type = "cpu";
717d2d16ccSHector Martin			reg = <0x0 0x1>;
727d2d16ccSHector Martin			enable-method = "spin-table";
737d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
74*3e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
75*3e895a64SHector Martin			capacity-dmips-mhz = <714>;
76*3e895a64SHector Martin			performance-domains = <&cpufreq_e>;
777d2d16ccSHector Martin		};
787d2d16ccSHector Martin
79*3e895a64SHector Martin		cpu_e2: cpu@2 {
807d2d16ccSHector Martin			compatible = "apple,icestorm";
817d2d16ccSHector Martin			device_type = "cpu";
827d2d16ccSHector Martin			reg = <0x0 0x2>;
837d2d16ccSHector Martin			enable-method = "spin-table";
847d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
85*3e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
86*3e895a64SHector Martin			capacity-dmips-mhz = <714>;
87*3e895a64SHector Martin			performance-domains = <&cpufreq_e>;
887d2d16ccSHector Martin		};
897d2d16ccSHector Martin
90*3e895a64SHector Martin		cpu_e3: cpu@3 {
917d2d16ccSHector Martin			compatible = "apple,icestorm";
927d2d16ccSHector Martin			device_type = "cpu";
937d2d16ccSHector Martin			reg = <0x0 0x3>;
947d2d16ccSHector Martin			enable-method = "spin-table";
957d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
96*3e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
97*3e895a64SHector Martin			capacity-dmips-mhz = <714>;
98*3e895a64SHector Martin			performance-domains = <&cpufreq_e>;
997d2d16ccSHector Martin		};
1007d2d16ccSHector Martin
101*3e895a64SHector Martin		cpu_p0: cpu@10100 {
1027d2d16ccSHector Martin			compatible = "apple,firestorm";
1037d2d16ccSHector Martin			device_type = "cpu";
1047d2d16ccSHector Martin			reg = <0x0 0x10100>;
1057d2d16ccSHector Martin			enable-method = "spin-table";
1067d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
107*3e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
108*3e895a64SHector Martin			capacity-dmips-mhz = <1024>;
109*3e895a64SHector Martin			performance-domains = <&cpufreq_p>;
1107d2d16ccSHector Martin		};
1117d2d16ccSHector Martin
112*3e895a64SHector Martin		cpu_p1: cpu@10101 {
1137d2d16ccSHector Martin			compatible = "apple,firestorm";
1147d2d16ccSHector Martin			device_type = "cpu";
1157d2d16ccSHector Martin			reg = <0x0 0x10101>;
1167d2d16ccSHector Martin			enable-method = "spin-table";
1177d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
118*3e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
119*3e895a64SHector Martin			capacity-dmips-mhz = <1024>;
120*3e895a64SHector Martin			performance-domains = <&cpufreq_p>;
1217d2d16ccSHector Martin		};
1227d2d16ccSHector Martin
123*3e895a64SHector Martin		cpu_p2: cpu@10102 {
1247d2d16ccSHector Martin			compatible = "apple,firestorm";
1257d2d16ccSHector Martin			device_type = "cpu";
1267d2d16ccSHector Martin			reg = <0x0 0x10102>;
1277d2d16ccSHector Martin			enable-method = "spin-table";
1287d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
129*3e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
130*3e895a64SHector Martin			capacity-dmips-mhz = <1024>;
131*3e895a64SHector Martin			performance-domains = <&cpufreq_p>;
1327d2d16ccSHector Martin		};
1337d2d16ccSHector Martin
134*3e895a64SHector Martin		cpu_p3: cpu@10103 {
1357d2d16ccSHector Martin			compatible = "apple,firestorm";
1367d2d16ccSHector Martin			device_type = "cpu";
1377d2d16ccSHector Martin			reg = <0x0 0x10103>;
1387d2d16ccSHector Martin			enable-method = "spin-table";
1397d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
140*3e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
141*3e895a64SHector Martin			capacity-dmips-mhz = <1024>;
142*3e895a64SHector Martin			performance-domains = <&cpufreq_p>;
1437d2d16ccSHector Martin		};
1447d2d16ccSHector Martin	};
1457d2d16ccSHector Martin
146*3e895a64SHector Martin	ecluster_opp: opp-table-0 {
147*3e895a64SHector Martin		compatible = "operating-points-v2";
148*3e895a64SHector Martin
149*3e895a64SHector Martin		opp01 {
150*3e895a64SHector Martin			opp-hz = /bits/ 64 <600000000>;
151*3e895a64SHector Martin			opp-level = <1>;
152*3e895a64SHector Martin			clock-latency-ns = <7500>;
153*3e895a64SHector Martin		};
154*3e895a64SHector Martin		opp02 {
155*3e895a64SHector Martin			opp-hz = /bits/ 64 <972000000>;
156*3e895a64SHector Martin			opp-level = <2>;
157*3e895a64SHector Martin			clock-latency-ns = <22000>;
158*3e895a64SHector Martin		};
159*3e895a64SHector Martin		opp03 {
160*3e895a64SHector Martin			opp-hz = /bits/ 64 <1332000000>;
161*3e895a64SHector Martin			opp-level = <3>;
162*3e895a64SHector Martin			clock-latency-ns = <27000>;
163*3e895a64SHector Martin		};
164*3e895a64SHector Martin		opp04 {
165*3e895a64SHector Martin			opp-hz = /bits/ 64 <1704000000>;
166*3e895a64SHector Martin			opp-level = <4>;
167*3e895a64SHector Martin			clock-latency-ns = <33000>;
168*3e895a64SHector Martin		};
169*3e895a64SHector Martin		opp05 {
170*3e895a64SHector Martin			opp-hz = /bits/ 64 <2064000000>;
171*3e895a64SHector Martin			opp-level = <5>;
172*3e895a64SHector Martin			clock-latency-ns = <50000>;
173*3e895a64SHector Martin		};
174*3e895a64SHector Martin	};
175*3e895a64SHector Martin
176*3e895a64SHector Martin	pcluster_opp: opp-table-1 {
177*3e895a64SHector Martin		compatible = "operating-points-v2";
178*3e895a64SHector Martin
179*3e895a64SHector Martin		opp01 {
180*3e895a64SHector Martin			opp-hz = /bits/ 64 <600000000>;
181*3e895a64SHector Martin			opp-level = <1>;
182*3e895a64SHector Martin			clock-latency-ns = <8000>;
183*3e895a64SHector Martin		};
184*3e895a64SHector Martin		opp02 {
185*3e895a64SHector Martin			opp-hz = /bits/ 64 <828000000>;
186*3e895a64SHector Martin			opp-level = <2>;
187*3e895a64SHector Martin			clock-latency-ns = <19000>;
188*3e895a64SHector Martin		};
189*3e895a64SHector Martin		opp03 {
190*3e895a64SHector Martin			opp-hz = /bits/ 64 <1056000000>;
191*3e895a64SHector Martin			opp-level = <3>;
192*3e895a64SHector Martin			clock-latency-ns = <21000>;
193*3e895a64SHector Martin		};
194*3e895a64SHector Martin		opp04 {
195*3e895a64SHector Martin			opp-hz = /bits/ 64 <1284000000>;
196*3e895a64SHector Martin			opp-level = <4>;
197*3e895a64SHector Martin			clock-latency-ns = <23000>;
198*3e895a64SHector Martin		};
199*3e895a64SHector Martin		opp05 {
200*3e895a64SHector Martin			opp-hz = /bits/ 64 <1500000000>;
201*3e895a64SHector Martin			opp-level = <5>;
202*3e895a64SHector Martin			clock-latency-ns = <24000>;
203*3e895a64SHector Martin		};
204*3e895a64SHector Martin		opp06 {
205*3e895a64SHector Martin			opp-hz = /bits/ 64 <1728000000>;
206*3e895a64SHector Martin			opp-level = <6>;
207*3e895a64SHector Martin			clock-latency-ns = <29000>;
208*3e895a64SHector Martin		};
209*3e895a64SHector Martin		opp07 {
210*3e895a64SHector Martin			opp-hz = /bits/ 64 <1956000000>;
211*3e895a64SHector Martin			opp-level = <7>;
212*3e895a64SHector Martin			clock-latency-ns = <31000>;
213*3e895a64SHector Martin		};
214*3e895a64SHector Martin		opp08 {
215*3e895a64SHector Martin			opp-hz = /bits/ 64 <2184000000>;
216*3e895a64SHector Martin			opp-level = <8>;
217*3e895a64SHector Martin			clock-latency-ns = <34000>;
218*3e895a64SHector Martin		};
219*3e895a64SHector Martin		opp09 {
220*3e895a64SHector Martin			opp-hz = /bits/ 64 <2388000000>;
221*3e895a64SHector Martin			opp-level = <9>;
222*3e895a64SHector Martin			clock-latency-ns = <36000>;
223*3e895a64SHector Martin		};
224*3e895a64SHector Martin		opp10 {
225*3e895a64SHector Martin			opp-hz = /bits/ 64 <2592000000>;
226*3e895a64SHector Martin			opp-level = <10>;
227*3e895a64SHector Martin			clock-latency-ns = <51000>;
228*3e895a64SHector Martin		};
229*3e895a64SHector Martin		opp11 {
230*3e895a64SHector Martin			opp-hz = /bits/ 64 <2772000000>;
231*3e895a64SHector Martin			opp-level = <11>;
232*3e895a64SHector Martin			clock-latency-ns = <54000>;
233*3e895a64SHector Martin		};
234*3e895a64SHector Martin		opp12 {
235*3e895a64SHector Martin			opp-hz = /bits/ 64 <2988000000>;
236*3e895a64SHector Martin			opp-level = <12>;
237*3e895a64SHector Martin			clock-latency-ns = <55000>;
238*3e895a64SHector Martin		};
239*3e895a64SHector Martin#if 0
240*3e895a64SHector Martin		/* Not available until CPU deep sleep is implemented */
241*3e895a64SHector Martin		opp13 {
242*3e895a64SHector Martin			opp-hz = /bits/ 64 <3096000000>;
243*3e895a64SHector Martin			opp-level = <13>;
244*3e895a64SHector Martin			clock-latency-ns = <55000>;
245*3e895a64SHector Martin			turbo-mode;
246*3e895a64SHector Martin		};
247*3e895a64SHector Martin		opp14 {
248*3e895a64SHector Martin			opp-hz = /bits/ 64 <3144000000>;
249*3e895a64SHector Martin			opp-level = <14>;
250*3e895a64SHector Martin			clock-latency-ns = <56000>;
251*3e895a64SHector Martin			turbo-mode;
252*3e895a64SHector Martin		};
253*3e895a64SHector Martin		opp15 {
254*3e895a64SHector Martin			opp-hz = /bits/ 64 <3204000000>;
255*3e895a64SHector Martin			opp-level = <15>;
256*3e895a64SHector Martin			clock-latency-ns = <56000>;
257*3e895a64SHector Martin			turbo-mode;
258*3e895a64SHector Martin		};
259*3e895a64SHector Martin#endif
260*3e895a64SHector Martin	};
261*3e895a64SHector Martin
2627d2d16ccSHector Martin	timer {
2637d2d16ccSHector Martin		compatible = "arm,armv8-timer";
2647d2d16ccSHector Martin		interrupt-parent = <&aic>;
2657d2d16ccSHector Martin		interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
2667d2d16ccSHector Martin		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
2677d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
2687d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
2697d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
2707d2d16ccSHector Martin	};
2717d2d16ccSHector Martin
2720f522efcSMarc Zyngier	pmu-e {
2730f522efcSMarc Zyngier		compatible = "apple,icestorm-pmu";
2740f522efcSMarc Zyngier		interrupt-parent = <&aic>;
2750f522efcSMarc Zyngier		interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
2760f522efcSMarc Zyngier	};
2770f522efcSMarc Zyngier
2780f522efcSMarc Zyngier	pmu-p {
2790f522efcSMarc Zyngier		compatible = "apple,firestorm-pmu";
2800f522efcSMarc Zyngier		interrupt-parent = <&aic>;
2810f522efcSMarc Zyngier		interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
2820f522efcSMarc Zyngier	};
2830f522efcSMarc Zyngier
28457337b25SHector Martin	clkref: clock-ref {
2857d2d16ccSHector Martin		compatible = "fixed-clock";
2867d2d16ccSHector Martin		#clock-cells = <0>;
2877d2d16ccSHector Martin		clock-frequency = <24000000>;
28857337b25SHector Martin		clock-output-names = "clkref";
2897d2d16ccSHector Martin	};
2907d2d16ccSHector Martin
2918a3df85aSMartin Povišer	/*
2928a3df85aSMartin Povišer	 * This is a fabulated representation of the input clock
2938a3df85aSMartin Povišer	 * to NCO since we don't know the true clock tree.
2948a3df85aSMartin Povišer	 */
2958a3df85aSMartin Povišer	nco_clkref: clock-ref-nco {
2968a3df85aSMartin Povišer		compatible = "fixed-clock";
2978a3df85aSMartin Povišer		#clock-cells = <0>;
2988a3df85aSMartin Povišer		clock-output-names = "nco_ref";
2998a3df85aSMartin Povišer	};
3008a3df85aSMartin Povišer
3017d2d16ccSHector Martin	soc {
3027d2d16ccSHector Martin		compatible = "simple-bus";
3037d2d16ccSHector Martin		#address-cells = <2>;
3047d2d16ccSHector Martin		#size-cells = <2>;
3057d2d16ccSHector Martin
3067d2d16ccSHector Martin		ranges;
3077d2d16ccSHector Martin		nonposted-mmio;
3087d2d16ccSHector Martin
309*3e895a64SHector Martin		cpufreq_e: performance-controller@210e20000 {
310*3e895a64SHector Martin			compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
311*3e895a64SHector Martin			reg = <0x2 0x10e20000 0 0x1000>;
312*3e895a64SHector Martin			#performance-domain-cells = <0>;
313*3e895a64SHector Martin		};
314*3e895a64SHector Martin
315*3e895a64SHector Martin		cpufreq_p: performance-controller@211e20000 {
316*3e895a64SHector Martin			compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
317*3e895a64SHector Martin			reg = <0x2 0x11e20000 0 0x1000>;
318*3e895a64SHector Martin			#performance-domain-cells = <0>;
319*3e895a64SHector Martin		};
320*3e895a64SHector Martin
3218a3df85aSMartin Povišer		dart_sio: iommu@235004000 {
3228a3df85aSMartin Povišer			compatible = "apple,t8103-dart";
3238a3df85aSMartin Povišer			reg = <0x2 0x35004000 0x0 0x4000>;
3248a3df85aSMartin Povišer			interrupt-parent = <&aic>;
3258a3df85aSMartin Povišer			interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>;
3268a3df85aSMartin Povišer			#iommu-cells = <1>;
3278a3df85aSMartin Povišer			power-domains = <&ps_sio_cpu>;
3288a3df85aSMartin Povišer		};
3298a3df85aSMartin Povišer
33090458f6eSJanne Grunau		i2c0: i2c@235010000 {
33190458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
33290458f6eSJanne Grunau			reg = <0x2 0x35010000 0x0 0x4000>;
33357337b25SHector Martin			clocks = <&clkref>;
33490458f6eSJanne Grunau			interrupt-parent = <&aic>;
33590458f6eSJanne Grunau			interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
33690458f6eSJanne Grunau			pinctrl-0 = <&i2c0_pins>;
33790458f6eSJanne Grunau			pinctrl-names = "default";
33890458f6eSJanne Grunau			#address-cells = <0x1>;
33990458f6eSJanne Grunau			#size-cells = <0x0>;
340106ba3b4SHector Martin			power-domains = <&ps_i2c0>;
34190458f6eSJanne Grunau		};
34290458f6eSJanne Grunau
34390458f6eSJanne Grunau		i2c1: i2c@235014000 {
34490458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
34590458f6eSJanne Grunau			reg = <0x2 0x35014000 0x0 0x4000>;
34657337b25SHector Martin			clocks = <&clkref>;
34790458f6eSJanne Grunau			interrupt-parent = <&aic>;
34890458f6eSJanne Grunau			interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>;
34990458f6eSJanne Grunau			pinctrl-0 = <&i2c1_pins>;
35090458f6eSJanne Grunau			pinctrl-names = "default";
35190458f6eSJanne Grunau			#address-cells = <0x1>;
35290458f6eSJanne Grunau			#size-cells = <0x0>;
353106ba3b4SHector Martin			power-domains = <&ps_i2c1>;
35490458f6eSJanne Grunau		};
35590458f6eSJanne Grunau
35690458f6eSJanne Grunau		i2c2: i2c@235018000 {
35790458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
35890458f6eSJanne Grunau			reg = <0x2 0x35018000 0x0 0x4000>;
35957337b25SHector Martin			clocks = <&clkref>;
36090458f6eSJanne Grunau			interrupt-parent = <&aic>;
36190458f6eSJanne Grunau			interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>;
36290458f6eSJanne Grunau			pinctrl-0 = <&i2c2_pins>;
36390458f6eSJanne Grunau			pinctrl-names = "default";
36490458f6eSJanne Grunau			#address-cells = <0x1>;
36590458f6eSJanne Grunau			#size-cells = <0x0>;
36690458f6eSJanne Grunau			status = "disabled"; /* not used in all devices */
367106ba3b4SHector Martin			power-domains = <&ps_i2c2>;
36890458f6eSJanne Grunau		};
36990458f6eSJanne Grunau
37090458f6eSJanne Grunau		i2c3: i2c@23501c000 {
37190458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
37290458f6eSJanne Grunau			reg = <0x2 0x3501c000 0x0 0x4000>;
37357337b25SHector Martin			clocks = <&clkref>;
37490458f6eSJanne Grunau			interrupt-parent = <&aic>;
37590458f6eSJanne Grunau			interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>;
37690458f6eSJanne Grunau			pinctrl-0 = <&i2c3_pins>;
37790458f6eSJanne Grunau			pinctrl-names = "default";
37890458f6eSJanne Grunau			#address-cells = <0x1>;
37990458f6eSJanne Grunau			#size-cells = <0x0>;
380106ba3b4SHector Martin			power-domains = <&ps_i2c3>;
38190458f6eSJanne Grunau		};
38290458f6eSJanne Grunau
38390458f6eSJanne Grunau		i2c4: i2c@235020000 {
38490458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
38590458f6eSJanne Grunau			reg = <0x2 0x35020000 0x0 0x4000>;
38657337b25SHector Martin			clocks = <&clkref>;
38790458f6eSJanne Grunau			interrupt-parent = <&aic>;
38890458f6eSJanne Grunau			interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>;
38990458f6eSJanne Grunau			pinctrl-0 = <&i2c4_pins>;
39090458f6eSJanne Grunau			pinctrl-names = "default";
39190458f6eSJanne Grunau			#address-cells = <0x1>;
39290458f6eSJanne Grunau			#size-cells = <0x0>;
393106ba3b4SHector Martin			power-domains = <&ps_i2c4>;
39490458f6eSJanne Grunau			status = "disabled"; /* only used in J293 */
39590458f6eSJanne Grunau		};
39690458f6eSJanne Grunau
3977d2d16ccSHector Martin		serial0: serial@235200000 {
3987d2d16ccSHector Martin			compatible = "apple,s5l-uart";
3997d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
4007d2d16ccSHector Martin			reg-io-width = <4>;
4017d2d16ccSHector Martin			interrupt-parent = <&aic>;
4027d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
4037d2d16ccSHector Martin			/*
4047d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
4057d2d16ccSHector Martin			 * be a third selectable clock.
4067d2d16ccSHector Martin			 */
40757337b25SHector Martin			clocks = <&clkref>, <&clkref>;
4087d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
409106ba3b4SHector Martin			power-domains = <&ps_uart0>;
4107d2d16ccSHector Martin			status = "disabled";
4117d2d16ccSHector Martin		};
4127d2d16ccSHector Martin
4132ba22cfeSHector Martin		serial2: serial@235208000 {
4142ba22cfeSHector Martin			compatible = "apple,s5l-uart";
4152ba22cfeSHector Martin			reg = <0x2 0x35208000 0x0 0x1000>;
4162ba22cfeSHector Martin			reg-io-width = <4>;
4172ba22cfeSHector Martin			interrupt-parent = <&aic>;
4182ba22cfeSHector Martin			interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
41957337b25SHector Martin			clocks = <&clkref>, <&clkref>;
4202ba22cfeSHector Martin			clock-names = "uart", "clk_uart_baud0";
4212ba22cfeSHector Martin			power-domains = <&ps_uart2>;
4227d2d16ccSHector Martin			status = "disabled";
4237d2d16ccSHector Martin		};
4247d2d16ccSHector Martin
4258a3df85aSMartin Povišer		admac: dma-controller@238200000 {
4268a3df85aSMartin Povišer			compatible = "apple,t8103-admac", "apple,admac";
4278a3df85aSMartin Povišer			reg = <0x2 0x38200000 0x0 0x34000>;
4288a3df85aSMartin Povišer			dma-channels = <24>;
4298a3df85aSMartin Povišer			interrupts-extended = <0>,
4308a3df85aSMartin Povišer					      <&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>,
4318a3df85aSMartin Povišer					      <0>,
4328a3df85aSMartin Povišer					      <0>;
4338a3df85aSMartin Povišer			#dma-cells = <1>;
4348a3df85aSMartin Povišer			iommus = <&dart_sio 2>;
4358a3df85aSMartin Povišer			power-domains = <&ps_sio_adma>;
43656fed763SMartin Povišer			resets = <&ps_audio_p>;
4378a3df85aSMartin Povišer		};
4388a3df85aSMartin Povišer
4398a3df85aSMartin Povišer		mca: i2s@238400000 {
4408a3df85aSMartin Povišer			compatible = "apple,t8103-mca", "apple,mca";
4418a3df85aSMartin Povišer			reg = <0x2 0x38400000 0x0 0x18000>,
4428a3df85aSMartin Povišer			      <0x2 0x38300000 0x0 0x30000>;
4438a3df85aSMartin Povišer
4448a3df85aSMartin Povišer			interrupt-parent = <&aic>;
4458a3df85aSMartin Povišer			interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>,
4468a3df85aSMartin Povišer				     <AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>,
4478a3df85aSMartin Povišer				     <AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>,
4488a3df85aSMartin Povišer				     <AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>,
4498a3df85aSMartin Povišer				     <AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>,
4508a3df85aSMartin Povišer				     <AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>;
4518a3df85aSMartin Povišer
4528a3df85aSMartin Povišer			resets = <&ps_audio_p>;
4538a3df85aSMartin Povišer			clocks = <&nco 0>, <&nco 1>, <&nco 2>,
4548a3df85aSMartin Povišer				 <&nco 3>, <&nco 4>, <&nco 4>;
4558a3df85aSMartin Povišer			power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
4568a3df85aSMartin Povišer					<&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
4578a3df85aSMartin Povišer			dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
4588a3df85aSMartin Povišer			       <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
4598a3df85aSMartin Povišer			       <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
4608a3df85aSMartin Povišer			       <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>,
4618a3df85aSMartin Povišer			       <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>,
4628a3df85aSMartin Povišer			       <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>;
4638a3df85aSMartin Povišer			dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
4648a3df85aSMartin Povišer				"tx1a", "rx1a", "tx1b", "rx1b",
4658a3df85aSMartin Povišer				"tx2a", "rx2a", "tx2b", "rx2b",
4668a3df85aSMartin Povišer				"tx3a", "rx3a", "tx3b", "rx3b",
4678a3df85aSMartin Povišer				"tx4a", "rx4a", "tx4b", "rx4b",
4688a3df85aSMartin Povišer				"tx5a", "rx5a", "tx5b", "rx5b";
4698a3df85aSMartin Povišer
4708a3df85aSMartin Povišer			#sound-dai-cells = <1>;
4718a3df85aSMartin Povišer		};
4728a3df85aSMartin Povišer
4738a3df85aSMartin Povišer		nco: clock-controller@23b044000 {
4748a3df85aSMartin Povišer			compatible = "apple,t8103-nco", "apple,nco";
4758a3df85aSMartin Povišer			reg = <0x2 0x3b044000 0x0 0x14000>;
4768a3df85aSMartin Povišer			clocks = <&nco_clkref>;
4778a3df85aSMartin Povišer			#clock-cells = <1>;
4788a3df85aSMartin Povišer		};
4798a3df85aSMartin Povišer
4807d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
4817d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
4827d2d16ccSHector Martin			#interrupt-cells = <3>;
4837d2d16ccSHector Martin			interrupt-controller;
4847d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
485106ba3b4SHector Martin			power-domains = <&ps_aic>;
4861852e22bSMarc Zyngier
4871852e22bSMarc Zyngier			affinities {
4881852e22bSMarc Zyngier				e-core-pmu-affinity {
4891852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_E>;
490*3e895a64SHector Martin					cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>;
4911852e22bSMarc Zyngier				};
4921852e22bSMarc Zyngier
4931852e22bSMarc Zyngier				p-core-pmu-affinity {
4941852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_P>;
495*3e895a64SHector Martin					cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>;
4961852e22bSMarc Zyngier				};
4971852e22bSMarc Zyngier			};
498106ba3b4SHector Martin		};
499106ba3b4SHector Martin
500106ba3b4SHector Martin		pmgr: power-management@23b700000 {
501106ba3b4SHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
502106ba3b4SHector Martin			#address-cells = <1>;
503106ba3b4SHector Martin			#size-cells = <1>;
504106ba3b4SHector Martin			reg = <0x2 0x3b700000 0 0x14000>;
5057d2d16ccSHector Martin		};
5060a8282b8SMark Kettenis
5070a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
5080a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
5090a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
510106ba3b4SHector Martin			power-domains = <&ps_gpio>;
5110a8282b8SMark Kettenis
5120a8282b8SMark Kettenis			gpio-controller;
5130a8282b8SMark Kettenis			#gpio-cells = <2>;
5140a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
5150a8282b8SMark Kettenis			apple,npins = <212>;
5160a8282b8SMark Kettenis
5170a8282b8SMark Kettenis			interrupt-controller;
5180668639eSJanne Grunau			#interrupt-cells = <2>;
5190a8282b8SMark Kettenis			interrupt-parent = <&aic>;
5200a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
5210a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
5220a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
5230a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
5240a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
5250a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
5260a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
5270a8282b8SMark Kettenis
52890458f6eSJanne Grunau			i2c0_pins: i2c0-pins {
52990458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(192, 1)>,
53090458f6eSJanne Grunau					 <APPLE_PINMUX(188, 1)>;
53190458f6eSJanne Grunau			};
53290458f6eSJanne Grunau
53390458f6eSJanne Grunau			i2c1_pins: i2c1-pins {
53490458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(201, 1)>,
53590458f6eSJanne Grunau					 <APPLE_PINMUX(199, 1)>;
53690458f6eSJanne Grunau			};
53790458f6eSJanne Grunau
53890458f6eSJanne Grunau			i2c2_pins: i2c2-pins {
53990458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(163, 1)>,
54090458f6eSJanne Grunau					 <APPLE_PINMUX(162, 1)>;
54190458f6eSJanne Grunau			};
54290458f6eSJanne Grunau
54390458f6eSJanne Grunau			i2c3_pins: i2c3-pins {
54490458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(73, 1)>,
54590458f6eSJanne Grunau					 <APPLE_PINMUX(72, 1)>;
54690458f6eSJanne Grunau			};
54790458f6eSJanne Grunau
54890458f6eSJanne Grunau			i2c4_pins: i2c4-pins {
54990458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(135, 1)>,
55090458f6eSJanne Grunau					 <APPLE_PINMUX(134, 1)>;
55190458f6eSJanne Grunau			};
55290458f6eSJanne Grunau
5530a8282b8SMark Kettenis			pcie_pins: pcie-pins {
5540a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
5550a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
5560a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
5570a8282b8SMark Kettenis			};
5580a8282b8SMark Kettenis		};
5590a8282b8SMark Kettenis
5600a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
5610a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
5620a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
563106ba3b4SHector Martin			power-domains = <&ps_nub_gpio>;
5640a8282b8SMark Kettenis
5650a8282b8SMark Kettenis			gpio-controller;
5660a8282b8SMark Kettenis			#gpio-cells = <2>;
5670a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
5680a8282b8SMark Kettenis			apple,npins = <23>;
5690a8282b8SMark Kettenis
5700a8282b8SMark Kettenis			interrupt-controller;
5710668639eSJanne Grunau			#interrupt-cells = <2>;
5720a8282b8SMark Kettenis			interrupt-parent = <&aic>;
5730a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
5740a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
5750a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
5760a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
5770a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
5780a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
5790a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
5800a8282b8SMark Kettenis		};
5810a8282b8SMark Kettenis
5828adf987cSHector Martin		pmgr_mini: power-management@23d280000 {
5838adf987cSHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
5848adf987cSHector Martin			#address-cells = <1>;
5858adf987cSHector Martin			#size-cells = <1>;
5868adf987cSHector Martin			reg = <0x2 0x3d280000 0 0x4000>;
5878adf987cSHector Martin		};
5888adf987cSHector Martin
589b4d11106SSven Peter		wdt: watchdog@23d2b0000 {
590b4d11106SSven Peter			compatible = "apple,t8103-wdt", "apple,wdt";
591b4d11106SSven Peter			reg = <0x2 0x3d2b0000 0x0 0x4000>;
59257337b25SHector Martin			clocks = <&clkref>;
593b4d11106SSven Peter			interrupt-parent = <&aic>;
594b4d11106SSven Peter			interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>;
595b4d11106SSven Peter		};
596b4d11106SSven Peter
5970a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
5980a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
5990a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
6000a8282b8SMark Kettenis
6010a8282b8SMark Kettenis			gpio-controller;
6020a8282b8SMark Kettenis			#gpio-cells = <2>;
6030a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
6040a8282b8SMark Kettenis			apple,npins = <16>;
6050a8282b8SMark Kettenis
6060a8282b8SMark Kettenis			interrupt-controller;
6070668639eSJanne Grunau			#interrupt-cells = <2>;
6080a8282b8SMark Kettenis			interrupt-parent = <&aic>;
6090a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
6100a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
6110a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
6120a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
6130a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
6140a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
6150a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
6160a8282b8SMark Kettenis		};
617ff2a8d91SMark Kettenis
6188adf987cSHector Martin		pinctrl_aop: pinctrl@24a820000 {
6198adf987cSHector Martin			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6208adf987cSHector Martin			reg = <0x2 0x4a820000 0x0 0x4000>;
6218adf987cSHector Martin
6228adf987cSHector Martin			gpio-controller;
6238adf987cSHector Martin			#gpio-cells = <2>;
6248adf987cSHector Martin			gpio-ranges = <&pinctrl_aop 0 0 42>;
6258adf987cSHector Martin			apple,npins = <42>;
6268adf987cSHector Martin
6278adf987cSHector Martin			interrupt-controller;
6288adf987cSHector Martin			#interrupt-cells = <2>;
6298adf987cSHector Martin			interrupt-parent = <&aic>;
6308adf987cSHector Martin			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
6318adf987cSHector Martin				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
6328adf987cSHector Martin				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
6338adf987cSHector Martin				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
6348adf987cSHector Martin				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
6358adf987cSHector Martin				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
6368adf987cSHector Martin				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
6378adf987cSHector Martin		};
6388adf987cSHector Martin
6395316d73bSSven Peter		ans_mbox: mbox@277408000 {
6405316d73bSSven Peter			compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
6415316d73bSSven Peter			reg = <0x2 0x77408000 0x0 0x4000>;
6425316d73bSSven Peter			interrupt-parent = <&aic>;
6435316d73bSSven Peter			interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>,
6445316d73bSSven Peter				<AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>,
6455316d73bSSven Peter				<AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>,
6465316d73bSSven Peter				<AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
6475316d73bSSven Peter			interrupt-names = "send-empty", "send-not-empty",
6485316d73bSSven Peter				"recv-empty", "recv-not-empty";
6495316d73bSSven Peter			#mbox-cells = <0>;
6505316d73bSSven Peter			power-domains = <&ps_ans2>;
6515316d73bSSven Peter		};
6525316d73bSSven Peter
6535316d73bSSven Peter		sart: iommu@27bc50000 {
6545316d73bSSven Peter			compatible = "apple,t8103-sart";
6555316d73bSSven Peter			reg = <0x2 0x7bc50000 0x0 0x10000>;
6565316d73bSSven Peter			power-domains = <&ps_ans2>;
6575316d73bSSven Peter		};
6585316d73bSSven Peter
6595316d73bSSven Peter		nvme@27bcc0000 {
6605316d73bSSven Peter			compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
6615316d73bSSven Peter			reg = <0x2 0x7bcc0000 0x0 0x40000>,
6625316d73bSSven Peter				<0x2 0x77400000 0x0 0x4000>;
6635316d73bSSven Peter			reg-names = "nvme", "ans";
6645316d73bSSven Peter			interrupt-parent = <&aic>;
6655316d73bSSven Peter			interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
6665316d73bSSven Peter			mboxes = <&ans_mbox>;
6675316d73bSSven Peter			apple,sart = <&sart>;
6685316d73bSSven Peter			power-domains = <&ps_ans2>, <&ps_apcie_st>;
6695316d73bSSven Peter			power-domain-names = "ans", "apcie0";
6705316d73bSSven Peter			resets = <&ps_ans2>;
6715316d73bSSven Peter		};
6725316d73bSSven Peter
6733c866bb7SMarc Zyngier		pcie0_dart_0: dart@681008000 {
6743c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
6753c866bb7SMarc Zyngier			reg = <0x6 0x81008000 0x0 0x4000>;
6763c866bb7SMarc Zyngier			#iommu-cells = <1>;
6773c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
6783c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
679106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
6803c866bb7SMarc Zyngier		};
6813c866bb7SMarc Zyngier
6823c866bb7SMarc Zyngier		pcie0_dart_1: dart@682008000 {
6833c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
6843c866bb7SMarc Zyngier			reg = <0x6 0x82008000 0x0 0x4000>;
6853c866bb7SMarc Zyngier			#iommu-cells = <1>;
6863c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
6873c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
688106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
6893c866bb7SMarc Zyngier		};
6903c866bb7SMarc Zyngier
6913c866bb7SMarc Zyngier		pcie0_dart_2: dart@683008000 {
6923c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
6933c866bb7SMarc Zyngier			reg = <0x6 0x83008000 0x0 0x4000>;
6943c866bb7SMarc Zyngier			#iommu-cells = <1>;
6953c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
6963c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
697106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
6983c866bb7SMarc Zyngier		};
6993c866bb7SMarc Zyngier
700ff2a8d91SMark Kettenis		pcie0: pcie@690000000 {
701ff2a8d91SMark Kettenis			compatible = "apple,t8103-pcie", "apple,pcie";
702ff2a8d91SMark Kettenis			device_type = "pci";
703ff2a8d91SMark Kettenis
704ff2a8d91SMark Kettenis			reg = <0x6 0x90000000 0x0 0x1000000>,
705ff2a8d91SMark Kettenis			      <0x6 0x80000000 0x0 0x100000>,
706ff2a8d91SMark Kettenis			      <0x6 0x81000000 0x0 0x4000>,
707ff2a8d91SMark Kettenis			      <0x6 0x82000000 0x0 0x4000>,
708ff2a8d91SMark Kettenis			      <0x6 0x83000000 0x0 0x4000>;
709ff2a8d91SMark Kettenis			reg-names = "config", "rc", "port0", "port1", "port2";
710ff2a8d91SMark Kettenis
711ff2a8d91SMark Kettenis			interrupt-parent = <&aic>;
712ff2a8d91SMark Kettenis			interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
713ff2a8d91SMark Kettenis				     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
714ff2a8d91SMark Kettenis				     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
715ff2a8d91SMark Kettenis
716ff2a8d91SMark Kettenis			msi-controller;
717ff2a8d91SMark Kettenis			msi-parent = <&pcie0>;
718ff2a8d91SMark Kettenis			msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
719ff2a8d91SMark Kettenis
7203c866bb7SMarc Zyngier
7213c866bb7SMarc Zyngier			iommu-map = <0x100 &pcie0_dart_0 1 1>,
7223c866bb7SMarc Zyngier				    <0x200 &pcie0_dart_1 1 1>,
7233c866bb7SMarc Zyngier				    <0x300 &pcie0_dart_2 1 1>;
7243c866bb7SMarc Zyngier			iommu-map-mask = <0xff00>;
7253c866bb7SMarc Zyngier
726ff2a8d91SMark Kettenis			bus-range = <0 3>;
727ff2a8d91SMark Kettenis			#address-cells = <3>;
728ff2a8d91SMark Kettenis			#size-cells = <2>;
729ff2a8d91SMark Kettenis			ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
730ff2a8d91SMark Kettenis				 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
731ff2a8d91SMark Kettenis
732106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
733ff2a8d91SMark Kettenis			pinctrl-0 = <&pcie_pins>;
734ff2a8d91SMark Kettenis			pinctrl-names = "default";
735ff2a8d91SMark Kettenis
736128888a6SMarc Zyngier			port00: pci@0,0 {
737ff2a8d91SMark Kettenis				device_type = "pci";
738ff2a8d91SMark Kettenis				reg = <0x0 0x0 0x0 0x0 0x0>;
7395b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>;
740ff2a8d91SMark Kettenis
741ff2a8d91SMark Kettenis				#address-cells = <3>;
742ff2a8d91SMark Kettenis				#size-cells = <2>;
743ff2a8d91SMark Kettenis				ranges;
744128888a6SMarc Zyngier
745128888a6SMarc Zyngier				interrupt-controller;
746128888a6SMarc Zyngier				#interrupt-cells = <1>;
747128888a6SMarc Zyngier
748128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
749128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
750128888a6SMarc Zyngier						<0 0 0 2 &port00 0 0 0 1>,
751128888a6SMarc Zyngier						<0 0 0 3 &port00 0 0 0 2>,
752128888a6SMarc Zyngier						<0 0 0 4 &port00 0 0 0 3>;
753ff2a8d91SMark Kettenis			};
754ff2a8d91SMark Kettenis
755128888a6SMarc Zyngier			port01: pci@1,0 {
756ff2a8d91SMark Kettenis				device_type = "pci";
757ff2a8d91SMark Kettenis				reg = <0x800 0x0 0x0 0x0 0x0>;
7585b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>;
759ff2a8d91SMark Kettenis
760ff2a8d91SMark Kettenis				#address-cells = <3>;
761ff2a8d91SMark Kettenis				#size-cells = <2>;
762ff2a8d91SMark Kettenis				ranges;
763128888a6SMarc Zyngier
764128888a6SMarc Zyngier				interrupt-controller;
765128888a6SMarc Zyngier				#interrupt-cells = <1>;
766128888a6SMarc Zyngier
767128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
768128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
769128888a6SMarc Zyngier						<0 0 0 2 &port01 0 0 0 1>,
770128888a6SMarc Zyngier						<0 0 0 3 &port01 0 0 0 2>,
771128888a6SMarc Zyngier						<0 0 0 4 &port01 0 0 0 3>;
772ff2a8d91SMark Kettenis			};
773ff2a8d91SMark Kettenis
774128888a6SMarc Zyngier			port02: pci@2,0 {
775ff2a8d91SMark Kettenis				device_type = "pci";
776ff2a8d91SMark Kettenis				reg = <0x1000 0x0 0x0 0x0 0x0>;
7775b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>;
778ff2a8d91SMark Kettenis
779ff2a8d91SMark Kettenis				#address-cells = <3>;
780ff2a8d91SMark Kettenis				#size-cells = <2>;
781ff2a8d91SMark Kettenis				ranges;
782128888a6SMarc Zyngier
783128888a6SMarc Zyngier				interrupt-controller;
784128888a6SMarc Zyngier				#interrupt-cells = <1>;
785128888a6SMarc Zyngier
786128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
787128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
788128888a6SMarc Zyngier						<0 0 0 2 &port02 0 0 0 1>,
789128888a6SMarc Zyngier						<0 0 0 3 &port02 0 0 0 2>,
790128888a6SMarc Zyngier						<0 0 0 4 &port02 0 0 0 3>;
791ff2a8d91SMark Kettenis			};
792ff2a8d91SMark Kettenis		};
7937d2d16ccSHector Martin	};
7947d2d16ccSHector Martin};
795106ba3b4SHector Martin
796106ba3b4SHector Martin#include "t8103-pmgr.dtsi"
797