xref: /linux/arch/arm64/boot/dts/qcom/ipq6018.dtsi (revision 78c3925c048c752334873f56c3a3d1c9d53e0416)
1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * IPQ6018 SoC device tree source
4 *
5 * Copyright (c) 2019, The Linux Foundation. All rights reserved.
6 */
7
8#include <dt-bindings/interrupt-controller/arm-gic.h>
9#include <dt-bindings/clock/qcom,gcc-ipq6018.h>
10#include <dt-bindings/reset/qcom,gcc-ipq6018.h>
11#include <dt-bindings/clock/qcom,apss-ipq.h>
12#include <dt-bindings/thermal/thermal.h>
13
14/ {
15	#address-cells = <2>;
16	#size-cells = <2>;
17	interrupt-parent = <&intc>;
18
19	clocks {
20		sleep_clk: sleep-clk {
21			compatible = "fixed-clock";
22			clock-frequency = <32000>;
23			#clock-cells = <0>;
24		};
25
26		xo: xo {
27			compatible = "fixed-clock";
28			clock-frequency = <24000000>;
29			#clock-cells = <0>;
30		};
31	};
32
33	cpus: cpus {
34		#address-cells = <1>;
35		#size-cells = <0>;
36
37		CPU0: cpu@0 {
38			device_type = "cpu";
39			compatible = "arm,cortex-a53";
40			reg = <0x0>;
41			enable-method = "psci";
42			next-level-cache = <&L2_0>;
43			clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
44			clock-names = "cpu";
45			operating-points-v2 = <&cpu_opp_table>;
46			cpu-supply = <&ipq6018_s2>;
47			#cooling-cells = <2>;
48		};
49
50		CPU1: cpu@1 {
51			device_type = "cpu";
52			compatible = "arm,cortex-a53";
53			enable-method = "psci";
54			reg = <0x1>;
55			next-level-cache = <&L2_0>;
56			clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
57			clock-names = "cpu";
58			operating-points-v2 = <&cpu_opp_table>;
59			cpu-supply = <&ipq6018_s2>;
60			#cooling-cells = <2>;
61		};
62
63		CPU2: cpu@2 {
64			device_type = "cpu";
65			compatible = "arm,cortex-a53";
66			enable-method = "psci";
67			reg = <0x2>;
68			next-level-cache = <&L2_0>;
69			clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
70			clock-names = "cpu";
71			operating-points-v2 = <&cpu_opp_table>;
72			cpu-supply = <&ipq6018_s2>;
73			#cooling-cells = <2>;
74		};
75
76		CPU3: cpu@3 {
77			device_type = "cpu";
78			compatible = "arm,cortex-a53";
79			enable-method = "psci";
80			reg = <0x3>;
81			next-level-cache = <&L2_0>;
82			clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
83			clock-names = "cpu";
84			operating-points-v2 = <&cpu_opp_table>;
85			cpu-supply = <&ipq6018_s2>;
86			#cooling-cells = <2>;
87		};
88
89		L2_0: l2-cache {
90			compatible = "cache";
91			cache-level = <2>;
92			cache-unified;
93		};
94	};
95
96	firmware {
97		scm {
98			compatible = "qcom,scm-ipq6018", "qcom,scm";
99			qcom,dload-mode = <&tcsr 0x6100>;
100		};
101	};
102
103	cpu_opp_table: opp-table-cpu {
104		compatible = "operating-points-v2-kryo-cpu";
105		nvmem-cells = <&cpu_speed_bin>;
106		opp-shared;
107
108		opp-864000000 {
109			opp-hz = /bits/ 64 <864000000>;
110			opp-microvolt = <725000>;
111			opp-supported-hw = <0xf>;
112			clock-latency-ns = <200000>;
113		};
114
115		opp-1056000000 {
116			opp-hz = /bits/ 64 <1056000000>;
117			opp-microvolt = <787500>;
118			opp-supported-hw = <0xf>;
119			clock-latency-ns = <200000>;
120		};
121
122		opp-1320000000 {
123			opp-hz = /bits/ 64 <1320000000>;
124			opp-microvolt = <862500>;
125			opp-supported-hw = <0x3>;
126			clock-latency-ns = <200000>;
127		};
128
129		opp-1440000000 {
130			opp-hz = /bits/ 64 <1440000000>;
131			opp-microvolt = <925000>;
132			opp-supported-hw = <0x3>;
133			clock-latency-ns = <200000>;
134		};
135
136		opp-1608000000 {
137			opp-hz = /bits/ 64 <1608000000>;
138			opp-microvolt = <987500>;
139			opp-supported-hw = <0x1>;
140			clock-latency-ns = <200000>;
141		};
142
143		opp-1800000000 {
144			opp-hz = /bits/ 64 <1800000000>;
145			opp-microvolt = <1062500>;
146			opp-supported-hw = <0x1>;
147			clock-latency-ns = <200000>;
148		};
149	};
150
151	pmuv8: pmu {
152		compatible = "arm,cortex-a53-pmu";
153		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
154	};
155
156	psci: psci {
157		compatible = "arm,psci-1.0";
158		method = "smc";
159	};
160
161	rpm: remoteproc {
162		compatible = "qcom,ipq6018-rpm-proc", "qcom,rpm-proc";
163
164		glink-edge {
165			compatible = "qcom,glink-rpm";
166			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
167			qcom,rpm-msg-ram = <&rpm_msg_ram>;
168			mboxes = <&apcs_glb 0>;
169
170			rpm_requests: rpm-requests {
171				compatible = "qcom,rpm-ipq6018";
172				qcom,glink-channels = "rpm_requests";
173
174				regulators {
175					compatible = "qcom,rpm-mp5496-regulators";
176
177					ipq6018_s2: s2 {
178						regulator-min-microvolt = <725000>;
179						regulator-max-microvolt = <1062500>;
180						regulator-always-on;
181					};
182				};
183			};
184		};
185	};
186
187	reserved-memory {
188		#address-cells = <2>;
189		#size-cells = <2>;
190		ranges;
191
192		rpm_msg_ram: memory@60000 {
193			reg = <0x0 0x00060000 0x0 0x6000>;
194			no-map;
195		};
196
197		bootloader@4a100000 {
198			reg = <0x0 0x4a100000 0x0 0x400000>;
199			no-map;
200		};
201
202		sbl@4a500000 {
203			reg = <0x0 0x4a500000 0x0 0x100000>;
204			no-map;
205		};
206
207		tz: memory@4a600000 {
208			reg = <0x0 0x4a600000 0x0 0x400000>;
209			no-map;
210		};
211
212		smem_region: memory@4aa00000 {
213			reg = <0x0 0x4aa00000 0x0 0x100000>;
214			no-map;
215		};
216
217		q6_region: memory@4ab00000 {
218			reg = <0x0 0x4ab00000 0x0 0x5500000>;
219			no-map;
220		};
221	};
222
223	smem {
224		compatible = "qcom,smem";
225		memory-region = <&smem_region>;
226		hwlocks = <&tcsr_mutex 3>;
227	};
228
229	soc: soc@0 {
230		#address-cells = <2>;
231		#size-cells = <2>;
232		ranges = <0 0 0 0 0x0 0xffffffff>;
233		dma-ranges;
234		compatible = "simple-bus";
235
236		qusb_phy_1: qusb@59000 {
237			compatible = "qcom,ipq6018-qusb2-phy";
238			reg = <0x0 0x00059000 0x0 0x180>;
239			#phy-cells = <0>;
240
241			clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
242				 <&xo>;
243			clock-names = "cfg_ahb", "ref";
244
245			resets = <&gcc GCC_QUSB2_1_PHY_BCR>;
246			status = "disabled";
247		};
248
249		ssphy_0: ssphy@78000 {
250			compatible = "qcom,ipq6018-qmp-usb3-phy";
251			reg = <0x0 0x00078000 0x0 0x1000>;
252
253			clocks = <&gcc GCC_USB0_AUX_CLK>,
254				 <&xo>,
255				 <&gcc GCC_USB0_PHY_CFG_AHB_CLK>,
256				 <&gcc GCC_USB0_PIPE_CLK>;
257			clock-names = "aux",
258				      "ref",
259				      "cfg_ahb",
260				      "pipe";
261			clock-output-names = "gcc_usb0_pipe_clk_src";
262			#clock-cells = <0>;
263			#phy-cells = <0>;
264
265			resets = <&gcc GCC_USB0_PHY_BCR>,
266				 <&gcc GCC_USB3PHY_0_PHY_BCR>;
267			reset-names = "phy",
268				      "phy_phy";
269
270			status = "disabled";
271		};
272
273		qusb_phy_0: qusb@79000 {
274			compatible = "qcom,ipq6018-qusb2-phy";
275			reg = <0x0 0x00079000 0x0 0x180>;
276			#phy-cells = <0>;
277
278			clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>,
279				<&xo>;
280			clock-names = "cfg_ahb", "ref";
281
282			resets = <&gcc GCC_QUSB2_0_PHY_BCR>;
283			status = "disabled";
284		};
285
286		pcie_phy: phy@84000 {
287			compatible = "qcom,ipq6018-qmp-pcie-phy";
288			reg = <0x0 0x00084000 0x0 0x1000>;
289			status = "disabled";
290
291			clocks = <&gcc GCC_PCIE0_AUX_CLK>,
292				<&gcc GCC_PCIE0_AHB_CLK>,
293				<&gcc GCC_PCIE0_PIPE_CLK>;
294			clock-names = "aux",
295				      "cfg_ahb",
296				      "pipe";
297
298			clock-output-names = "gcc_pcie0_pipe_clk_src";
299			#clock-cells = <0>;
300
301			#phy-cells = <0>;
302
303			resets = <&gcc GCC_PCIE0_PHY_BCR>,
304				<&gcc GCC_PCIE0PHY_PHY_BCR>;
305			reset-names = "phy",
306				      "common";
307		};
308
309		mdio: mdio@90000 {
310			#address-cells = <1>;
311			#size-cells = <0>;
312			compatible = "qcom,ipq6018-mdio", "qcom,ipq4019-mdio";
313			reg = <0x0 0x00090000 0x0 0x64>;
314			clocks = <&gcc GCC_MDIO_AHB_CLK>;
315			clock-names = "gcc_mdio_ahb_clk";
316			status = "disabled";
317		};
318
319		qfprom: efuse@a4000 {
320			compatible = "qcom,ipq6018-qfprom", "qcom,qfprom";
321			reg = <0x0 0x000a4000 0x0 0x2000>;
322			#address-cells = <1>;
323			#size-cells = <1>;
324
325			cpu_speed_bin: cpu-speed-bin@135 {
326				reg = <0x135 0x1>;
327				bits = <7 1>;
328			};
329		};
330
331		prng: qrng@e3000 {
332			compatible = "qcom,prng-ee";
333			reg = <0x0 0x000e3000 0x0 0x1000>;
334			clocks = <&gcc GCC_PRNG_AHB_CLK>;
335			clock-names = "core";
336		};
337
338		tsens: thermal-sensor@4a9000 {
339			compatible = "qcom,ipq6018-tsens", "qcom,ipq8074-tsens";
340			reg = <0x0 0x004a9000 0x0 0x1000>,
341			      <0x0 0x004a8000 0x0 0x1000>;
342			interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
343			interrupt-names = "combined";
344			#qcom,sensors = <16>;
345			#thermal-sensor-cells = <1>;
346		};
347
348		cryptobam: dma-controller@704000 {
349			compatible = "qcom,bam-v1.7.0";
350			reg = <0x0 0x00704000 0x0 0x20000>;
351			interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
352			clocks = <&gcc GCC_CRYPTO_AHB_CLK>;
353			clock-names = "bam_clk";
354			#dma-cells = <1>;
355			qcom,ee = <1>;
356			qcom,controlled-remotely;
357		};
358
359		crypto: crypto@73a000 {
360			compatible = "qcom,crypto-v5.1";
361			reg = <0x0 0x0073a000 0x0 0x6000>;
362			clocks = <&gcc GCC_CRYPTO_AHB_CLK>,
363				 <&gcc GCC_CRYPTO_AXI_CLK>,
364				 <&gcc GCC_CRYPTO_CLK>;
365			clock-names = "iface", "bus", "core";
366			dmas = <&cryptobam 2>, <&cryptobam 3>;
367			dma-names = "rx", "tx";
368		};
369
370		tlmm: pinctrl@1000000 {
371			compatible = "qcom,ipq6018-pinctrl";
372			reg = <0x0 0x01000000 0x0 0x300000>;
373			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
374			gpio-controller;
375			#gpio-cells = <2>;
376			gpio-ranges = <&tlmm 0 0 80>;
377			interrupt-controller;
378			#interrupt-cells = <2>;
379
380			serial_3_pins: serial3-state {
381				pins = "gpio44", "gpio45";
382				function = "blsp2_uart";
383				drive-strength = <8>;
384				bias-pull-down;
385			};
386
387			qpic_pins: qpic-state {
388				pins = "gpio1", "gpio3", "gpio4",
389					"gpio5", "gpio6", "gpio7",
390					"gpio8", "gpio10", "gpio11",
391					"gpio12", "gpio13", "gpio14",
392					"gpio15", "gpio17";
393				function = "qpic_pad";
394				drive-strength = <8>;
395				bias-disable;
396			};
397		};
398
399		gcc: gcc@1800000 {
400			compatible = "qcom,gcc-ipq6018";
401			reg = <0x0 0x01800000 0x0 0x80000>;
402			clocks = <&xo>, <&sleep_clk>;
403			clock-names = "xo", "sleep_clk";
404			#clock-cells = <1>;
405			#reset-cells = <1>;
406		};
407
408		tcsr_mutex: hwlock@1905000 {
409			compatible = "qcom,ipq6018-tcsr-mutex", "qcom,tcsr-mutex";
410			reg = <0x0 0x01905000 0x0 0x20000>;
411			#hwlock-cells = <1>;
412		};
413
414		tcsr: syscon@1937000 {
415			compatible = "qcom,tcsr-ipq6018", "syscon";
416			reg = <0x0 0x01937000 0x0 0x21000>;
417		};
418
419		usb2: usb@70f8800 {
420			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
421			reg = <0x0 0x070f8800 0x0 0x400>;
422			#address-cells = <2>;
423			#size-cells = <2>;
424			ranges;
425			clocks = <&gcc GCC_USB1_MASTER_CLK>,
426				 <&gcc GCC_USB1_SLEEP_CLK>,
427				 <&gcc GCC_USB1_MOCK_UTMI_CLK>;
428			clock-names = "core",
429				      "sleep",
430				      "mock_utmi";
431
432			assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>,
433					  <&gcc GCC_USB1_MOCK_UTMI_CLK>;
434			assigned-clock-rates = <133330000>,
435					       <24000000>;
436
437			interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
438				     <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
439			interrupt-names = "pwr_event",
440					  "qusb2_phy";
441
442			resets = <&gcc GCC_USB1_BCR>;
443			status = "disabled";
444
445			dwc_1: usb@7000000 {
446				compatible = "snps,dwc3";
447				reg = <0x0 0x07000000 0x0 0xcd00>;
448				interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
449				phys = <&qusb_phy_1>;
450				phy-names = "usb2-phy";
451				tx-fifo-resize;
452				snps,is-utmi-l1-suspend;
453				snps,hird-threshold = /bits/ 8 <0x0>;
454				snps,dis_u2_susphy_quirk;
455				snps,dis_u3_susphy_quirk;
456				dr_mode = "host";
457			};
458		};
459
460		blsp_dma: dma-controller@7884000 {
461			compatible = "qcom,bam-v1.7.0";
462			reg = <0x0 0x07884000 0x0 0x2b000>;
463			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
464			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
465			clock-names = "bam_clk";
466			#dma-cells = <1>;
467			qcom,ee = <0>;
468		};
469
470		blsp1_uart1: serial@78af000 {
471			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
472			reg = <0x0 0x78af000 0x0 0x200>;
473			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
474			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>,
475				 <&gcc GCC_BLSP1_AHB_CLK>;
476			clock-names = "core", "iface";
477			status = "disabled";
478		};
479
480		blsp1_uart2: serial@78b0000 {
481			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
482			reg = <0x0 0x78b0000 0x0 0x200>;
483			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
484			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
485				 <&gcc GCC_BLSP1_AHB_CLK>;
486			clock-names = "core", "iface";
487			status = "disabled";
488		};
489
490		blsp1_uart3: serial@78b1000 {
491			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
492			reg = <0x0 0x078b1000 0x0 0x200>;
493			interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
494			clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>,
495				 <&gcc GCC_BLSP1_AHB_CLK>;
496			clock-names = "core", "iface";
497			status = "disabled";
498		};
499
500		blsp1_uart4: serial@78b2000 {
501			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
502			reg = <0x0 0x078b2000 0x0 0x200>;
503			interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>;
504			clocks = <&gcc GCC_BLSP1_UART4_APPS_CLK>,
505				 <&gcc GCC_BLSP1_AHB_CLK>;
506			clock-names = "core", "iface";
507			status = "disabled";
508		};
509
510		blsp1_uart5: serial@78b3000 {
511			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
512			reg = <0x0 0x78b3000 0x0 0x200>;
513			interrupts = <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>;
514			clocks = <&gcc GCC_BLSP1_UART5_APPS_CLK>,
515				 <&gcc GCC_BLSP1_AHB_CLK>;
516			clock-names = "core", "iface";
517			status = "disabled";
518		};
519
520		blsp1_uart6: serial@78b4000 {
521			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
522			reg = <0x0 0x078b4000 0x0 0x200>;
523			interrupts = <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>;
524			clocks = <&gcc GCC_BLSP1_UART6_APPS_CLK>,
525				 <&gcc GCC_BLSP1_AHB_CLK>;
526			clock-names = "core", "iface";
527			status = "disabled";
528		};
529
530		blsp1_spi1: spi@78b5000 {
531			compatible = "qcom,spi-qup-v2.2.1";
532			#address-cells = <1>;
533			#size-cells = <0>;
534			reg = <0x0 0x078b5000 0x0 0x600>;
535			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
536			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
537				 <&gcc GCC_BLSP1_AHB_CLK>;
538			clock-names = "core", "iface";
539			dmas = <&blsp_dma 12>, <&blsp_dma 13>;
540			dma-names = "tx", "rx";
541			status = "disabled";
542		};
543
544		blsp1_spi2: spi@78b6000 {
545			compatible = "qcom,spi-qup-v2.2.1";
546			#address-cells = <1>;
547			#size-cells = <0>;
548			reg = <0x0 0x078b6000 0x0 0x600>;
549			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
550			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
551				 <&gcc GCC_BLSP1_AHB_CLK>;
552			clock-names = "core", "iface";
553			dmas = <&blsp_dma 14>, <&blsp_dma 15>;
554			dma-names = "tx", "rx";
555			status = "disabled";
556		};
557
558		blsp1_spi5: spi@78b9000 {
559			compatible = "qcom,spi-qup-v2.2.1";
560			#address-cells = <1>;
561			#size-cells = <0>;
562			reg = <0x0 0x078b9000 0x0 0x600>;
563			interrupts = <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>;
564			clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
565				 <&gcc GCC_BLSP1_AHB_CLK>;
566			clock-names = "core", "iface";
567			dmas = <&blsp_dma 20>, <&blsp_dma 21>;
568			dma-names = "tx", "rx";
569			status = "disabled";
570		};
571
572		blsp1_i2c2: i2c@78b6000 {
573			compatible = "qcom,i2c-qup-v2.2.1";
574			#address-cells = <1>;
575			#size-cells = <0>;
576			reg = <0x0 0x078b6000 0x0 0x600>;
577			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
578			clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>,
579				 <&gcc GCC_BLSP1_AHB_CLK>;
580			clock-names = "core", "iface";
581			clock-frequency = <400000>;
582			dmas = <&blsp_dma 14>, <&blsp_dma 15>;
583			dma-names = "tx", "rx";
584			status = "disabled";
585		};
586
587		blsp1_i2c3: i2c@78b7000 {
588			compatible = "qcom,i2c-qup-v2.2.1";
589			#address-cells = <1>;
590			#size-cells = <0>;
591			reg = <0x0 0x078b7000 0x0 0x600>;
592			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
593			clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>,
594				 <&gcc GCC_BLSP1_AHB_CLK>;
595			clock-names = "core", "iface";
596			clock-frequency = <400000>;
597			dmas = <&blsp_dma 16>, <&blsp_dma 17>;
598			dma-names = "tx", "rx";
599			status = "disabled";
600		};
601
602		blsp1_i2c6: i2c@78ba000 {
603			compatible = "qcom,i2c-qup-v2.2.1";
604			#address-cells = <1>;
605			#size-cells = <0>;
606			reg = <0x0 0x078ba000 0x0 0x600>;
607			interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
608			clocks = <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>,
609			       <&gcc GCC_BLSP1_AHB_CLK>;
610			clock-names = "core", "iface";
611			clock-frequency = <400000>;
612			dmas = <&blsp_dma 22>, <&blsp_dma 23>;
613			dma-names = "tx", "rx";
614			status = "disabled";
615		};
616
617		qpic_bam: dma-controller@7984000 {
618			compatible = "qcom,bam-v1.7.0";
619			reg = <0x0 0x07984000 0x0 0x1a000>;
620			interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
621			clocks = <&gcc GCC_QPIC_AHB_CLK>;
622			clock-names = "bam_clk";
623			#dma-cells = <1>;
624			qcom,ee = <0>;
625			status = "disabled";
626		};
627
628		qpic_nand: nand-controller@79b0000 {
629			compatible = "qcom,ipq6018-nand";
630			reg = <0x0 0x079b0000 0x0 0x10000>;
631			#address-cells = <1>;
632			#size-cells = <0>;
633			clocks = <&gcc GCC_QPIC_CLK>,
634				 <&gcc GCC_QPIC_AHB_CLK>;
635			clock-names = "core", "aon";
636
637			dmas = <&qpic_bam 0>,
638			       <&qpic_bam 1>,
639			       <&qpic_bam 2>;
640			dma-names = "tx", "rx", "cmd";
641			pinctrl-0 = <&qpic_pins>;
642			pinctrl-names = "default";
643			status = "disabled";
644		};
645
646		usb3: usb@8af8800 {
647			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
648			reg = <0x0 0x08af8800 0x0 0x400>;
649			#address-cells = <2>;
650			#size-cells = <2>;
651			ranges;
652
653			clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
654				<&gcc GCC_USB0_MASTER_CLK>,
655				<&gcc GCC_USB0_SLEEP_CLK>,
656				<&gcc GCC_USB0_MOCK_UTMI_CLK>;
657			clock-names = "cfg_noc",
658				"core",
659				"sleep",
660				"mock_utmi";
661
662			assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
663					  <&gcc GCC_USB0_MASTER_CLK>,
664					  <&gcc GCC_USB0_MOCK_UTMI_CLK>;
665			assigned-clock-rates = <133330000>,
666					       <133330000>,
667					       <24000000>;
668
669			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
670				     <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
671				     <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>;
672			interrupt-names = "pwr_event",
673					  "qusb2_phy",
674					  "ss_phy_irq";
675
676			resets = <&gcc GCC_USB0_BCR>;
677			status = "disabled";
678
679			dwc_0: usb@8a00000 {
680				compatible = "snps,dwc3";
681				reg = <0x0 0x08a00000 0x0 0xcd00>;
682				interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
683				phys = <&qusb_phy_0>, <&ssphy_0>;
684				phy-names = "usb2-phy", "usb3-phy";
685				clocks = <&xo>;
686				clock-names = "ref";
687				tx-fifo-resize;
688				snps,is-utmi-l1-suspend;
689				snps,hird-threshold = /bits/ 8 <0x0>;
690				snps,dis_u2_susphy_quirk;
691				snps,dis_u3_susphy_quirk;
692				dr_mode = "host";
693			};
694		};
695
696		intc: interrupt-controller@b000000 {
697			compatible = "qcom,msm-qgic2";
698			#address-cells = <2>;
699			#size-cells = <2>;
700			interrupt-controller;
701			#interrupt-cells = <3>;
702			reg = <0x0 0x0b000000 0x0 0x1000>,  /*GICD*/
703			      <0x0 0x0b002000 0x0 0x1000>,  /*GICC*/
704			      <0x0 0x0b001000 0x0 0x1000>,  /*GICH*/
705			      <0x0 0x0b004000 0x0 0x1000>;  /*GICV*/
706			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
707			ranges = <0 0 0 0xb00a000 0 0xffd>;
708
709			v2m@0 {
710				compatible = "arm,gic-v2m-frame";
711				msi-controller;
712				reg = <0x0 0x0 0x0 0xffd>;
713			};
714		};
715
716		watchdog@b017000 {
717			compatible = "qcom,kpss-wdt";
718			interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
719			reg = <0x0 0x0b017000 0x0 0x40>;
720			clocks = <&sleep_clk>;
721			timeout-sec = <10>;
722		};
723
724		apcs_glb: mailbox@b111000 {
725			compatible = "qcom,ipq6018-apcs-apps-global";
726			reg = <0x0 0x0b111000 0x0 0x1000>;
727			#clock-cells = <1>;
728			clocks = <&a53pll>, <&xo>, <&gcc GPLL0>;
729			clock-names = "pll", "xo", "gpll0";
730			#mbox-cells = <1>;
731		};
732
733		a53pll: clock@b116000 {
734			compatible = "qcom,ipq6018-a53pll";
735			reg = <0x0 0x0b116000 0x0 0x40>;
736			#clock-cells = <0>;
737			clocks = <&xo>;
738			clock-names = "xo";
739		};
740
741		timer@b120000 {
742			#address-cells = <1>;
743			#size-cells = <1>;
744			ranges = <0 0 0 0x10000000>;
745			compatible = "arm,armv7-timer-mem";
746			reg = <0x0 0x0b120000 0x0 0x1000>;
747
748			frame@b120000 {
749				frame-number = <0>;
750				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
751					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
752				reg = <0x0b121000 0x1000>,
753				      <0x0b122000 0x1000>;
754			};
755
756			frame@b123000 {
757				frame-number = <1>;
758				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
759				reg = <0x0b123000 0x1000>;
760				status = "disabled";
761			};
762
763			frame@b124000 {
764				frame-number = <2>;
765				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
766				reg = <0x0b124000 0x1000>;
767				status = "disabled";
768			};
769
770			frame@b125000 {
771				frame-number = <3>;
772				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
773				reg = <0x0b125000 0x1000>;
774				status = "disabled";
775			};
776
777			frame@b126000 {
778				frame-number = <4>;
779				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
780				reg = <0x0b126000 0x1000>;
781				status = "disabled";
782			};
783
784			frame@b127000 {
785				frame-number = <5>;
786				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
787				reg = <0x0b127000 0x1000>;
788				status = "disabled";
789			};
790
791			frame@b128000 {
792				frame-number = <6>;
793				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
794				reg = <0x0b128000 0x1000>;
795				status = "disabled";
796			};
797		};
798
799		q6v5_wcss: remoteproc@cd00000 {
800			compatible = "qcom,ipq6018-wcss-pil";
801			reg = <0x0 0x0cd00000 0x0 0x4040>,
802			      <0x0 0x004ab000 0x0 0x20>;
803			reg-names = "qdsp6",
804				    "rmb";
805			interrupts-extended = <&intc GIC_SPI 325 IRQ_TYPE_EDGE_RISING>,
806					      <&wcss_smp2p_in 0 0>,
807					      <&wcss_smp2p_in 1 0>,
808					      <&wcss_smp2p_in 2 0>,
809					      <&wcss_smp2p_in 3 0>;
810			interrupt-names = "wdog",
811					  "fatal",
812					  "ready",
813					  "handover",
814					  "stop-ack";
815
816			resets = <&gcc GCC_WCSSAON_RESET>,
817				 <&gcc GCC_WCSS_BCR>,
818				 <&gcc GCC_WCSS_Q6_BCR>;
819
820			reset-names = "wcss_aon_reset",
821				      "wcss_reset",
822				      "wcss_q6_reset";
823
824			clocks = <&gcc GCC_PRNG_AHB_CLK>;
825			clock-names = "prng";
826
827			qcom,halt-regs = <&tcsr 0x18000 0x1b000 0xe000>;
828
829			qcom,smem-states = <&wcss_smp2p_out 0>,
830					   <&wcss_smp2p_out 1>;
831			qcom,smem-state-names = "shutdown",
832						"stop";
833
834			memory-region = <&q6_region>;
835
836			glink-edge {
837				interrupts = <GIC_SPI 321 IRQ_TYPE_EDGE_RISING>;
838				label = "rtr";
839				qcom,remote-pid = <1>;
840				mboxes = <&apcs_glb 8>;
841
842				qrtr_requests {
843					qcom,glink-channels = "IPCRTR";
844				};
845			};
846		};
847
848		pcie0: pcie@20000000 {
849			compatible = "qcom,pcie-ipq6018";
850			reg = <0x0 0x20000000 0x0 0xf1d>,
851			      <0x0 0x20000f20 0x0 0xa8>,
852			      <0x0 0x20001000 0x0 0x1000>,
853			      <0x0 0x80000 0x0 0x4000>,
854			      <0x0 0x20100000 0x0 0x1000>;
855			reg-names = "dbi", "elbi", "atu", "parf", "config";
856
857			device_type = "pci";
858			linux,pci-domain = <0>;
859			bus-range = <0x00 0xff>;
860			num-lanes = <1>;
861			max-link-speed = <3>;
862			#address-cells = <3>;
863			#size-cells = <2>;
864
865			phys = <&pcie_phy>;
866			phy-names = "pciephy";
867
868			ranges = <0x81000000 0x0 0x00000000 0x0 0x20200000 0x0 0x10000>,
869				 <0x82000000 0x0 0x20220000 0x0 0x20220000 0x0 0xfde0000>;
870
871			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
872			interrupt-names = "msi";
873
874			#interrupt-cells = <1>;
875			interrupt-map-mask = <0 0 0 0x7>;
876			interrupt-map = <0 0 0 1 &intc 0 0 0 75 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
877					<0 0 0 2 &intc 0 0 0 78 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
878					<0 0 0 3 &intc 0 0 0 79 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
879					<0 0 0 4 &intc 0 0 0 83 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
880
881			clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
882				 <&gcc GCC_PCIE0_AXI_M_CLK>,
883				 <&gcc GCC_PCIE0_AXI_S_CLK>,
884				 <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
885				 <&gcc PCIE0_RCHNG_CLK>;
886			clock-names = "iface",
887				      "axi_m",
888				      "axi_s",
889				      "axi_bridge",
890				      "rchng";
891
892			resets = <&gcc GCC_PCIE0_PIPE_ARES>,
893				 <&gcc GCC_PCIE0_SLEEP_ARES>,
894				 <&gcc GCC_PCIE0_CORE_STICKY_ARES>,
895				 <&gcc GCC_PCIE0_AXI_MASTER_ARES>,
896				 <&gcc GCC_PCIE0_AXI_SLAVE_ARES>,
897				 <&gcc GCC_PCIE0_AHB_ARES>,
898				 <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>,
899				 <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>;
900			reset-names = "pipe",
901				      "sleep",
902				      "sticky",
903				      "axi_m",
904				      "axi_s",
905				      "ahb",
906				      "axi_m_sticky",
907				      "axi_s_sticky";
908
909			status = "disabled";
910		};
911	};
912
913	thermal-zones {
914		nss-top-thermal {
915			polling-delay-passive = <250>;
916			polling-delay = <1000>;
917			thermal-sensors = <&tsens 4>;
918
919			trips {
920				nss-top-critical {
921					temperature = <125000>;
922					hysteresis = <1000>;
923					type = "critical";
924				};
925			};
926		};
927
928		nss-thermal {
929			polling-delay-passive = <250>;
930			polling-delay = <1000>;
931			thermal-sensors = <&tsens 5>;
932
933			trips {
934				nss-critical {
935					temperature = <125000>;
936					hysteresis = <1000>;
937					type = "critical";
938				};
939			};
940		};
941
942		wcss-phya0-thermal {
943			polling-delay-passive = <250>;
944			polling-delay = <1000>;
945			thermal-sensors = <&tsens 7>;
946
947			trips {
948				wcss-phya0-critical {
949					temperature = <125000>;
950					hysteresis = <1000>;
951					type = "critical";
952				};
953			};
954		};
955
956		wcss-phya1-thermal {
957			polling-delay-passive = <250>;
958			polling-delay = <1000>;
959			thermal-sensors = <&tsens 8>;
960
961			trips {
962				wcss-phya1-critical {
963					temperature = <125000>;
964					hysteresis = <1000>;
965					type = "critical";
966				};
967			};
968		};
969
970		cpu-thermal {
971			polling-delay-passive = <250>;
972			polling-delay = <1000>;
973			thermal-sensors = <&tsens 13>;
974
975			trips {
976				cpu-critical {
977					temperature = <125000>;
978					hysteresis = <1000>;
979					type = "critical";
980				};
981
982				cpu_alert: cpu-passive {
983					temperature = <110000>;
984					hysteresis = <1000>;
985					type = "passive";
986				};
987			};
988
989			cooling-maps {
990				map0 {
991					trip = <&cpu_alert>;
992					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
993							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
994							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
995							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
996				};
997			};
998		};
999
1000		lpass-thermal {
1001			polling-delay-passive = <250>;
1002			polling-delay = <1000>;
1003			thermal-sensors = <&tsens 14>;
1004
1005			trips {
1006				lpass-critical {
1007					temperature = <125000>;
1008					hysteresis = <1000>;
1009					type = "critical";
1010				};
1011			};
1012		};
1013
1014		ddrss-top-thermal {
1015			polling-delay-passive = <250>;
1016			polling-delay = <1000>;
1017			thermal-sensors = <&tsens 15>;
1018
1019			trips {
1020				ddrss-top-critical {
1021					temperature = <125000>;
1022					hysteresis = <1000>;
1023					type = "critical";
1024				};
1025			};
1026		};
1027	};
1028
1029	timer {
1030		compatible = "arm,armv8-timer";
1031		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
1032			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
1033			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
1034			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
1035	};
1036
1037	wcss: wcss-smp2p {
1038		compatible = "qcom,smp2p";
1039		qcom,smem = <435>, <428>;
1040
1041		interrupt-parent = <&intc>;
1042		interrupts = <GIC_SPI 322 IRQ_TYPE_EDGE_RISING>;
1043
1044		mboxes = <&apcs_glb 9>;
1045
1046		qcom,local-pid = <0>;
1047		qcom,remote-pid = <1>;
1048
1049		wcss_smp2p_out: master-kernel {
1050			qcom,entry-name = "master-kernel";
1051			#qcom,smem-state-cells = <1>;
1052		};
1053
1054		wcss_smp2p_in: slave-kernel {
1055			qcom,entry-name = "slave-kernel";
1056			interrupt-controller;
1057			#interrupt-cells = <2>;
1058		};
1059	};
1060};
1061