xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/qcom-ipq4019.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2015, The Linux Foundation. All rights reserved.
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun/dts-v1/;
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#include <dt-bindings/clock/qcom,gcc-ipq4019.h>
9*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
10*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun/ {
13*4882a593Smuzhiyun	#address-cells = <1>;
14*4882a593Smuzhiyun	#size-cells = <1>;
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun	model = "Qualcomm Technologies, Inc. IPQ4019";
17*4882a593Smuzhiyun	compatible = "qcom,ipq4019";
18*4882a593Smuzhiyun	interrupt-parent = <&intc>;
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun	reserved-memory {
21*4882a593Smuzhiyun		#address-cells = <0x1>;
22*4882a593Smuzhiyun		#size-cells = <0x1>;
23*4882a593Smuzhiyun		ranges;
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun		smem_region: smem@87e00000 {
26*4882a593Smuzhiyun			reg = <0x87e00000 0x080000>;
27*4882a593Smuzhiyun			no-map;
28*4882a593Smuzhiyun		};
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun		tz@87e80000 {
31*4882a593Smuzhiyun			reg = <0x87e80000 0x180000>;
32*4882a593Smuzhiyun			no-map;
33*4882a593Smuzhiyun		};
34*4882a593Smuzhiyun	};
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun	aliases {
37*4882a593Smuzhiyun		spi0 = &blsp1_spi1;
38*4882a593Smuzhiyun		spi1 = &blsp1_spi2;
39*4882a593Smuzhiyun		i2c0 = &blsp1_i2c3;
40*4882a593Smuzhiyun		i2c1 = &blsp1_i2c4;
41*4882a593Smuzhiyun	};
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun	cpus {
44*4882a593Smuzhiyun		#address-cells = <1>;
45*4882a593Smuzhiyun		#size-cells = <0>;
46*4882a593Smuzhiyun		cpu@0 {
47*4882a593Smuzhiyun			device_type = "cpu";
48*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
49*4882a593Smuzhiyun			enable-method = "qcom,kpss-acc-v2";
50*4882a593Smuzhiyun			next-level-cache = <&L2>;
51*4882a593Smuzhiyun			qcom,acc = <&acc0>;
52*4882a593Smuzhiyun			qcom,saw = <&saw0>;
53*4882a593Smuzhiyun			reg = <0x0>;
54*4882a593Smuzhiyun			clocks = <&gcc GCC_APPS_CLK_SRC>;
55*4882a593Smuzhiyun			clock-frequency = <0>;
56*4882a593Smuzhiyun			clock-latency = <256000>;
57*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
58*4882a593Smuzhiyun		};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun		cpu@1 {
61*4882a593Smuzhiyun			device_type = "cpu";
62*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
63*4882a593Smuzhiyun			enable-method = "qcom,kpss-acc-v2";
64*4882a593Smuzhiyun			next-level-cache = <&L2>;
65*4882a593Smuzhiyun			qcom,acc = <&acc1>;
66*4882a593Smuzhiyun			qcom,saw = <&saw1>;
67*4882a593Smuzhiyun			reg = <0x1>;
68*4882a593Smuzhiyun			clocks = <&gcc GCC_APPS_CLK_SRC>;
69*4882a593Smuzhiyun			clock-frequency = <0>;
70*4882a593Smuzhiyun			clock-latency = <256000>;
71*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
72*4882a593Smuzhiyun		};
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun		cpu@2 {
75*4882a593Smuzhiyun			device_type = "cpu";
76*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
77*4882a593Smuzhiyun			enable-method = "qcom,kpss-acc-v2";
78*4882a593Smuzhiyun			next-level-cache = <&L2>;
79*4882a593Smuzhiyun			qcom,acc = <&acc2>;
80*4882a593Smuzhiyun			qcom,saw = <&saw2>;
81*4882a593Smuzhiyun			reg = <0x2>;
82*4882a593Smuzhiyun			clocks = <&gcc GCC_APPS_CLK_SRC>;
83*4882a593Smuzhiyun			clock-frequency = <0>;
84*4882a593Smuzhiyun			clock-latency = <256000>;
85*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
86*4882a593Smuzhiyun		};
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun		cpu@3 {
89*4882a593Smuzhiyun			device_type = "cpu";
90*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
91*4882a593Smuzhiyun			enable-method = "qcom,kpss-acc-v2";
92*4882a593Smuzhiyun			next-level-cache = <&L2>;
93*4882a593Smuzhiyun			qcom,acc = <&acc3>;
94*4882a593Smuzhiyun			qcom,saw = <&saw3>;
95*4882a593Smuzhiyun			reg = <0x3>;
96*4882a593Smuzhiyun			clocks = <&gcc GCC_APPS_CLK_SRC>;
97*4882a593Smuzhiyun			clock-frequency = <0>;
98*4882a593Smuzhiyun			clock-latency = <256000>;
99*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
100*4882a593Smuzhiyun		};
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun		L2: l2-cache {
103*4882a593Smuzhiyun			compatible = "cache";
104*4882a593Smuzhiyun			cache-level = <2>;
105*4882a593Smuzhiyun			qcom,saw = <&saw_l2>;
106*4882a593Smuzhiyun		};
107*4882a593Smuzhiyun	};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	cpu0_opp_table: opp_table0 {
110*4882a593Smuzhiyun		compatible = "operating-points-v2";
111*4882a593Smuzhiyun		opp-shared;
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun		opp-48000000 {
114*4882a593Smuzhiyun			opp-hz = /bits/ 64 <48000000>;
115*4882a593Smuzhiyun			clock-latency-ns = <256000>;
116*4882a593Smuzhiyun		};
117*4882a593Smuzhiyun		opp-200000000 {
118*4882a593Smuzhiyun			opp-hz = /bits/ 64 <200000000>;
119*4882a593Smuzhiyun			clock-latency-ns = <256000>;
120*4882a593Smuzhiyun		};
121*4882a593Smuzhiyun		opp-500000000 {
122*4882a593Smuzhiyun			opp-hz = /bits/ 64 <500000000>;
123*4882a593Smuzhiyun			clock-latency-ns = <256000>;
124*4882a593Smuzhiyun		};
125*4882a593Smuzhiyun		opp-716000000 {
126*4882a593Smuzhiyun			opp-hz = /bits/ 64 <716000000>;
127*4882a593Smuzhiyun			clock-latency-ns = <256000>;
128*4882a593Smuzhiyun 		};
129*4882a593Smuzhiyun	};
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun	memory {
132*4882a593Smuzhiyun		device_type = "memory";
133*4882a593Smuzhiyun		reg = <0x0 0x0>;
134*4882a593Smuzhiyun	};
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun	pmu {
137*4882a593Smuzhiyun		compatible = "arm,cortex-a7-pmu";
138*4882a593Smuzhiyun		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
139*4882a593Smuzhiyun					 IRQ_TYPE_LEVEL_HIGH)>;
140*4882a593Smuzhiyun	};
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun	clocks {
143*4882a593Smuzhiyun		sleep_clk: sleep_clk {
144*4882a593Smuzhiyun			compatible = "fixed-clock";
145*4882a593Smuzhiyun			clock-frequency = <32000>;
146*4882a593Smuzhiyun			clock-output-names = "gcc_sleep_clk_src";
147*4882a593Smuzhiyun			#clock-cells = <0>;
148*4882a593Smuzhiyun		};
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun		xo: xo {
151*4882a593Smuzhiyun			compatible = "fixed-clock";
152*4882a593Smuzhiyun			clock-frequency = <48000000>;
153*4882a593Smuzhiyun			#clock-cells = <0>;
154*4882a593Smuzhiyun		};
155*4882a593Smuzhiyun	};
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun	firmware {
158*4882a593Smuzhiyun		scm {
159*4882a593Smuzhiyun			compatible = "qcom,scm-ipq4019";
160*4882a593Smuzhiyun		};
161*4882a593Smuzhiyun	};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun	timer {
164*4882a593Smuzhiyun		compatible = "arm,armv7-timer";
165*4882a593Smuzhiyun		interrupts = <1 2 0xf08>,
166*4882a593Smuzhiyun			     <1 3 0xf08>,
167*4882a593Smuzhiyun			     <1 4 0xf08>,
168*4882a593Smuzhiyun			     <1 1 0xf08>;
169*4882a593Smuzhiyun		clock-frequency = <48000000>;
170*4882a593Smuzhiyun		always-on;
171*4882a593Smuzhiyun	};
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun	soc {
174*4882a593Smuzhiyun		#address-cells = <1>;
175*4882a593Smuzhiyun		#size-cells = <1>;
176*4882a593Smuzhiyun		ranges;
177*4882a593Smuzhiyun		compatible = "simple-bus";
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun		intc: interrupt-controller@b000000 {
180*4882a593Smuzhiyun			compatible = "qcom,msm-qgic2";
181*4882a593Smuzhiyun			interrupt-controller;
182*4882a593Smuzhiyun			#interrupt-cells = <3>;
183*4882a593Smuzhiyun			reg = <0x0b000000 0x1000>,
184*4882a593Smuzhiyun			<0x0b002000 0x1000>;
185*4882a593Smuzhiyun		};
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun		gcc: clock-controller@1800000 {
188*4882a593Smuzhiyun			compatible = "qcom,gcc-ipq4019";
189*4882a593Smuzhiyun			#clock-cells = <1>;
190*4882a593Smuzhiyun			#reset-cells = <1>;
191*4882a593Smuzhiyun			reg = <0x1800000 0x60000>;
192*4882a593Smuzhiyun		};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun		rng@22000 {
195*4882a593Smuzhiyun			compatible = "qcom,prng";
196*4882a593Smuzhiyun			reg = <0x22000 0x140>;
197*4882a593Smuzhiyun			clocks = <&gcc GCC_PRNG_AHB_CLK>;
198*4882a593Smuzhiyun			clock-names = "core";
199*4882a593Smuzhiyun			status = "disabled";
200*4882a593Smuzhiyun		};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun		tlmm: pinctrl@1000000 {
203*4882a593Smuzhiyun			compatible = "qcom,ipq4019-pinctrl";
204*4882a593Smuzhiyun			reg = <0x01000000 0x300000>;
205*4882a593Smuzhiyun			gpio-controller;
206*4882a593Smuzhiyun			gpio-ranges = <&tlmm 0 0 100>;
207*4882a593Smuzhiyun			#gpio-cells = <2>;
208*4882a593Smuzhiyun			interrupt-controller;
209*4882a593Smuzhiyun			#interrupt-cells = <2>;
210*4882a593Smuzhiyun			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
211*4882a593Smuzhiyun		};
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun		sdhci: sdhci@7824900 {
214*4882a593Smuzhiyun			compatible = "qcom,sdhci-msm-v4";
215*4882a593Smuzhiyun			reg = <0x7824900 0x11c>, <0x7824000 0x800>;
216*4882a593Smuzhiyun			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
217*4882a593Smuzhiyun			interrupt-names = "hc_irq", "pwr_irq";
218*4882a593Smuzhiyun			bus-width = <8>;
219*4882a593Smuzhiyun			clocks = <&gcc GCC_SDCC1_APPS_CLK>, <&gcc GCC_SDCC1_AHB_CLK>,
220*4882a593Smuzhiyun				 <&gcc GCC_DCD_XO_CLK>;
221*4882a593Smuzhiyun			clock-names = "core", "iface", "xo";
222*4882a593Smuzhiyun			status = "disabled";
223*4882a593Smuzhiyun		};
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun		blsp_dma: dma@7884000 {
226*4882a593Smuzhiyun			compatible = "qcom,bam-v1.7.0";
227*4882a593Smuzhiyun			reg = <0x07884000 0x23000>;
228*4882a593Smuzhiyun			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
229*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
230*4882a593Smuzhiyun			clock-names = "bam_clk";
231*4882a593Smuzhiyun			#dma-cells = <1>;
232*4882a593Smuzhiyun			qcom,ee = <0>;
233*4882a593Smuzhiyun			status = "disabled";
234*4882a593Smuzhiyun		};
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun		blsp1_spi1: spi@78b5000 { /* BLSP1 QUP1 */
237*4882a593Smuzhiyun			compatible = "qcom,spi-qup-v2.2.1";
238*4882a593Smuzhiyun			reg = <0x78b5000 0x600>;
239*4882a593Smuzhiyun			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
240*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
241*4882a593Smuzhiyun				 <&gcc GCC_BLSP1_AHB_CLK>;
242*4882a593Smuzhiyun			clock-names = "core", "iface";
243*4882a593Smuzhiyun			#address-cells = <1>;
244*4882a593Smuzhiyun			#size-cells = <0>;
245*4882a593Smuzhiyun			dmas = <&blsp_dma 5>, <&blsp_dma 4>;
246*4882a593Smuzhiyun			dma-names = "rx", "tx";
247*4882a593Smuzhiyun			status = "disabled";
248*4882a593Smuzhiyun		};
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun		blsp1_spi2: spi@78b6000 { /* BLSP1 QUP2 */
251*4882a593Smuzhiyun			compatible = "qcom,spi-qup-v2.2.1";
252*4882a593Smuzhiyun			reg = <0x78b6000 0x600>;
253*4882a593Smuzhiyun			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
254*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
255*4882a593Smuzhiyun				<&gcc GCC_BLSP1_AHB_CLK>;
256*4882a593Smuzhiyun			clock-names = "core", "iface";
257*4882a593Smuzhiyun			#address-cells = <1>;
258*4882a593Smuzhiyun			#size-cells = <0>;
259*4882a593Smuzhiyun			dmas = <&blsp_dma 7>, <&blsp_dma 6>;
260*4882a593Smuzhiyun			dma-names = "rx", "tx";
261*4882a593Smuzhiyun			status = "disabled";
262*4882a593Smuzhiyun		};
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun		blsp1_i2c3: i2c@78b7000 { /* BLSP1 QUP3 */
265*4882a593Smuzhiyun			compatible = "qcom,i2c-qup-v2.2.1";
266*4882a593Smuzhiyun			reg = <0x78b7000 0x600>;
267*4882a593Smuzhiyun			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
268*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
269*4882a593Smuzhiyun				 <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>;
270*4882a593Smuzhiyun			clock-names = "iface", "core";
271*4882a593Smuzhiyun			#address-cells = <1>;
272*4882a593Smuzhiyun			#size-cells = <0>;
273*4882a593Smuzhiyun			dmas = <&blsp_dma 9>, <&blsp_dma 8>;
274*4882a593Smuzhiyun			dma-names = "rx", "tx";
275*4882a593Smuzhiyun			status = "disabled";
276*4882a593Smuzhiyun		};
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun		blsp1_i2c4: i2c@78b8000 { /* BLSP1 QUP4 */
279*4882a593Smuzhiyun			compatible = "qcom,i2c-qup-v2.2.1";
280*4882a593Smuzhiyun			reg = <0x78b8000 0x600>;
281*4882a593Smuzhiyun			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
282*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
283*4882a593Smuzhiyun				 <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
284*4882a593Smuzhiyun			clock-names = "iface", "core";
285*4882a593Smuzhiyun			#address-cells = <1>;
286*4882a593Smuzhiyun			#size-cells = <0>;
287*4882a593Smuzhiyun			dmas = <&blsp_dma 11>, <&blsp_dma 10>;
288*4882a593Smuzhiyun			dma-names = "rx", "tx";
289*4882a593Smuzhiyun			status = "disabled";
290*4882a593Smuzhiyun		};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun		cryptobam: dma@8e04000 {
293*4882a593Smuzhiyun			compatible = "qcom,bam-v1.7.0";
294*4882a593Smuzhiyun			reg = <0x08e04000 0x20000>;
295*4882a593Smuzhiyun			interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
296*4882a593Smuzhiyun			clocks = <&gcc GCC_CRYPTO_AHB_CLK>;
297*4882a593Smuzhiyun			clock-names = "bam_clk";
298*4882a593Smuzhiyun			#dma-cells = <1>;
299*4882a593Smuzhiyun			qcom,ee = <1>;
300*4882a593Smuzhiyun			qcom,controlled-remotely;
301*4882a593Smuzhiyun			status = "disabled";
302*4882a593Smuzhiyun		};
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun		crypto@8e3a000 {
305*4882a593Smuzhiyun			compatible = "qcom,crypto-v5.1";
306*4882a593Smuzhiyun			reg = <0x08e3a000 0x6000>;
307*4882a593Smuzhiyun			clocks = <&gcc GCC_CRYPTO_AHB_CLK>,
308*4882a593Smuzhiyun				 <&gcc GCC_CRYPTO_AXI_CLK>,
309*4882a593Smuzhiyun				 <&gcc GCC_CRYPTO_CLK>;
310*4882a593Smuzhiyun			clock-names = "iface", "bus", "core";
311*4882a593Smuzhiyun			dmas = <&cryptobam 2>, <&cryptobam 3>;
312*4882a593Smuzhiyun			dma-names = "rx", "tx";
313*4882a593Smuzhiyun			status = "disabled";
314*4882a593Smuzhiyun		};
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun		acc0: clock-controller@b088000 {
317*4882a593Smuzhiyun			compatible = "qcom,kpss-acc-v2";
318*4882a593Smuzhiyun			reg = <0x0b088000 0x1000>, <0xb008000 0x1000>;
319*4882a593Smuzhiyun		};
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun		acc1: clock-controller@b098000 {
322*4882a593Smuzhiyun			compatible = "qcom,kpss-acc-v2";
323*4882a593Smuzhiyun			reg = <0x0b098000 0x1000>, <0xb008000 0x1000>;
324*4882a593Smuzhiyun		};
325*4882a593Smuzhiyun
326*4882a593Smuzhiyun		acc2: clock-controller@b0a8000 {
327*4882a593Smuzhiyun			compatible = "qcom,kpss-acc-v2";
328*4882a593Smuzhiyun			reg = <0x0b0a8000 0x1000>, <0xb008000 0x1000>;
329*4882a593Smuzhiyun		};
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun		acc3: clock-controller@b0b8000 {
332*4882a593Smuzhiyun			compatible = "qcom,kpss-acc-v2";
333*4882a593Smuzhiyun			reg = <0x0b0b8000 0x1000>, <0xb008000 0x1000>;
334*4882a593Smuzhiyun		};
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun		saw0: regulator@b089000 {
337*4882a593Smuzhiyun			compatible = "qcom,saw2";
338*4882a593Smuzhiyun			reg = <0x0b089000 0x1000>, <0x0b009000 0x1000>;
339*4882a593Smuzhiyun                        regulator;
340*4882a593Smuzhiyun		};
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun		saw1: regulator@b099000 {
343*4882a593Smuzhiyun			compatible = "qcom,saw2";
344*4882a593Smuzhiyun			reg = <0x0b099000 0x1000>, <0x0b009000 0x1000>;
345*4882a593Smuzhiyun			regulator;
346*4882a593Smuzhiyun		};
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun		saw2: regulator@b0a9000 {
349*4882a593Smuzhiyun			compatible = "qcom,saw2";
350*4882a593Smuzhiyun			reg = <0x0b0a9000 0x1000>, <0x0b009000 0x1000>;
351*4882a593Smuzhiyun			regulator;
352*4882a593Smuzhiyun		};
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun		saw3: regulator@b0b9000 {
355*4882a593Smuzhiyun			compatible = "qcom,saw2";
356*4882a593Smuzhiyun			reg = <0x0b0b9000 0x1000>, <0x0b009000 0x1000>;
357*4882a593Smuzhiyun			regulator;
358*4882a593Smuzhiyun		};
359*4882a593Smuzhiyun
360*4882a593Smuzhiyun		saw_l2: regulator@b012000 {
361*4882a593Smuzhiyun			compatible = "qcom,saw2";
362*4882a593Smuzhiyun			reg = <0xb012000 0x1000>;
363*4882a593Smuzhiyun			regulator;
364*4882a593Smuzhiyun		};
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun		blsp1_uart1: serial@78af000 {
367*4882a593Smuzhiyun			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
368*4882a593Smuzhiyun			reg = <0x78af000 0x200>;
369*4882a593Smuzhiyun			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
370*4882a593Smuzhiyun			status = "disabled";
371*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>,
372*4882a593Smuzhiyun				<&gcc GCC_BLSP1_AHB_CLK>;
373*4882a593Smuzhiyun			clock-names = "core", "iface";
374*4882a593Smuzhiyun			dmas = <&blsp_dma 1>, <&blsp_dma 0>;
375*4882a593Smuzhiyun			dma-names = "rx", "tx";
376*4882a593Smuzhiyun		};
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun		blsp1_uart2: serial@78b0000 {
379*4882a593Smuzhiyun			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
380*4882a593Smuzhiyun			reg = <0x78b0000 0x200>;
381*4882a593Smuzhiyun			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
382*4882a593Smuzhiyun			status = "disabled";
383*4882a593Smuzhiyun			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
384*4882a593Smuzhiyun				<&gcc GCC_BLSP1_AHB_CLK>;
385*4882a593Smuzhiyun			clock-names = "core", "iface";
386*4882a593Smuzhiyun			dmas = <&blsp_dma 3>, <&blsp_dma 2>;
387*4882a593Smuzhiyun			dma-names = "rx", "tx";
388*4882a593Smuzhiyun		};
389*4882a593Smuzhiyun
390*4882a593Smuzhiyun		watchdog@b017000 {
391*4882a593Smuzhiyun			compatible = "qcom,kpss-wdt", "qcom,kpss-wdt-ipq4019";
392*4882a593Smuzhiyun			reg = <0xb017000 0x40>;
393*4882a593Smuzhiyun			clocks = <&sleep_clk>;
394*4882a593Smuzhiyun			timeout-sec = <10>;
395*4882a593Smuzhiyun			status = "disabled";
396*4882a593Smuzhiyun		};
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun		restart@4ab000 {
399*4882a593Smuzhiyun			compatible = "qcom,pshold";
400*4882a593Smuzhiyun			reg = <0x4ab000 0x4>;
401*4882a593Smuzhiyun		};
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun		pcie0: pci@40000000 {
404*4882a593Smuzhiyun			compatible = "qcom,pcie-ipq4019", "snps,dw-pcie";
405*4882a593Smuzhiyun			reg =  <0x40000000 0xf1d
406*4882a593Smuzhiyun				0x40000f20 0xa8
407*4882a593Smuzhiyun				0x80000 0x2000
408*4882a593Smuzhiyun				0x40100000 0x1000>;
409*4882a593Smuzhiyun			reg-names = "dbi", "elbi", "parf", "config";
410*4882a593Smuzhiyun			device_type = "pci";
411*4882a593Smuzhiyun			linux,pci-domain = <0>;
412*4882a593Smuzhiyun			bus-range = <0x00 0xff>;
413*4882a593Smuzhiyun			num-lanes = <1>;
414*4882a593Smuzhiyun			#address-cells = <3>;
415*4882a593Smuzhiyun			#size-cells = <2>;
416*4882a593Smuzhiyun
417*4882a593Smuzhiyun			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
418*4882a593Smuzhiyun				 <0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
419*4882a593Smuzhiyun
420*4882a593Smuzhiyun			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
421*4882a593Smuzhiyun			interrupt-names = "msi";
422*4882a593Smuzhiyun			#interrupt-cells = <1>;
423*4882a593Smuzhiyun			interrupt-map-mask = <0 0 0 0x7>;
424*4882a593Smuzhiyun			interrupt-map = <0 0 0 1 &intc 0 142 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
425*4882a593Smuzhiyun					<0 0 0 2 &intc 0 143 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
426*4882a593Smuzhiyun					<0 0 0 3 &intc 0 144 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
427*4882a593Smuzhiyun					<0 0 0 4 &intc 0 145 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
428*4882a593Smuzhiyun			clocks = <&gcc GCC_PCIE_AHB_CLK>,
429*4882a593Smuzhiyun				 <&gcc GCC_PCIE_AXI_M_CLK>,
430*4882a593Smuzhiyun				 <&gcc GCC_PCIE_AXI_S_CLK>;
431*4882a593Smuzhiyun			clock-names = "aux",
432*4882a593Smuzhiyun				      "master_bus",
433*4882a593Smuzhiyun				      "slave_bus";
434*4882a593Smuzhiyun
435*4882a593Smuzhiyun			resets = <&gcc PCIE_AXI_M_ARES>,
436*4882a593Smuzhiyun				 <&gcc PCIE_AXI_S_ARES>,
437*4882a593Smuzhiyun				 <&gcc PCIE_PIPE_ARES>,
438*4882a593Smuzhiyun				 <&gcc PCIE_AXI_M_VMIDMT_ARES>,
439*4882a593Smuzhiyun				 <&gcc PCIE_AXI_S_XPU_ARES>,
440*4882a593Smuzhiyun				 <&gcc PCIE_PARF_XPU_ARES>,
441*4882a593Smuzhiyun				 <&gcc PCIE_PHY_ARES>,
442*4882a593Smuzhiyun				 <&gcc PCIE_AXI_M_STICKY_ARES>,
443*4882a593Smuzhiyun				 <&gcc PCIE_PIPE_STICKY_ARES>,
444*4882a593Smuzhiyun				 <&gcc PCIE_PWR_ARES>,
445*4882a593Smuzhiyun				 <&gcc PCIE_AHB_ARES>,
446*4882a593Smuzhiyun				 <&gcc PCIE_PHY_AHB_ARES>;
447*4882a593Smuzhiyun			reset-names = "axi_m",
448*4882a593Smuzhiyun				      "axi_s",
449*4882a593Smuzhiyun				      "pipe",
450*4882a593Smuzhiyun				      "axi_m_vmid",
451*4882a593Smuzhiyun				      "axi_s_xpu",
452*4882a593Smuzhiyun				      "parf",
453*4882a593Smuzhiyun				      "phy",
454*4882a593Smuzhiyun				      "axi_m_sticky",
455*4882a593Smuzhiyun				      "pipe_sticky",
456*4882a593Smuzhiyun				      "pwr",
457*4882a593Smuzhiyun				      "ahb",
458*4882a593Smuzhiyun				      "phy_ahb";
459*4882a593Smuzhiyun
460*4882a593Smuzhiyun			status = "disabled";
461*4882a593Smuzhiyun		};
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun		qpic_bam: dma@7984000 {
464*4882a593Smuzhiyun			compatible = "qcom,bam-v1.7.0";
465*4882a593Smuzhiyun			reg = <0x7984000 0x1a000>;
466*4882a593Smuzhiyun			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
467*4882a593Smuzhiyun			clocks = <&gcc GCC_QPIC_CLK>;
468*4882a593Smuzhiyun			clock-names = "bam_clk";
469*4882a593Smuzhiyun			#dma-cells = <1>;
470*4882a593Smuzhiyun			qcom,ee = <0>;
471*4882a593Smuzhiyun			status = "disabled";
472*4882a593Smuzhiyun		};
473*4882a593Smuzhiyun
474*4882a593Smuzhiyun		nand: qpic-nand@79b0000 {
475*4882a593Smuzhiyun			compatible = "qcom,ipq4019-nand";
476*4882a593Smuzhiyun			reg = <0x79b0000 0x1000>;
477*4882a593Smuzhiyun			#address-cells = <1>;
478*4882a593Smuzhiyun			#size-cells = <0>;
479*4882a593Smuzhiyun			clocks = <&gcc GCC_QPIC_CLK>,
480*4882a593Smuzhiyun				 <&gcc GCC_QPIC_AHB_CLK>;
481*4882a593Smuzhiyun			clock-names = "core", "aon";
482*4882a593Smuzhiyun
483*4882a593Smuzhiyun			dmas = <&qpic_bam 0>,
484*4882a593Smuzhiyun			       <&qpic_bam 1>,
485*4882a593Smuzhiyun			       <&qpic_bam 2>;
486*4882a593Smuzhiyun			dma-names = "tx", "rx", "cmd";
487*4882a593Smuzhiyun			status = "disabled";
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun			nand@0 {
490*4882a593Smuzhiyun				reg = <0>;
491*4882a593Smuzhiyun
492*4882a593Smuzhiyun				nand-ecc-strength = <4>;
493*4882a593Smuzhiyun				nand-ecc-step-size = <512>;
494*4882a593Smuzhiyun				nand-bus-width = <8>;
495*4882a593Smuzhiyun			};
496*4882a593Smuzhiyun		};
497*4882a593Smuzhiyun
498*4882a593Smuzhiyun		wifi0: wifi@a000000 {
499*4882a593Smuzhiyun			compatible = "qcom,ipq4019-wifi";
500*4882a593Smuzhiyun			reg = <0xa000000 0x200000>;
501*4882a593Smuzhiyun			resets = <&gcc WIFI0_CPU_INIT_RESET>,
502*4882a593Smuzhiyun				 <&gcc WIFI0_RADIO_SRIF_RESET>,
503*4882a593Smuzhiyun				 <&gcc WIFI0_RADIO_WARM_RESET>,
504*4882a593Smuzhiyun				 <&gcc WIFI0_RADIO_COLD_RESET>,
505*4882a593Smuzhiyun				 <&gcc WIFI0_CORE_WARM_RESET>,
506*4882a593Smuzhiyun				 <&gcc WIFI0_CORE_COLD_RESET>;
507*4882a593Smuzhiyun			reset-names = "wifi_cpu_init", "wifi_radio_srif",
508*4882a593Smuzhiyun				      "wifi_radio_warm", "wifi_radio_cold",
509*4882a593Smuzhiyun				      "wifi_core_warm", "wifi_core_cold";
510*4882a593Smuzhiyun			clocks = <&gcc GCC_WCSS2G_CLK>,
511*4882a593Smuzhiyun				 <&gcc GCC_WCSS2G_REF_CLK>,
512*4882a593Smuzhiyun				 <&gcc GCC_WCSS2G_RTC_CLK>;
513*4882a593Smuzhiyun			clock-names = "wifi_wcss_cmd", "wifi_wcss_ref",
514*4882a593Smuzhiyun				      "wifi_wcss_rtc";
515*4882a593Smuzhiyun			interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>,
516*4882a593Smuzhiyun				     <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>,
517*4882a593Smuzhiyun				     <GIC_SPI 34 IRQ_TYPE_EDGE_RISING>,
518*4882a593Smuzhiyun				     <GIC_SPI 35 IRQ_TYPE_EDGE_RISING>,
519*4882a593Smuzhiyun				     <GIC_SPI 36 IRQ_TYPE_EDGE_RISING>,
520*4882a593Smuzhiyun				     <GIC_SPI 37 IRQ_TYPE_EDGE_RISING>,
521*4882a593Smuzhiyun				     <GIC_SPI 38 IRQ_TYPE_EDGE_RISING>,
522*4882a593Smuzhiyun				     <GIC_SPI 39 IRQ_TYPE_EDGE_RISING>,
523*4882a593Smuzhiyun				     <GIC_SPI 40 IRQ_TYPE_EDGE_RISING>,
524*4882a593Smuzhiyun				     <GIC_SPI 41 IRQ_TYPE_EDGE_RISING>,
525*4882a593Smuzhiyun				     <GIC_SPI 42 IRQ_TYPE_EDGE_RISING>,
526*4882a593Smuzhiyun				     <GIC_SPI 43 IRQ_TYPE_EDGE_RISING>,
527*4882a593Smuzhiyun				     <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
528*4882a593Smuzhiyun				     <GIC_SPI 45 IRQ_TYPE_EDGE_RISING>,
529*4882a593Smuzhiyun				     <GIC_SPI 46 IRQ_TYPE_EDGE_RISING>,
530*4882a593Smuzhiyun				     <GIC_SPI 47 IRQ_TYPE_EDGE_RISING>,
531*4882a593Smuzhiyun				     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
532*4882a593Smuzhiyun			interrupt-names =  "msi0",  "msi1",  "msi2",  "msi3",
533*4882a593Smuzhiyun					   "msi4",  "msi5",  "msi6",  "msi7",
534*4882a593Smuzhiyun					   "msi8",  "msi9", "msi10", "msi11",
535*4882a593Smuzhiyun					  "msi12", "msi13", "msi14", "msi15",
536*4882a593Smuzhiyun					  "legacy";
537*4882a593Smuzhiyun			status = "disabled";
538*4882a593Smuzhiyun		};
539*4882a593Smuzhiyun
540*4882a593Smuzhiyun		wifi1: wifi@a800000 {
541*4882a593Smuzhiyun			compatible = "qcom,ipq4019-wifi";
542*4882a593Smuzhiyun			reg = <0xa800000 0x200000>;
543*4882a593Smuzhiyun			resets = <&gcc WIFI1_CPU_INIT_RESET>,
544*4882a593Smuzhiyun				 <&gcc WIFI1_RADIO_SRIF_RESET>,
545*4882a593Smuzhiyun				 <&gcc WIFI1_RADIO_WARM_RESET>,
546*4882a593Smuzhiyun				 <&gcc WIFI1_RADIO_COLD_RESET>,
547*4882a593Smuzhiyun				 <&gcc WIFI1_CORE_WARM_RESET>,
548*4882a593Smuzhiyun				 <&gcc WIFI1_CORE_COLD_RESET>;
549*4882a593Smuzhiyun			reset-names = "wifi_cpu_init", "wifi_radio_srif",
550*4882a593Smuzhiyun				      "wifi_radio_warm", "wifi_radio_cold",
551*4882a593Smuzhiyun				      "wifi_core_warm", "wifi_core_cold";
552*4882a593Smuzhiyun			clocks = <&gcc GCC_WCSS5G_CLK>,
553*4882a593Smuzhiyun				 <&gcc GCC_WCSS5G_REF_CLK>,
554*4882a593Smuzhiyun				 <&gcc GCC_WCSS5G_RTC_CLK>;
555*4882a593Smuzhiyun			clock-names = "wifi_wcss_cmd", "wifi_wcss_ref",
556*4882a593Smuzhiyun				      "wifi_wcss_rtc";
557*4882a593Smuzhiyun			interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>,
558*4882a593Smuzhiyun				     <GIC_SPI 49 IRQ_TYPE_EDGE_RISING>,
559*4882a593Smuzhiyun				     <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>,
560*4882a593Smuzhiyun				     <GIC_SPI 51 IRQ_TYPE_EDGE_RISING>,
561*4882a593Smuzhiyun				     <GIC_SPI 52 IRQ_TYPE_EDGE_RISING>,
562*4882a593Smuzhiyun				     <GIC_SPI 53 IRQ_TYPE_EDGE_RISING>,
563*4882a593Smuzhiyun				     <GIC_SPI 54 IRQ_TYPE_EDGE_RISING>,
564*4882a593Smuzhiyun				     <GIC_SPI 55 IRQ_TYPE_EDGE_RISING>,
565*4882a593Smuzhiyun				     <GIC_SPI 56 IRQ_TYPE_EDGE_RISING>,
566*4882a593Smuzhiyun				     <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>,
567*4882a593Smuzhiyun				     <GIC_SPI 58 IRQ_TYPE_EDGE_RISING>,
568*4882a593Smuzhiyun				     <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>,
569*4882a593Smuzhiyun				     <GIC_SPI 60 IRQ_TYPE_EDGE_RISING>,
570*4882a593Smuzhiyun				     <GIC_SPI 61 IRQ_TYPE_EDGE_RISING>,
571*4882a593Smuzhiyun				     <GIC_SPI 62 IRQ_TYPE_EDGE_RISING>,
572*4882a593Smuzhiyun				     <GIC_SPI 63 IRQ_TYPE_EDGE_RISING>,
573*4882a593Smuzhiyun				     <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
574*4882a593Smuzhiyun			interrupt-names =  "msi0",  "msi1",  "msi2",  "msi3",
575*4882a593Smuzhiyun					   "msi4",  "msi5",  "msi6",  "msi7",
576*4882a593Smuzhiyun					   "msi8",  "msi9", "msi10", "msi11",
577*4882a593Smuzhiyun					  "msi12", "msi13", "msi14", "msi15",
578*4882a593Smuzhiyun					  "legacy";
579*4882a593Smuzhiyun			status = "disabled";
580*4882a593Smuzhiyun		};
581*4882a593Smuzhiyun
582*4882a593Smuzhiyun		mdio: mdio@90000 {
583*4882a593Smuzhiyun			#address-cells = <1>;
584*4882a593Smuzhiyun			#size-cells = <0>;
585*4882a593Smuzhiyun			compatible = "qcom,ipq4019-mdio";
586*4882a593Smuzhiyun			reg = <0x90000 0x64>;
587*4882a593Smuzhiyun			status = "disabled";
588*4882a593Smuzhiyun
589*4882a593Smuzhiyun			ethphy0: ethernet-phy@0 {
590*4882a593Smuzhiyun				reg = <0>;
591*4882a593Smuzhiyun			};
592*4882a593Smuzhiyun
593*4882a593Smuzhiyun			ethphy1: ethernet-phy@1 {
594*4882a593Smuzhiyun				reg = <1>;
595*4882a593Smuzhiyun			};
596*4882a593Smuzhiyun
597*4882a593Smuzhiyun			ethphy2: ethernet-phy@2 {
598*4882a593Smuzhiyun				reg = <2>;
599*4882a593Smuzhiyun			};
600*4882a593Smuzhiyun
601*4882a593Smuzhiyun			ethphy3: ethernet-phy@3 {
602*4882a593Smuzhiyun				reg = <3>;
603*4882a593Smuzhiyun			};
604*4882a593Smuzhiyun
605*4882a593Smuzhiyun			ethphy4: ethernet-phy@4 {
606*4882a593Smuzhiyun				reg = <4>;
607*4882a593Smuzhiyun			};
608*4882a593Smuzhiyun		};
609*4882a593Smuzhiyun	};
610*4882a593Smuzhiyun};
611