1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/;
3
4#include <dt-bindings/interrupt-controller/arm-gic.h>
5#include <dt-bindings/mfd/qcom-rpm.h>
6#include <dt-bindings/clock/qcom,rpmcc.h>
7#include <dt-bindings/clock/qcom,gcc-ipq806x.h>
8#include <dt-bindings/clock/qcom,lcc-ipq806x.h>
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/reset/qcom,gcc-ipq806x.h>
11#include <dt-bindings/soc/qcom,gsbi.h>
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13
14/ {
15	#address-cells = <1>;
16	#size-cells = <1>;
17	model = "Qualcomm IPQ8064";
18	compatible = "qcom,ipq8064";
19	interrupt-parent = <&intc>;
20
21	cpus {
22		#address-cells = <1>;
23		#size-cells = <0>;
24
25		cpu0: cpu@0 {
26			compatible = "qcom,krait";
27			enable-method = "qcom,kpss-acc-v1";
28			device_type = "cpu";
29			reg = <0>;
30			next-level-cache = <&L2>;
31			qcom,acc = <&acc0>;
32			qcom,saw = <&saw0>;
33		};
34
35		cpu1: cpu@1 {
36			compatible = "qcom,krait";
37			enable-method = "qcom,kpss-acc-v1";
38			device_type = "cpu";
39			reg = <1>;
40			next-level-cache = <&L2>;
41			qcom,acc = <&acc1>;
42			qcom,saw = <&saw1>;
43		};
44
45		L2: l2-cache {
46			compatible = "cache";
47			cache-level = <2>;
48		};
49	};
50
51	thermal-zones {
52		sensor0-thermal {
53			polling-delay-passive = <0>;
54			polling-delay = <0>;
55			thermal-sensors = <&tsens 0>;
56
57			trips {
58				cpu-critical {
59					temperature = <105000>;
60					hysteresis = <2000>;
61					type = "critical";
62				};
63
64				cpu-hot {
65					temperature = <95000>;
66					hysteresis = <2000>;
67					type = "hot";
68				};
69			};
70		};
71
72		sensor1-thermal {
73			polling-delay-passive = <0>;
74			polling-delay = <0>;
75			thermal-sensors = <&tsens 1>;
76
77			trips {
78				cpu-critical {
79					temperature = <105000>;
80					hysteresis = <2000>;
81					type = "critical";
82				};
83
84				cpu-hot {
85					temperature = <95000>;
86					hysteresis = <2000>;
87					type = "hot";
88				};
89			};
90		};
91
92		sensor2-thermal {
93			polling-delay-passive = <0>;
94			polling-delay = <0>;
95			thermal-sensors = <&tsens 2>;
96
97			trips {
98				cpu-critical {
99					temperature = <105000>;
100					hysteresis = <2000>;
101					type = "critical";
102				};
103
104				cpu-hot {
105					temperature = <95000>;
106					hysteresis = <2000>;
107					type = "hot";
108				};
109			};
110		};
111
112		sensor3-thermal {
113			polling-delay-passive = <0>;
114			polling-delay = <0>;
115			thermal-sensors = <&tsens 3>;
116
117			trips {
118				cpu-critical {
119					temperature = <105000>;
120					hysteresis = <2000>;
121					type = "critical";
122				};
123
124				cpu-hot {
125					temperature = <95000>;
126					hysteresis = <2000>;
127					type = "hot";
128				};
129			};
130		};
131
132		sensor4-thermal {
133			polling-delay-passive = <0>;
134			polling-delay = <0>;
135			thermal-sensors = <&tsens 4>;
136
137			trips {
138				cpu-critical {
139					temperature = <105000>;
140					hysteresis = <2000>;
141					type = "critical";
142				};
143
144				cpu-hot {
145					temperature = <95000>;
146					hysteresis = <2000>;
147					type = "hot";
148				};
149			};
150		};
151
152		sensor5-thermal {
153			polling-delay-passive = <0>;
154			polling-delay = <0>;
155			thermal-sensors = <&tsens 5>;
156
157			trips {
158				cpu-critical {
159					temperature = <105000>;
160					hysteresis = <2000>;
161					type = "critical";
162				};
163
164				cpu-hot {
165					temperature = <95000>;
166					hysteresis = <2000>;
167					type = "hot";
168				};
169			};
170		};
171
172		sensor6-thermal {
173			polling-delay-passive = <0>;
174			polling-delay = <0>;
175			thermal-sensors = <&tsens 6>;
176
177			trips {
178				cpu-critical {
179					temperature = <105000>;
180					hysteresis = <2000>;
181					type = "critical";
182				};
183
184				cpu-hot {
185					temperature = <95000>;
186					hysteresis = <2000>;
187					type = "hot";
188				};
189			};
190		};
191
192		sensor7-thermal {
193			polling-delay-passive = <0>;
194			polling-delay = <0>;
195			thermal-sensors = <&tsens 7>;
196
197			trips {
198				cpu-critical {
199					temperature = <105000>;
200					hysteresis = <2000>;
201					type = "critical";
202				};
203
204				cpu-hot {
205					temperature = <95000>;
206					hysteresis = <2000>;
207					type = "hot";
208				};
209			};
210		};
211
212		sensor8-thermal {
213			polling-delay-passive = <0>;
214			polling-delay = <0>;
215			thermal-sensors = <&tsens 8>;
216
217			trips {
218				cpu-critical {
219					temperature = <105000>;
220					hysteresis = <2000>;
221					type = "critical";
222				};
223
224				cpu-hot {
225					temperature = <95000>;
226					hysteresis = <2000>;
227					type = "hot";
228				};
229			};
230		};
231
232		sensor9-thermal {
233			polling-delay-passive = <0>;
234			polling-delay = <0>;
235			thermal-sensors = <&tsens 9>;
236
237			trips {
238				cpu-critical {
239					temperature = <105000>;
240					hysteresis = <2000>;
241					type = "critical";
242				};
243
244				cpu-hot {
245					temperature = <95000>;
246					hysteresis = <2000>;
247					type = "hot";
248				};
249			};
250		};
251
252		sensor10-thermal {
253			polling-delay-passive = <0>;
254			polling-delay = <0>;
255			thermal-sensors = <&tsens 10>;
256
257			trips {
258				cpu-critical {
259					temperature = <105000>;
260					hysteresis = <2000>;
261					type = "critical";
262				};
263
264				cpu-hot {
265					temperature = <95000>;
266					hysteresis = <2000>;
267					type = "hot";
268				};
269			};
270		};
271	};
272
273	memory {
274		device_type = "memory";
275		reg = <0x0 0x0>;
276	};
277
278	cpu-pmu {
279		compatible = "qcom,krait-pmu";
280		interrupts = <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) |
281					  IRQ_TYPE_LEVEL_HIGH)>;
282	};
283
284	reserved-memory {
285		#address-cells = <1>;
286		#size-cells = <1>;
287		ranges;
288
289		nss@40000000 {
290			reg = <0x40000000 0x1000000>;
291			no-map;
292		};
293
294		smem: smem@41000000 {
295			reg = <0x41000000 0x200000>;
296			no-map;
297		};
298	};
299
300	clocks {
301		cxo_board {
302			compatible = "fixed-clock";
303			#clock-cells = <0>;
304			clock-frequency = <25000000>;
305		};
306
307		pxo_board {
308			compatible = "fixed-clock";
309			#clock-cells = <0>;
310			clock-frequency = <25000000>;
311		};
312
313		sleep_clk: sleep_clk {
314			compatible = "fixed-clock";
315			clock-frequency = <32768>;
316			#clock-cells = <0>;
317		};
318	};
319
320	firmware {
321		scm {
322			compatible = "qcom,scm-ipq806x", "qcom,scm";
323		};
324	};
325
326	soc: soc {
327		#address-cells = <1>;
328		#size-cells = <1>;
329		ranges;
330		compatible = "simple-bus";
331
332		lpass@28100000 {
333			compatible = "qcom,lpass-cpu";
334			status = "disabled";
335			clocks = <&lcc AHBIX_CLK>,
336					<&lcc MI2S_OSR_CLK>,
337					<&lcc MI2S_BIT_CLK>;
338			clock-names = "ahbix-clk",
339					"mi2s-osr-clk",
340					"mi2s-bit-clk";
341			interrupts = <GIC_SPI 85 IRQ_TYPE_EDGE_RISING>;
342			interrupt-names = "lpass-irq-lpaif";
343			reg = <0x28100000 0x10000>;
344			reg-names = "lpass-lpaif";
345		};
346
347		qcom_pinmux: pinmux@800000 {
348			compatible = "qcom,ipq8064-pinctrl";
349			reg = <0x800000 0x4000>;
350
351			gpio-controller;
352			gpio-ranges = <&qcom_pinmux 0 0 69>;
353			#gpio-cells = <2>;
354			interrupt-controller;
355			#interrupt-cells = <2>;
356			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
357
358			pcie0_pins: pcie0_pinmux {
359				mux {
360					pins = "gpio3";
361					function = "pcie1_rst";
362					drive-strength = <12>;
363					bias-disable;
364				};
365			};
366
367			pcie1_pins: pcie1_pinmux {
368				mux {
369					pins = "gpio48";
370					function = "pcie2_rst";
371					drive-strength = <12>;
372					bias-disable;
373				};
374			};
375
376			pcie2_pins: pcie2_pinmux {
377				mux {
378					pins = "gpio63";
379					function = "pcie3_rst";
380					drive-strength = <12>;
381					bias-disable;
382				};
383			};
384
385			spi_pins: spi_pins {
386				mux {
387					pins = "gpio18", "gpio19", "gpio21";
388					function = "gsbi5";
389					drive-strength = <10>;
390					bias-none;
391				};
392			};
393
394			leds_pins: leds_pins {
395				mux {
396					pins = "gpio7", "gpio8", "gpio9",
397					       "gpio26", "gpio53";
398					function = "gpio";
399					drive-strength = <2>;
400					bias-pull-down;
401					output-low;
402				};
403			};
404
405			buttons_pins: buttons_pins {
406				mux {
407					pins = "gpio54";
408					drive-strength = <2>;
409					bias-pull-up;
410				};
411			};
412
413			nand_pins: nand_pins {
414				mux {
415					pins = "gpio34", "gpio35", "gpio36",
416					       "gpio37", "gpio38", "gpio39",
417					       "gpio40", "gpio41", "gpio42",
418					       "gpio43", "gpio44", "gpio45",
419					       "gpio46", "gpio47";
420					function = "nand";
421					drive-strength = <10>;
422					bias-disable;
423				};
424
425				pullups {
426					pins = "gpio39";
427					bias-pull-up;
428				};
429
430				hold {
431					pins = "gpio40", "gpio41", "gpio42",
432					       "gpio43", "gpio44", "gpio45",
433					       "gpio46", "gpio47";
434					bias-bus-hold;
435				};
436			};
437		};
438
439		intc: interrupt-controller@2000000 {
440			compatible = "qcom,msm-qgic2";
441			interrupt-controller;
442			#interrupt-cells = <3>;
443			reg = <0x02000000 0x1000>,
444			      <0x02002000 0x1000>;
445		};
446
447		timer@200a000 {
448			compatible = "qcom,kpss-timer",
449				     "qcom,kpss-wdt-ipq8064", "qcom,msm-timer";
450			interrupts = <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(2) |
451						 IRQ_TYPE_EDGE_RISING)>,
452				     <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(2) |
453						 IRQ_TYPE_EDGE_RISING)>,
454				     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(2) |
455						 IRQ_TYPE_EDGE_RISING)>,
456				     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(2) |
457						 IRQ_TYPE_EDGE_RISING)>,
458				     <GIC_PPI 5 (GIC_CPU_MASK_SIMPLE(2) |
459						 IRQ_TYPE_EDGE_RISING)>;
460			reg = <0x0200a000 0x100>;
461			clock-frequency = <25000000>,
462					  <32768>;
463			clocks = <&sleep_clk>;
464			clock-names = "sleep";
465			cpu-offset = <0x80000>;
466		};
467
468		acc0: clock-controller@2088000 {
469			compatible = "qcom,kpss-acc-v1";
470			reg = <0x02088000 0x1000>, <0x02008000 0x1000>;
471		};
472
473		acc1: clock-controller@2098000 {
474			compatible = "qcom,kpss-acc-v1";
475			reg = <0x02098000 0x1000>, <0x02008000 0x1000>;
476		};
477
478		adm_dma: dma-controller@18300000 {
479			compatible = "qcom,adm";
480			reg = <0x18300000 0x100000>;
481			interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
482			#dma-cells = <1>;
483
484			clocks = <&gcc ADM0_CLK>, <&gcc ADM0_PBUS_CLK>;
485			clock-names = "core", "iface";
486
487			resets = <&gcc ADM0_RESET>,
488				 <&gcc ADM0_PBUS_RESET>,
489				 <&gcc ADM0_C0_RESET>,
490				 <&gcc ADM0_C1_RESET>,
491				 <&gcc ADM0_C2_RESET>;
492			reset-names = "clk", "pbus", "c0", "c1", "c2";
493			qcom,ee = <0>;
494
495			status = "disabled";
496		};
497
498		saw0: regulator@2089000 {
499			compatible = "qcom,saw2";
500			reg = <0x02089000 0x1000>, <0x02009000 0x1000>;
501			regulator;
502		};
503
504		saw1: regulator@2099000 {
505			compatible = "qcom,saw2";
506			reg = <0x02099000 0x1000>, <0x02009000 0x1000>;
507			regulator;
508		};
509
510		gsbi2: gsbi@12480000 {
511			compatible = "qcom,gsbi-v1.0.0";
512			cell-index = <2>;
513			reg = <0x12480000 0x100>;
514			clocks = <&gcc GSBI2_H_CLK>;
515			clock-names = "iface";
516			#address-cells = <1>;
517			#size-cells = <1>;
518			ranges;
519			status = "disabled";
520
521			syscon-tcsr = <&tcsr>;
522
523			gsbi2_serial: serial@12490000 {
524				compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
525				reg = <0x12490000 0x1000>,
526				      <0x12480000 0x1000>;
527				interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
528				clocks = <&gcc GSBI2_UART_CLK>, <&gcc GSBI2_H_CLK>;
529				clock-names = "core", "iface";
530				status = "disabled";
531			};
532
533			i2c@124a0000 {
534				compatible = "qcom,i2c-qup-v1.1.1";
535				reg = <0x124a0000 0x1000>;
536				interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
537
538				clocks = <&gcc GSBI2_QUP_CLK>, <&gcc GSBI2_H_CLK>;
539				clock-names = "core", "iface";
540				status = "disabled";
541
542				#address-cells = <1>;
543				#size-cells = <0>;
544			};
545		};
546
547		gsbi4: gsbi@16300000 {
548			compatible = "qcom,gsbi-v1.0.0";
549			cell-index = <4>;
550			reg = <0x16300000 0x100>;
551			clocks = <&gcc GSBI4_H_CLK>;
552			clock-names = "iface";
553			#address-cells = <1>;
554			#size-cells = <1>;
555			ranges;
556			status = "disabled";
557
558			syscon-tcsr = <&tcsr>;
559
560			gsbi4_serial: serial@16340000 {
561				compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
562				reg = <0x16340000 0x1000>,
563				      <0x16300000 0x1000>;
564				interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
565				clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>;
566				clock-names = "core", "iface";
567				status = "disabled";
568			};
569
570			i2c@16380000 {
571				compatible = "qcom,i2c-qup-v1.1.1";
572				reg = <0x16380000 0x1000>;
573				interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
574
575				clocks = <&gcc GSBI4_QUP_CLK>, <&gcc GSBI4_H_CLK>;
576				clock-names = "core", "iface";
577				status = "disabled";
578
579				#address-cells = <1>;
580				#size-cells = <0>;
581			};
582		};
583
584		gsbi5: gsbi@1a200000 {
585			compatible = "qcom,gsbi-v1.0.0";
586			cell-index = <5>;
587			reg = <0x1a200000 0x100>;
588			clocks = <&gcc GSBI5_H_CLK>;
589			clock-names = "iface";
590			#address-cells = <1>;
591			#size-cells = <1>;
592			ranges;
593			status = "disabled";
594
595			syscon-tcsr = <&tcsr>;
596
597			gsbi5_serial: serial@1a240000 {
598				compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
599				reg = <0x1a240000 0x1000>,
600				      <0x1a200000 0x1000>;
601				interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
602				clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
603				clock-names = "core", "iface";
604				status = "disabled";
605			};
606
607			i2c@1a280000 {
608				compatible = "qcom,i2c-qup-v1.1.1";
609				reg = <0x1a280000 0x1000>;
610				interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
611
612				clocks = <&gcc GSBI5_QUP_CLK>, <&gcc GSBI5_H_CLK>;
613				clock-names = "core", "iface";
614				status = "disabled";
615
616				#address-cells = <1>;
617				#size-cells = <0>;
618			};
619
620			spi@1a280000 {
621				compatible = "qcom,spi-qup-v1.1.1";
622				reg = <0x1a280000 0x1000>;
623				interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
624
625				clocks = <&gcc GSBI5_QUP_CLK>, <&gcc GSBI5_H_CLK>;
626				clock-names = "core", "iface";
627				status = "disabled";
628
629				#address-cells = <1>;
630				#size-cells = <0>;
631			};
632		};
633
634		gsbi7: gsbi@16600000 {
635			status = "disabled";
636			compatible = "qcom,gsbi-v1.0.0";
637			cell-index = <7>;
638			reg = <0x16600000 0x100>;
639			clocks = <&gcc GSBI7_H_CLK>;
640			clock-names = "iface";
641			#address-cells = <1>;
642			#size-cells = <1>;
643			ranges;
644			syscon-tcsr = <&tcsr>;
645
646			gsbi7_serial: serial@16640000 {
647				compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
648				reg = <0x16640000 0x1000>,
649				      <0x16600000 0x1000>;
650				interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
651				clocks = <&gcc GSBI7_UART_CLK>, <&gcc GSBI7_H_CLK>;
652				clock-names = "core", "iface";
653				status = "disabled";
654			};
655		};
656
657		rng@1a500000 {
658			compatible = "qcom,prng";
659			reg = <0x1a500000 0x200>;
660			clocks = <&gcc PRNG_CLK>;
661			clock-names = "core";
662		};
663
664		sata_phy: sata-phy@1b400000 {
665			compatible = "qcom,ipq806x-sata-phy";
666			reg = <0x1b400000 0x200>;
667
668			clocks = <&gcc SATA_PHY_CFG_CLK>;
669			clock-names = "cfg";
670
671			#phy-cells = <0>;
672			status = "disabled";
673		};
674
675		nand: nand-controller@1ac00000 {
676			compatible = "qcom,ipq806x-nand";
677			reg = <0x1ac00000 0x800>;
678
679			pinctrl-0 = <&nand_pins>;
680			pinctrl-names = "default";
681
682			clocks = <&gcc EBI2_CLK>,
683				 <&gcc EBI2_AON_CLK>;
684			clock-names = "core", "aon";
685
686			dmas = <&adm_dma 3>;
687			dma-names = "rxtx";
688			qcom,cmd-crci = <15>;
689			qcom,data-crci = <3>;
690
691			#address-cells = <1>;
692			#size-cells = <0>;
693
694			status = "disabled";
695		};
696
697		sata: sata@29000000 {
698			compatible = "qcom,ipq806x-ahci", "generic-ahci";
699			reg = <0x29000000 0x180>;
700
701			interrupts = <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
702
703			clocks = <&gcc SFAB_SATA_S_H_CLK>,
704				 <&gcc SATA_H_CLK>,
705				 <&gcc SATA_A_CLK>,
706				 <&gcc SATA_RXOOB_CLK>,
707				 <&gcc SATA_PMALIVE_CLK>;
708			clock-names = "slave_face", "iface", "core",
709					"rxoob", "pmalive";
710
711			assigned-clocks = <&gcc SATA_RXOOB_CLK>, <&gcc SATA_PMALIVE_CLK>;
712			assigned-clock-rates = <100000000>, <100000000>;
713
714			phys = <&sata_phy>;
715			phy-names = "sata-phy";
716			status = "disabled";
717		};
718
719		qcom,ssbi@500000 {
720			compatible = "qcom,ssbi";
721			reg = <0x00500000 0x1000>;
722			qcom,controller-type = "pmic-arbiter";
723		};
724
725		qfprom: qfprom@700000 {
726			compatible = "qcom,qfprom";
727			reg = <0x00700000 0x1000>;
728			#address-cells = <1>;
729			#size-cells = <1>;
730			tsens_calib: calib@400 {
731				reg = <0x400 0xb>;
732			};
733			tsens_calib_backup: calib_backup@410 {
734				reg = <0x410 0xb>;
735			};
736		};
737
738		gcc: clock-controller@900000 {
739			compatible = "qcom,gcc-ipq8064";
740			reg = <0x00900000 0x4000>;
741			#clock-cells = <1>;
742			#reset-cells = <1>;
743			#power-domain-cells = <1>;
744
745			tsens: thermal-sensor@900000 {
746				compatible = "qcom,ipq8064-tsens";
747
748				nvmem-cells = <&tsens_calib>, <&tsens_calib_backup>;
749				nvmem-cell-names = "calib", "calib_backup";
750				interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
751				interrupt-names = "uplow";
752
753				#qcom,sensors = <11>;
754				#thermal-sensor-cells = <1>;
755			};
756		};
757
758		rpm: rpm@108000 {
759			compatible = "qcom,rpm-ipq8064";
760			reg = <0x108000 0x1000>;
761			qcom,ipc = <&l2cc 0x8 2>;
762
763			interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
764					<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
765					<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
766			interrupt-names = "ack", "err", "wakeup";
767
768			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
769			clock-names = "ram";
770
771			rpmcc: clock-controller {
772				compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
773				#clock-cells = <1>;
774			};
775		};
776
777		tcsr: syscon@1a400000 {
778			compatible = "qcom,tcsr-ipq8064", "syscon";
779			reg = <0x1a400000 0x100>;
780		};
781
782		l2cc: clock-controller@2011000 {
783			compatible = "qcom,kpss-gcc", "syscon";
784			reg = <0x2011000 0x1000>;
785			clocks = <&gcc PLL8_VOTE>, <&gcc PXO_SRC>;
786			clock-names = "pll8_vote", "pxo";
787			clock-output-names = "acpu_l2_aux";
788		};
789
790		lcc: clock-controller@28000000 {
791			compatible = "qcom,lcc-ipq8064";
792			reg = <0x28000000 0x1000>;
793			#clock-cells = <1>;
794			#reset-cells = <1>;
795		};
796
797		pcie0: pci@1b500000 {
798			compatible = "qcom,pcie-ipq8064";
799			reg = <0x1b500000 0x1000
800			       0x1b502000 0x80
801			       0x1b600000 0x100
802			       0x0ff00000 0x100000>;
803			reg-names = "dbi", "elbi", "parf", "config";
804			device_type = "pci";
805			linux,pci-domain = <0>;
806			bus-range = <0x00 0xff>;
807			num-lanes = <1>;
808			#address-cells = <3>;
809			#size-cells = <2>;
810
811			ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00100000   /* downstream I/O */
812				  0x82000000 0 0x08000000 0x08000000 0 0x07e00000>; /* non-prefetchable memory */
813
814			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
815			interrupt-names = "msi";
816			#interrupt-cells = <1>;
817			interrupt-map-mask = <0 0 0 0x7>;
818			interrupt-map = <0 0 0 1 &intc 0 36 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
819					<0 0 0 2 &intc 0 37 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
820					<0 0 0 3 &intc 0 38 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
821					<0 0 0 4 &intc 0 39 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
822
823			clocks = <&gcc PCIE_A_CLK>,
824				 <&gcc PCIE_H_CLK>,
825				 <&gcc PCIE_PHY_CLK>,
826				 <&gcc PCIE_AUX_CLK>,
827				 <&gcc PCIE_ALT_REF_CLK>;
828			clock-names = "core", "iface", "phy", "aux", "ref";
829
830			assigned-clocks = <&gcc PCIE_ALT_REF_CLK>;
831			assigned-clock-rates = <100000000>;
832
833			resets = <&gcc PCIE_ACLK_RESET>,
834				 <&gcc PCIE_HCLK_RESET>,
835				 <&gcc PCIE_POR_RESET>,
836				 <&gcc PCIE_PCI_RESET>,
837				 <&gcc PCIE_PHY_RESET>,
838				 <&gcc PCIE_EXT_RESET>;
839			reset-names = "axi", "ahb", "por", "pci", "phy", "ext";
840
841			pinctrl-0 = <&pcie0_pins>;
842			pinctrl-names = "default";
843
844			status = "disabled";
845			perst-gpio = <&qcom_pinmux 3 GPIO_ACTIVE_LOW>;
846		};
847
848		pcie1: pci@1b700000 {
849			compatible = "qcom,pcie-ipq8064";
850			reg = <0x1b700000 0x1000
851			       0x1b702000 0x80
852			       0x1b800000 0x100
853			       0x31f00000 0x100000>;
854			reg-names = "dbi", "elbi", "parf", "config";
855			device_type = "pci";
856			linux,pci-domain = <1>;
857			bus-range = <0x00 0xff>;
858			num-lanes = <1>;
859			#address-cells = <3>;
860			#size-cells = <2>;
861
862			ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00100000   /* downstream I/O */
863				  0x82000000 0 0x2e000000 0x2e000000 0 0x03e00000>; /* non-prefetchable memory */
864
865			interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
866			interrupt-names = "msi";
867			#interrupt-cells = <1>;
868			interrupt-map-mask = <0 0 0 0x7>;
869			interrupt-map = <0 0 0 1 &intc 0 58 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
870					<0 0 0 2 &intc 0 59 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
871					<0 0 0 3 &intc 0 60 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
872					<0 0 0 4 &intc 0 61 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
873
874			clocks = <&gcc PCIE_1_A_CLK>,
875				 <&gcc PCIE_1_H_CLK>,
876				 <&gcc PCIE_1_PHY_CLK>,
877				 <&gcc PCIE_1_AUX_CLK>,
878				 <&gcc PCIE_1_ALT_REF_CLK>;
879			clock-names = "core", "iface", "phy", "aux", "ref";
880
881			assigned-clocks = <&gcc PCIE_1_ALT_REF_CLK>;
882			assigned-clock-rates = <100000000>;
883
884			resets = <&gcc PCIE_1_ACLK_RESET>,
885				 <&gcc PCIE_1_HCLK_RESET>,
886				 <&gcc PCIE_1_POR_RESET>,
887				 <&gcc PCIE_1_PCI_RESET>,
888				 <&gcc PCIE_1_PHY_RESET>,
889				 <&gcc PCIE_1_EXT_RESET>;
890			reset-names = "axi", "ahb", "por", "pci", "phy", "ext";
891
892			pinctrl-0 = <&pcie1_pins>;
893			pinctrl-names = "default";
894
895			status = "disabled";
896			perst-gpio = <&qcom_pinmux 48 GPIO_ACTIVE_LOW>;
897		};
898
899		pcie2: pci@1b900000 {
900			compatible = "qcom,pcie-ipq8064";
901			reg = <0x1b900000 0x1000
902			       0x1b902000 0x80
903			       0x1ba00000 0x100
904			       0x35f00000 0x100000>;
905			reg-names = "dbi", "elbi", "parf", "config";
906			device_type = "pci";
907			linux,pci-domain = <2>;
908			bus-range = <0x00 0xff>;
909			num-lanes = <1>;
910			#address-cells = <3>;
911			#size-cells = <2>;
912
913			ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00100000   /* downstream I/O */
914				  0x82000000 0 0x32000000 0x32000000 0 0x03e00000>; /* non-prefetchable memory */
915
916			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
917			interrupt-names = "msi";
918			#interrupt-cells = <1>;
919			interrupt-map-mask = <0 0 0 0x7>;
920			interrupt-map = <0 0 0 1 &intc 0 72 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
921					<0 0 0 2 &intc 0 73 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
922					<0 0 0 3 &intc 0 74 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
923					<0 0 0 4 &intc 0 75 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
924
925			clocks = <&gcc PCIE_2_A_CLK>,
926				 <&gcc PCIE_2_H_CLK>,
927				 <&gcc PCIE_2_PHY_CLK>,
928				 <&gcc PCIE_2_AUX_CLK>,
929				 <&gcc PCIE_2_ALT_REF_CLK>;
930			clock-names = "core", "iface", "phy", "aux", "ref";
931
932			assigned-clocks = <&gcc PCIE_2_ALT_REF_CLK>;
933			assigned-clock-rates = <100000000>;
934
935			resets = <&gcc PCIE_2_ACLK_RESET>,
936				 <&gcc PCIE_2_HCLK_RESET>,
937				 <&gcc PCIE_2_POR_RESET>,
938				 <&gcc PCIE_2_PCI_RESET>,
939				 <&gcc PCIE_2_PHY_RESET>,
940				 <&gcc PCIE_2_EXT_RESET>;
941			reset-names = "axi", "ahb", "por", "pci", "phy", "ext";
942
943			pinctrl-0 = <&pcie2_pins>;
944			pinctrl-names = "default";
945
946			status = "disabled";
947			perst-gpio = <&qcom_pinmux 63 GPIO_ACTIVE_LOW>;
948		};
949
950		nss_common: syscon@03000000 {
951			compatible = "syscon";
952			reg = <0x03000000 0x0000FFFF>;
953		};
954
955		qsgmii_csr: syscon@1bb00000 {
956			compatible = "syscon";
957			reg = <0x1bb00000 0x000001FF>;
958		};
959
960		stmmac_axi_setup: stmmac-axi-config {
961			snps,wr_osr_lmt = <7>;
962			snps,rd_osr_lmt = <7>;
963			snps,blen = <16 0 0 0 0 0 0>;
964		};
965
966		gmac0: ethernet@37000000 {
967			device_type = "network";
968			compatible = "qcom,ipq806x-gmac";
969			reg = <0x37000000 0x200000>;
970			interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>;
971			interrupt-names = "macirq";
972
973			snps,axi-config = <&stmmac_axi_setup>;
974			snps,pbl = <32>;
975			snps,aal = <1>;
976
977			qcom,nss-common = <&nss_common>;
978			qcom,qsgmii-csr = <&qsgmii_csr>;
979
980			clocks = <&gcc GMAC_CORE1_CLK>;
981			clock-names = "stmmaceth";
982
983			resets = <&gcc GMAC_CORE1_RESET>,
984				 <&gcc GMAC_AHB_RESET>;
985			reset-names = "stmmaceth", "ahb";
986
987			status = "disabled";
988		};
989
990		gmac1: ethernet@37200000 {
991			device_type = "network";
992			compatible = "qcom,ipq806x-gmac";
993			reg = <0x37200000 0x200000>;
994			interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
995			interrupt-names = "macirq";
996
997			snps,axi-config = <&stmmac_axi_setup>;
998			snps,pbl = <32>;
999			snps,aal = <1>;
1000
1001			qcom,nss-common = <&nss_common>;
1002			qcom,qsgmii-csr = <&qsgmii_csr>;
1003
1004			clocks = <&gcc GMAC_CORE2_CLK>;
1005			clock-names = "stmmaceth";
1006
1007			resets = <&gcc GMAC_CORE2_RESET>,
1008				 <&gcc GMAC_AHB_RESET>;
1009			reset-names = "stmmaceth", "ahb";
1010
1011			status = "disabled";
1012		};
1013
1014		gmac2: ethernet@37400000 {
1015			device_type = "network";
1016			compatible = "qcom,ipq806x-gmac";
1017			reg = <0x37400000 0x200000>;
1018			interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>;
1019			interrupt-names = "macirq";
1020
1021			snps,axi-config = <&stmmac_axi_setup>;
1022			snps,pbl = <32>;
1023			snps,aal = <1>;
1024
1025			qcom,nss-common = <&nss_common>;
1026			qcom,qsgmii-csr = <&qsgmii_csr>;
1027
1028			clocks = <&gcc GMAC_CORE3_CLK>;
1029			clock-names = "stmmaceth";
1030
1031			resets = <&gcc GMAC_CORE3_RESET>,
1032				 <&gcc GMAC_AHB_RESET>;
1033			reset-names = "stmmaceth", "ahb";
1034
1035			status = "disabled";
1036		};
1037
1038		gmac3: ethernet@37600000 {
1039			device_type = "network";
1040			compatible = "qcom,ipq806x-gmac";
1041			reg = <0x37600000 0x200000>;
1042			interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
1043			interrupt-names = "macirq";
1044
1045			snps,axi-config = <&stmmac_axi_setup>;
1046			snps,pbl = <32>;
1047			snps,aal = <1>;
1048
1049			qcom,nss-common = <&nss_common>;
1050			qcom,qsgmii-csr = <&qsgmii_csr>;
1051
1052			clocks = <&gcc GMAC_CORE4_CLK>;
1053			clock-names = "stmmaceth";
1054
1055			resets = <&gcc GMAC_CORE4_RESET>,
1056				 <&gcc GMAC_AHB_RESET>;
1057			reset-names = "stmmaceth", "ahb";
1058
1059			status = "disabled";
1060		};
1061
1062		hs_phy_0: phy@100f8800 {
1063			compatible = "qcom,ipq806x-usb-phy-hs";
1064			reg = <0x100f8800 0x30>;
1065			clocks = <&gcc USB30_0_UTMI_CLK>;
1066			clock-names = "ref";
1067			#phy-cells = <0>;
1068
1069			status = "disabled";
1070		};
1071
1072		ss_phy_0: phy@100f8830 {
1073			compatible = "qcom,ipq806x-usb-phy-ss";
1074			reg = <0x100f8830 0x30>;
1075			clocks = <&gcc USB30_0_MASTER_CLK>;
1076			clock-names = "ref";
1077			#phy-cells = <0>;
1078
1079			status = "disabled";
1080		};
1081
1082		usb3_0: usb3@100f8800 {
1083			compatible = "qcom,dwc3", "syscon";
1084			#address-cells = <1>;
1085			#size-cells = <1>;
1086			reg = <0x100f8800 0x8000>;
1087			clocks = <&gcc USB30_0_MASTER_CLK>;
1088			clock-names = "core";
1089
1090			ranges;
1091
1092			resets = <&gcc USB30_0_MASTER_RESET>;
1093			reset-names = "master";
1094
1095			status = "disabled";
1096
1097			dwc3_0: dwc3@10000000 {
1098				compatible = "snps,dwc3";
1099				reg = <0x10000000 0xcd00>;
1100				interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
1101				phys = <&hs_phy_0>, <&ss_phy_0>;
1102				phy-names = "usb2-phy", "usb3-phy";
1103				dr_mode = "host";
1104				snps,dis_u3_susphy_quirk;
1105			};
1106		};
1107
1108		hs_phy_1: phy@110f8800 {
1109			compatible = "qcom,ipq806x-usb-phy-hs";
1110			reg = <0x110f8800 0x30>;
1111			clocks = <&gcc USB30_1_UTMI_CLK>;
1112			clock-names = "ref";
1113			#phy-cells = <0>;
1114		};
1115
1116		ss_phy_1: phy@110f8830 {
1117			compatible = "qcom,ipq806x-usb-phy-ss";
1118			reg = <0x110f8830 0x30>;
1119			clocks = <&gcc USB30_1_MASTER_CLK>;
1120			clock-names = "ref";
1121			#phy-cells = <0>;
1122		};
1123
1124		usb3_1: usb3@110f8800 {
1125			compatible = "qcom,dwc3", "syscon";
1126			#address-cells = <1>;
1127			#size-cells = <1>;
1128			reg = <0x110f8800 0x8000>;
1129			clocks = <&gcc USB30_1_MASTER_CLK>;
1130			clock-names = "core";
1131
1132			ranges;
1133
1134			resets = <&gcc USB30_1_MASTER_RESET>;
1135			reset-names = "master";
1136
1137			status = "disabled";
1138
1139			dwc3_1: dwc3@11000000 {
1140				compatible = "snps,dwc3";
1141				reg = <0x11000000 0xcd00>;
1142				interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
1143				phys = <&hs_phy_1>, <&ss_phy_1>;
1144				phy-names = "usb2-phy", "usb3-phy";
1145				dr_mode = "host";
1146				snps,dis_u3_susphy_quirk;
1147			};
1148		};
1149
1150		vsdcc_fixed: vsdcc-regulator {
1151			compatible = "regulator-fixed";
1152			regulator-name = "SDCC Power";
1153			regulator-min-microvolt = <3300000>;
1154			regulator-max-microvolt = <3300000>;
1155			regulator-always-on;
1156		};
1157
1158		sdcc1bam: dma@12402000 {
1159			compatible = "qcom,bam-v1.3.0";
1160			reg = <0x12402000 0x8000>;
1161			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1162			clocks = <&gcc SDC1_H_CLK>;
1163			clock-names = "bam_clk";
1164			#dma-cells = <1>;
1165			qcom,ee = <0>;
1166		};
1167
1168		sdcc3bam: dma@12182000 {
1169			compatible = "qcom,bam-v1.3.0";
1170			reg = <0x12182000 0x8000>;
1171			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
1172			clocks = <&gcc SDC3_H_CLK>;
1173			clock-names = "bam_clk";
1174			#dma-cells = <1>;
1175			qcom,ee = <0>;
1176		};
1177
1178		amba: amba {
1179			compatible = "simple-bus";
1180			#address-cells = <1>;
1181			#size-cells = <1>;
1182			ranges;
1183
1184			sdcc1: mmc@12400000 {
1185				status          = "disabled";
1186				compatible      = "arm,pl18x", "arm,primecell";
1187				arm,primecell-periphid = <0x00051180>;
1188				reg             = <0x12400000 0x2000>;
1189				interrupts      = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
1190				interrupt-names = "cmd_irq";
1191				clocks          = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>;
1192				clock-names     = "mclk", "apb_pclk";
1193				bus-width       = <8>;
1194				max-frequency   = <96000000>;
1195				non-removable;
1196				cap-sd-highspeed;
1197				cap-mmc-highspeed;
1198				mmc-ddr-1_8v;
1199				vmmc-supply = <&vsdcc_fixed>;
1200				dmas = <&sdcc1bam 2>, <&sdcc1bam 1>;
1201				dma-names = "tx", "rx";
1202			};
1203
1204			sdcc3: mmc@12180000 {
1205				compatible      = "arm,pl18x", "arm,primecell";
1206				arm,primecell-periphid = <0x00051180>;
1207				status          = "disabled";
1208				reg             = <0x12180000 0x2000>;
1209				interrupts      = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
1210				interrupt-names = "cmd_irq";
1211				clocks          = <&gcc SDC3_CLK>, <&gcc SDC3_H_CLK>;
1212				clock-names     = "mclk", "apb_pclk";
1213				bus-width       = <8>;
1214				cap-sd-highspeed;
1215				cap-mmc-highspeed;
1216				max-frequency   = <192000000>;
1217				sd-uhs-sdr104;
1218				sd-uhs-ddr50;
1219				vqmmc-supply = <&vsdcc_fixed>;
1220				dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
1221				dma-names = "tx", "rx";
1222			};
1223		};
1224	};
1225};
1226