xref: /linux/arch/arm64/boot/dts/qcom/msm8916.dtsi (revision f5ef419630e85e80284cd0256cb5a13a66bbd6c5)
1/*
2 * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * GNU General Public License for more details.
12 */
13
14#include <dt-bindings/interrupt-controller/arm-gic.h>
15#include <dt-bindings/clock/qcom,gcc-msm8916.h>
16#include <dt-bindings/reset/qcom,gcc-msm8916.h>
17#include <dt-bindings/clock/qcom,rpmcc.h>
18
19/ {
20	model = "Qualcomm Technologies, Inc. MSM8916";
21	compatible = "qcom,msm8916";
22
23	interrupt-parent = <&intc>;
24
25	#address-cells = <2>;
26	#size-cells = <2>;
27
28	aliases {
29		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
30		sdhc2 = &sdhc_2; /* SDC2 SD card slot */
31	};
32
33	chosen { };
34
35	memory {
36		device_type = "memory";
37		/* We expect the bootloader to fill in the reg */
38		reg = <0 0 0 0>;
39	};
40
41	reserved-memory {
42		#address-cells = <2>;
43		#size-cells = <2>;
44		ranges;
45
46		tz-apps@86000000 {
47			reg = <0x0 0x86000000 0x0 0x300000>;
48			no-map;
49		};
50
51		smem_mem: smem_region@86300000 {
52			reg = <0x0 0x86300000 0x0 0x100000>;
53			no-map;
54		};
55
56		hypervisor@86400000 {
57			reg = <0x0 0x86400000 0x0 0x100000>;
58			no-map;
59		};
60
61		tz@86500000 {
62			reg = <0x0 0x86500000 0x0 0x180000>;
63			no-map;
64		};
65
66		reserved@8668000 {
67			reg = <0x0 0x86680000 0x0 0x80000>;
68			no-map;
69		};
70
71		rmtfs@86700000 {
72			reg = <0x0 0x86700000 0x0 0xe0000>;
73			no-map;
74		};
75
76		rfsa@867e00000 {
77			reg = <0x0 0x867e0000 0x0 0x20000>;
78			no-map;
79		};
80
81		mpss_mem: mpss@86800000 {
82			reg = <0x0 0x86800000 0x0 0x2b00000>;
83			no-map;
84		};
85
86		wcnss_mem: wcnss@89300000 {
87			reg = <0x0 0x89300000 0x0 0x600000>;
88			no-map;
89		};
90
91		mba_mem: mba@8ea00000 {
92			no-map;
93			reg = <0 0x8ea00000 0 0x100000>;
94		};
95	};
96
97	cpus {
98		#address-cells = <1>;
99		#size-cells = <0>;
100
101		CPU0: cpu@0 {
102			device_type = "cpu";
103			compatible = "arm,cortex-a53", "arm,armv8";
104			reg = <0x0>;
105			next-level-cache = <&L2_0>;
106			enable-method = "psci";
107			cpu-idle-states = <&CPU_SPC>;
108		};
109
110		CPU1: cpu@1 {
111			device_type = "cpu";
112			compatible = "arm,cortex-a53", "arm,armv8";
113			reg = <0x1>;
114			next-level-cache = <&L2_0>;
115			enable-method = "psci";
116			cpu-idle-states = <&CPU_SPC>;
117		};
118
119		CPU2: cpu@2 {
120			device_type = "cpu";
121			compatible = "arm,cortex-a53", "arm,armv8";
122			reg = <0x2>;
123			next-level-cache = <&L2_0>;
124			enable-method = "psci";
125			cpu-idle-states = <&CPU_SPC>;
126		};
127
128		CPU3: cpu@3 {
129			device_type = "cpu";
130			compatible = "arm,cortex-a53", "arm,armv8";
131			reg = <0x3>;
132			next-level-cache = <&L2_0>;
133			enable-method = "psci";
134			cpu-idle-states = <&CPU_SPC>;
135		};
136
137		L2_0: l2-cache {
138		      compatible = "cache";
139		      cache-level = <2>;
140		};
141
142		idle-states {
143			CPU_SPC: spc {
144				compatible = "arm,idle-state";
145				arm,psci-suspend-param = <0x40000002>;
146				entry-latency-us = <130>;
147				exit-latency-us = <150>;
148				min-residency-us = <2000>;
149				local-timer-stop;
150			};
151		};
152	};
153
154	psci {
155		compatible = "arm,psci-1.0";
156		method = "smc";
157	};
158
159	pmu {
160		compatible = "arm,cortex-a53-pmu";
161		interrupts = <GIC_PPI 7 GIC_CPU_MASK_SIMPLE(4)>;
162	};
163
164	thermal-zones {
165		cpu-thermal0 {
166			polling-delay-passive = <250>;
167			polling-delay = <1000>;
168
169			thermal-sensors = <&tsens 4>;
170
171			trips {
172				cpu_alert0: trip0 {
173					temperature = <75000>;
174					hysteresis = <2000>;
175					type = "passive";
176				};
177				cpu_crit0: trip1 {
178					temperature = <110000>;
179					hysteresis = <2000>;
180					type = "critical";
181				};
182			};
183		};
184
185		cpu-thermal1 {
186			polling-delay-passive = <250>;
187			polling-delay = <1000>;
188
189			thermal-sensors = <&tsens 3>;
190
191			trips {
192				cpu_alert1: trip0 {
193					temperature = <75000>;
194					hysteresis = <2000>;
195					type = "passive";
196				};
197				cpu_crit1: trip1 {
198					temperature = <110000>;
199					hysteresis = <2000>;
200					type = "critical";
201				};
202			};
203		};
204
205	};
206
207	timer {
208		compatible = "arm,armv8-timer";
209		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
210			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
211			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
212			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
213	};
214
215	clocks {
216		xo_board: xo_board {
217			compatible = "fixed-clock";
218			#clock-cells = <0>;
219			clock-frequency = <19200000>;
220		};
221
222		sleep_clk: sleep_clk {
223			compatible = "fixed-clock";
224			#clock-cells = <0>;
225			clock-frequency = <32768>;
226		};
227	};
228
229	smem {
230		compatible = "qcom,smem";
231
232		memory-region = <&smem_mem>;
233		qcom,rpm-msg-ram = <&rpm_msg_ram>;
234
235		hwlocks = <&tcsr_mutex 3>;
236	};
237
238	firmware {
239		scm: scm {
240			compatible = "qcom,scm";
241			clocks = <&gcc GCC_CRYPTO_CLK>, <&gcc GCC_CRYPTO_AXI_CLK>, <&gcc GCC_CRYPTO_AHB_CLK>;
242			clock-names = "core", "bus", "iface";
243			#reset-cells = <1>;
244		};
245	};
246
247	soc: soc {
248		#address-cells = <1>;
249		#size-cells = <1>;
250		ranges = <0 0 0 0xffffffff>;
251		compatible = "simple-bus";
252
253		restart@4ab000 {
254			compatible = "qcom,pshold";
255			reg = <0x4ab000 0x4>;
256		};
257
258		msmgpio: pinctrl@1000000 {
259			compatible = "qcom,msm8916-pinctrl";
260			reg = <0x1000000 0x300000>;
261			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
262			gpio-controller;
263			#gpio-cells = <2>;
264			interrupt-controller;
265			#interrupt-cells = <2>;
266		};
267
268		gcc: clock-controller@1800000 {
269			compatible = "qcom,gcc-msm8916";
270			#clock-cells = <1>;
271			#reset-cells = <1>;
272			#power-domain-cells = <1>;
273			reg = <0x1800000 0x80000>;
274		};
275
276		tcsr_mutex_regs: syscon@1905000 {
277			compatible = "syscon";
278			reg = <0x1905000 0x20000>;
279		};
280
281		tcsr: syscon@1937000 {
282			compatible = "qcom,tcsr-msm8916", "syscon";
283			reg = <0x1937000 0x30000>;
284		};
285
286		tcsr_mutex: hwlock {
287			compatible = "qcom,tcsr-mutex";
288			syscon = <&tcsr_mutex_regs 0 0x1000>;
289			#hwlock-cells = <1>;
290		};
291
292		rpm_msg_ram: memory@60000 {
293			compatible = "qcom,rpm-msg-ram";
294			reg = <0x60000 0x8000>;
295		};
296
297		blsp1_uart1: serial@78af000 {
298			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
299			reg = <0x78af000 0x200>;
300			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
301			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
302			clock-names = "core", "iface";
303			dmas = <&blsp_dma 1>, <&blsp_dma 0>;
304			dma-names = "rx", "tx";
305			status = "disabled";
306		};
307
308		apcs: syscon@b011000 {
309			compatible = "syscon";
310			reg = <0x0b011000 0x1000>;
311		};
312
313		blsp1_uart2: serial@78b0000 {
314			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
315			reg = <0x78b0000 0x200>;
316			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
317			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
318			clock-names = "core", "iface";
319			dmas = <&blsp_dma 3>, <&blsp_dma 2>;
320			dma-names = "rx", "tx";
321			status = "disabled";
322		};
323
324		blsp_dma: dma@7884000 {
325			compatible = "qcom,bam-v1.7.0";
326			reg = <0x07884000 0x23000>;
327			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
328			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
329			clock-names = "bam_clk";
330			#dma-cells = <1>;
331			qcom,ee = <0>;
332			status = "disabled";
333		};
334
335		blsp_spi1: spi@78b5000 {
336			compatible = "qcom,spi-qup-v2.2.1";
337			reg = <0x078b5000 0x600>;
338			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
339			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
340				 <&gcc GCC_BLSP1_AHB_CLK>;
341			clock-names = "core", "iface";
342			dmas = <&blsp_dma 5>, <&blsp_dma 4>;
343			dma-names = "rx", "tx";
344			pinctrl-names = "default", "sleep";
345			pinctrl-0 = <&spi1_default>;
346			pinctrl-1 = <&spi1_sleep>;
347			#address-cells = <1>;
348			#size-cells = <0>;
349			status = "disabled";
350		};
351
352		blsp_spi2: spi@78b6000 {
353			compatible = "qcom,spi-qup-v2.2.1";
354			reg = <0x078b6000 0x600>;
355			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
356			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
357				 <&gcc GCC_BLSP1_AHB_CLK>;
358			clock-names = "core", "iface";
359			dmas = <&blsp_dma 7>, <&blsp_dma 6>;
360			dma-names = "rx", "tx";
361			pinctrl-names = "default", "sleep";
362			pinctrl-0 = <&spi2_default>;
363			pinctrl-1 = <&spi2_sleep>;
364			#address-cells = <1>;
365			#size-cells = <0>;
366			status = "disabled";
367		};
368
369		blsp_spi3: spi@78b7000 {
370			compatible = "qcom,spi-qup-v2.2.1";
371			reg = <0x078b7000 0x600>;
372			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
373			clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
374				 <&gcc GCC_BLSP1_AHB_CLK>;
375			clock-names = "core", "iface";
376			dmas = <&blsp_dma 9>, <&blsp_dma 8>;
377			dma-names = "rx", "tx";
378			pinctrl-names = "default", "sleep";
379			pinctrl-0 = <&spi3_default>;
380			pinctrl-1 = <&spi3_sleep>;
381			#address-cells = <1>;
382			#size-cells = <0>;
383			status = "disabled";
384		};
385
386		blsp_spi4: spi@78b8000 {
387			compatible = "qcom,spi-qup-v2.2.1";
388			reg = <0x078b8000 0x600>;
389			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
390			clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
391				 <&gcc GCC_BLSP1_AHB_CLK>;
392			clock-names = "core", "iface";
393			dmas = <&blsp_dma 11>, <&blsp_dma 10>;
394			dma-names = "rx", "tx";
395			pinctrl-names = "default", "sleep";
396			pinctrl-0 = <&spi4_default>;
397			pinctrl-1 = <&spi4_sleep>;
398			#address-cells = <1>;
399			#size-cells = <0>;
400			status = "disabled";
401		};
402
403		blsp_spi5: spi@78b9000 {
404			compatible = "qcom,spi-qup-v2.2.1";
405			reg = <0x078b9000 0x600>;
406			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
407			clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
408				 <&gcc GCC_BLSP1_AHB_CLK>;
409			clock-names = "core", "iface";
410			dmas = <&blsp_dma 13>, <&blsp_dma 12>;
411			dma-names = "rx", "tx";
412			pinctrl-names = "default", "sleep";
413			pinctrl-0 = <&spi5_default>;
414			pinctrl-1 = <&spi5_sleep>;
415			#address-cells = <1>;
416			#size-cells = <0>;
417			status = "disabled";
418		};
419
420		blsp_spi6: spi@78ba000 {
421			compatible = "qcom,spi-qup-v2.2.1";
422			reg = <0x078ba000 0x600>;
423			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
424			clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
425				 <&gcc GCC_BLSP1_AHB_CLK>;
426			clock-names = "core", "iface";
427			dmas = <&blsp_dma 15>, <&blsp_dma 14>;
428			dma-names = "rx", "tx";
429			pinctrl-names = "default", "sleep";
430			pinctrl-0 = <&spi6_default>;
431			pinctrl-1 = <&spi6_sleep>;
432			#address-cells = <1>;
433			#size-cells = <0>;
434			status = "disabled";
435		};
436
437		blsp_i2c2: i2c@78b6000 {
438			compatible = "qcom,i2c-qup-v2.2.1";
439			reg = <0x78b6000 0x1000>;
440			interrupts = <GIC_SPI 96 0>;
441			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
442				<&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
443			clock-names = "iface", "core";
444			pinctrl-names = "default", "sleep";
445			pinctrl-0 = <&i2c2_default>;
446			pinctrl-1 = <&i2c2_sleep>;
447			#address-cells = <1>;
448			#size-cells = <0>;
449			status = "disabled";
450		};
451
452		blsp_i2c4: i2c@78b8000 {
453			compatible = "qcom,i2c-qup-v2.2.1";
454			reg = <0x78b8000 0x1000>;
455			interrupts = <GIC_SPI 98 0>;
456			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
457				<&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
458			clock-names = "iface", "core";
459			pinctrl-names = "default", "sleep";
460			pinctrl-0 = <&i2c4_default>;
461			pinctrl-1 = <&i2c4_sleep>;
462			#address-cells = <1>;
463			#size-cells = <0>;
464			status = "disabled";
465		};
466
467		blsp_i2c6: i2c@78ba000 {
468			compatible = "qcom,i2c-qup-v2.2.1";
469			reg = <0x78ba000 0x1000>;
470			interrupts = <GIC_SPI 100 0>;
471			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
472				<&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
473			clock-names = "iface", "core";
474			pinctrl-names = "default", "sleep";
475			pinctrl-0 = <&i2c6_default>;
476			pinctrl-1 = <&i2c6_sleep>;
477			#address-cells = <1>;
478			#size-cells = <0>;
479			status = "disabled";
480		};
481
482		lpass: lpass@07708000 {
483			status = "disabled";
484			compatible = "qcom,lpass-cpu-apq8016";
485			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
486				 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
487				 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
488				 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
489				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
490				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
491				 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
492
493			clock-names = "ahbix-clk",
494					"pcnoc-mport-clk",
495					"pcnoc-sway-clk",
496					"mi2s-bit-clk0",
497					"mi2s-bit-clk1",
498					"mi2s-bit-clk2",
499					"mi2s-bit-clk3";
500			#sound-dai-cells = <1>;
501
502			interrupts = <0 160 0>;
503			interrupt-names = "lpass-irq-lpaif";
504			reg = <0x07708000 0x10000>;
505			reg-names = "lpass-lpaif";
506		};
507
508                lpass_codec: codec{
509			compatible = "qcom,msm8916-wcd-digital-codec";
510			reg = <0x0771c000 0x400>;
511			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
512				 <&gcc GCC_CODEC_DIGCODEC_CLK>;
513			clock-names = "ahbix-clk", "mclk";
514			#sound-dai-cells = <1>;
515                };
516
517		sdhc_1: sdhci@07824000 {
518			compatible = "qcom,sdhci-msm-v4";
519			reg = <0x07824900 0x11c>, <0x07824000 0x800>;
520			reg-names = "hc_mem", "core_mem";
521
522			interrupts = <0 123 0>, <0 138 0>;
523			interrupt-names = "hc_irq", "pwr_irq";
524			clocks = <&gcc GCC_SDCC1_APPS_CLK>,
525				 <&gcc GCC_SDCC1_AHB_CLK>,
526				 <&xo_board>;
527			clock-names = "core", "iface", "xo";
528			mmc-ddr-1_8v;
529			bus-width = <8>;
530			non-removable;
531			status = "disabled";
532		};
533
534		sdhc_2: sdhci@07864000 {
535			compatible = "qcom,sdhci-msm-v4";
536			reg = <0x07864900 0x11c>, <0x07864000 0x800>;
537			reg-names = "hc_mem", "core_mem";
538
539			interrupts = <0 125 0>, <0 221 0>;
540			interrupt-names = "hc_irq", "pwr_irq";
541			clocks = <&gcc GCC_SDCC2_APPS_CLK>,
542				 <&gcc GCC_SDCC2_AHB_CLK>,
543				 <&xo_board>;
544			clock-names = "core", "iface", "xo";
545			bus-width = <4>;
546			status = "disabled";
547		};
548
549		usb_dev: usb@78d9000 {
550			compatible = "qcom,ci-hdrc";
551			reg = <0x78d9000 0x400>;
552			dr_mode = "peripheral";
553			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
554			usb-phy = <&usb_otg>;
555			status = "disabled";
556		};
557
558		usb_host: ehci@78d9000 {
559			compatible = "qcom,ehci-host";
560			reg = <0x78d9000 0x400>;
561			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
562			usb-phy = <&usb_otg>;
563			status = "disabled";
564		};
565
566		usb_otg: phy@78d9000 {
567			compatible = "qcom,usb-otg-snps";
568			reg = <0x78d9000 0x400>;
569			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
570				     <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
571
572			qcom,vdd-levels = <500000 1000000 1320000>;
573			qcom,phy-init-sequence = <0x44 0x6B 0x24 0x13>;
574			dr_mode = "peripheral";
575			qcom,otg-control = <2>; // PMIC
576			qcom,manual-pullup;
577
578			clocks = <&gcc GCC_USB_HS_AHB_CLK>,
579				 <&gcc GCC_USB_HS_SYSTEM_CLK>,
580				 <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
581			clock-names = "iface", "core", "sleep";
582
583			resets = <&gcc GCC_USB2A_PHY_BCR>,
584				 <&gcc GCC_USB_HS_BCR>;
585			reset-names = "phy", "link";
586			status = "disabled";
587		};
588
589		intc: interrupt-controller@b000000 {
590			compatible = "qcom,msm-qgic2";
591			interrupt-controller;
592			#interrupt-cells = <3>;
593			reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
594		};
595
596		timer@b020000 {
597			#address-cells = <1>;
598			#size-cells = <1>;
599			ranges;
600			compatible = "arm,armv7-timer-mem";
601			reg = <0xb020000 0x1000>;
602			clock-frequency = <19200000>;
603
604			frame@b021000 {
605				frame-number = <0>;
606				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
607					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
608				reg = <0xb021000 0x1000>,
609				      <0xb022000 0x1000>;
610			};
611
612			frame@b023000 {
613				frame-number = <1>;
614				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
615				reg = <0xb023000 0x1000>;
616				status = "disabled";
617			};
618
619			frame@b024000 {
620				frame-number = <2>;
621				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
622				reg = <0xb024000 0x1000>;
623				status = "disabled";
624			};
625
626			frame@b025000 {
627				frame-number = <3>;
628				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
629				reg = <0xb025000 0x1000>;
630				status = "disabled";
631			};
632
633			frame@b026000 {
634				frame-number = <4>;
635				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
636				reg = <0xb026000 0x1000>;
637				status = "disabled";
638			};
639
640			frame@b027000 {
641				frame-number = <5>;
642				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
643				reg = <0xb027000 0x1000>;
644				status = "disabled";
645			};
646
647			frame@b028000 {
648				frame-number = <6>;
649				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
650				reg = <0xb028000 0x1000>;
651				status = "disabled";
652			};
653		};
654
655		spmi_bus: spmi@200f000 {
656			compatible = "qcom,spmi-pmic-arb";
657			reg = <0x200f000 0x001000>,
658			      <0x2400000 0x400000>,
659			      <0x2c00000 0x400000>,
660			      <0x3800000 0x200000>,
661			      <0x200a000 0x002100>;
662			reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
663			interrupt-names = "periph_irq";
664			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
665			qcom,ee = <0>;
666			qcom,channel = <0>;
667			#address-cells = <2>;
668			#size-cells = <0>;
669			interrupt-controller;
670			#interrupt-cells = <4>;
671		};
672
673		rng@22000 {
674			compatible = "qcom,prng";
675			reg = <0x00022000 0x200>;
676			clocks = <&gcc GCC_PRNG_AHB_CLK>;
677			clock-names = "core";
678		};
679
680		qfprom: qfprom@5c000 {
681			compatible = "qcom,qfprom";
682			reg = <0x5c000 0x1000>;
683			#address-cells = <1>;
684			#size-cells = <1>;
685			tsens_caldata: caldata@d0 {
686				reg = <0xd0 0x8>;
687			};
688			tsens_calsel: calsel@ec {
689				reg = <0xec 0x4>;
690			};
691		};
692
693		tsens: thermal-sensor@4a8000 {
694			compatible = "qcom,msm8916-tsens";
695			reg = <0x4a8000 0x2000>;
696			nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
697			nvmem-cell-names = "calib", "calib_sel";
698			#thermal-sensor-cells = <1>;
699		};
700
701		mdss: mdss@1a00000 {
702			compatible = "qcom,mdss";
703			reg = <0x1a00000 0x1000>,
704			      <0x1ac8000 0x3000>;
705			reg-names = "mdss_phys", "vbif_phys";
706
707			power-domains = <&gcc MDSS_GDSC>;
708
709			clocks = <&gcc GCC_MDSS_AHB_CLK>,
710				 <&gcc GCC_MDSS_AXI_CLK>,
711				 <&gcc GCC_MDSS_VSYNC_CLK>;
712			clock-names = "iface_clk",
713				      "bus_clk",
714				      "vsync_clk";
715
716			interrupts = <0 72 0>;
717
718			interrupt-controller;
719			#interrupt-cells = <1>;
720
721			#address-cells = <1>;
722			#size-cells = <1>;
723			ranges;
724
725			mdp: mdp@1a01000 {
726				compatible = "qcom,mdp5";
727				reg = <0x1a01000 0x90000>;
728				reg-names = "mdp_phys";
729
730				interrupt-parent = <&mdss>;
731				interrupts = <0 0>;
732
733				clocks = <&gcc GCC_MDSS_AHB_CLK>,
734					 <&gcc GCC_MDSS_AXI_CLK>,
735					 <&gcc GCC_MDSS_MDP_CLK>,
736					 <&gcc GCC_MDSS_VSYNC_CLK>;
737				clock-names = "iface_clk",
738					      "bus_clk",
739					      "core_clk",
740					      "vsync_clk";
741
742				ports {
743					#address-cells = <1>;
744					#size-cells = <0>;
745
746					port@0 {
747						reg = <0>;
748						mdp5_intf1_out: endpoint {
749							remote-endpoint = <&dsi0_in>;
750						};
751					};
752				};
753			};
754
755			dsi0: dsi@1a98000 {
756				compatible = "qcom,mdss-dsi-ctrl";
757				reg = <0x1a98000 0x25c>;
758				reg-names = "dsi_ctrl";
759
760				interrupt-parent = <&mdss>;
761				interrupts = <4 0>;
762
763				assigned-clocks = <&gcc BYTE0_CLK_SRC>,
764						  <&gcc PCLK0_CLK_SRC>;
765				assigned-clock-parents = <&dsi_phy0 0>,
766							 <&dsi_phy0 1>;
767
768				clocks = <&gcc GCC_MDSS_MDP_CLK>,
769					 <&gcc GCC_MDSS_AHB_CLK>,
770					 <&gcc GCC_MDSS_AXI_CLK>,
771					 <&gcc GCC_MDSS_BYTE0_CLK>,
772					 <&gcc GCC_MDSS_PCLK0_CLK>,
773					 <&gcc GCC_MDSS_ESC0_CLK>;
774				clock-names = "mdp_core_clk",
775					      "iface_clk",
776					      "bus_clk",
777					      "byte_clk",
778					      "pixel_clk",
779					      "core_clk";
780				phys = <&dsi_phy0>;
781				phy-names = "dsi-phy";
782
783				ports {
784					#address-cells = <1>;
785					#size-cells = <0>;
786
787					port@0 {
788						reg = <0>;
789						dsi0_in: endpoint {
790							remote-endpoint = <&mdp5_intf1_out>;
791						};
792					};
793
794					port@1 {
795						reg = <1>;
796						dsi0_out: endpoint {
797						};
798					};
799				};
800			};
801
802			dsi_phy0: dsi-phy@1a98300 {
803				compatible = "qcom,dsi-phy-28nm-lp";
804				reg = <0x1a98300 0xd4>,
805				      <0x1a98500 0x280>,
806				      <0x1a98780 0x30>;
807				reg-names = "dsi_pll",
808					    "dsi_phy",
809					    "dsi_phy_regulator";
810
811				#clock-cells = <1>;
812
813				clocks = <&gcc GCC_MDSS_AHB_CLK>;
814				clock-names = "iface_clk";
815			};
816		};
817
818
819		hexagon@4080000 {
820			compatible = "qcom,q6v5-pil";
821			reg = <0x04080000 0x100>,
822			      <0x04020000 0x040>;
823
824			reg-names = "qdsp6", "rmb";
825
826			interrupts-extended = <&intc 0 24 1>,
827					      <&hexagon_smp2p_in 0 0>,
828					      <&hexagon_smp2p_in 1 0>,
829					      <&hexagon_smp2p_in 2 0>,
830					      <&hexagon_smp2p_in 3 0>;
831			interrupt-names = "wdog", "fatal", "ready",
832					  "handover", "stop-ack";
833
834			clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
835				 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
836				 <&gcc GCC_BOOT_ROM_AHB_CLK>,
837				 <&xo_board>;
838			clock-names = "iface", "bus", "mem", "xo";
839
840			qcom,smem-states = <&hexagon_smp2p_out 0>;
841			qcom,smem-state-names = "stop";
842
843			resets = <&scm 0>;
844			reset-names = "mss_restart";
845
846			cx-supply = <&pm8916_s1>;
847			mx-supply = <&pm8916_l3>;
848			pll-supply = <&pm8916_l7>;
849
850			qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
851
852			status = "disabled";
853
854			mba {
855				memory-region = <&mba_mem>;
856			};
857
858			mpss {
859				memory-region = <&mpss_mem>;
860			};
861
862			smd-edge {
863				interrupts = <0 25 IRQ_TYPE_EDGE_RISING>;
864
865				qcom,smd-edge = <0>;
866				qcom,ipc = <&apcs 8 12>;
867				qcom,remote-pid = <1>;
868
869				label = "hexagon";
870			};
871		};
872
873		pronto: wcnss@a21b000 {
874			compatible = "qcom,pronto-v2-pil", "qcom,pronto";
875			reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
876			reg-names = "ccu", "dxe", "pmu";
877
878			memory-region = <&wcnss_mem>;
879
880			interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>,
881					      <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
882					      <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
883					      <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
884					      <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
885			interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
886
887			vddmx-supply = <&pm8916_l3>;
888			vddpx-supply = <&pm8916_l7>;
889
890			qcom,state = <&wcnss_smp2p_out 0>;
891			qcom,state-names = "stop";
892
893			pinctrl-names = "default";
894			pinctrl-0 = <&wcnss_pin_a>;
895
896			status = "disabled";
897
898			iris {
899				compatible = "qcom,wcn3620";
900
901				clocks = <&rpmcc RPM_SMD_RF_CLK2>;
902				clock-names = "xo";
903
904				vddxo-supply = <&pm8916_l7>;
905				vddrfa-supply = <&pm8916_s3>;
906				vddpa-supply = <&pm8916_l9>;
907				vdddig-supply = <&pm8916_l5>;
908			};
909
910			smd-edge {
911				interrupts = <0 142 1>;
912
913				qcom,ipc = <&apcs 8 17>;
914				qcom,smd-edge = <6>;
915				qcom,remote-pid = <4>;
916
917				label = "pronto";
918
919				wcnss {
920					compatible = "qcom,wcnss";
921					qcom,smd-channels = "WCNSS_CTRL";
922
923					qcom,mmio = <&pronto>;
924
925					bt {
926						compatible = "qcom,wcnss-bt";
927					};
928
929					wifi {
930						compatible = "qcom,wcnss-wlan";
931
932						interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>,
933							     <0 146 IRQ_TYPE_LEVEL_HIGH>;
934						interrupt-names = "tx", "rx";
935
936						qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>;
937						qcom,smem-state-names = "tx-enable", "tx-rings-empty";
938					};
939				};
940			};
941		};
942
943		tpiu@820000 {
944			compatible = "arm,coresight-tpiu", "arm,primecell";
945			reg = <0x820000 0x1000>;
946
947			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
948			clock-names = "apb_pclk", "atclk";
949
950			port {
951				tpiu_in: endpoint {
952					slave-mode;
953					remote-endpoint = <&replicator_out1>;
954				};
955			};
956		};
957
958		funnel@821000 {
959			compatible = "arm,coresight-funnel", "arm,primecell";
960			reg = <0x821000 0x1000>;
961
962			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
963			clock-names = "apb_pclk", "atclk";
964
965			ports {
966				#address-cells = <1>;
967				#size-cells = <0>;
968
969				/*
970				 * Not described input ports:
971				 * 0 - connected to Resource and Power Manger CPU ETM
972				 * 1 - not-connected
973				 * 2 - connected to Modem CPU ETM
974				 * 3 - not-connected
975				 * 5 - not-connected
976				 * 6 - connected trought funnel to Wireless CPU ETM
977				 * 7 - connected to STM component
978				 */
979
980				port@4 {
981					reg = <4>;
982					funnel0_in4: endpoint {
983						slave-mode;
984						remote-endpoint = <&funnel1_out>;
985					};
986				};
987				port@8 {
988					reg = <0>;
989					funnel0_out: endpoint {
990						remote-endpoint = <&etf_in>;
991					};
992				};
993			};
994		};
995
996		replicator@824000 {
997			compatible = "qcom,coresight-replicator1x", "arm,primecell";
998			reg = <0x824000 0x1000>;
999
1000			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1001			clock-names = "apb_pclk", "atclk";
1002
1003			ports {
1004				#address-cells = <1>;
1005				#size-cells = <0>;
1006
1007				port@0 {
1008					reg = <0>;
1009					replicator_out0: endpoint {
1010						remote-endpoint = <&etr_in>;
1011					};
1012				};
1013				port@1 {
1014					reg = <1>;
1015					replicator_out1: endpoint {
1016						remote-endpoint = <&tpiu_in>;
1017					};
1018				};
1019				port@2 {
1020					reg = <0>;
1021					replicator_in: endpoint {
1022						slave-mode;
1023						remote-endpoint = <&etf_out>;
1024					};
1025				};
1026			};
1027		};
1028
1029		etf@825000 {
1030			compatible = "arm,coresight-tmc", "arm,primecell";
1031			reg = <0x825000 0x1000>;
1032
1033			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1034			clock-names = "apb_pclk", "atclk";
1035
1036			ports {
1037				#address-cells = <1>;
1038				#size-cells = <0>;
1039
1040				port@0 {
1041					reg = <0>;
1042					etf_out: endpoint {
1043						slave-mode;
1044						remote-endpoint = <&funnel0_out>;
1045					};
1046				};
1047				port@1 {
1048					reg = <0>;
1049					etf_in: endpoint {
1050						remote-endpoint = <&replicator_in>;
1051					};
1052				};
1053			};
1054		};
1055
1056		etr@826000 {
1057			compatible = "arm,coresight-tmc", "arm,primecell";
1058			reg = <0x826000 0x1000>;
1059
1060			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1061			clock-names = "apb_pclk", "atclk";
1062
1063			port {
1064				etr_in: endpoint {
1065					slave-mode;
1066					remote-endpoint = <&replicator_out0>;
1067				};
1068			};
1069		};
1070
1071		funnel@841000 {	/* APSS funnel only 4 inputs are used */
1072			compatible = "arm,coresight-funnel", "arm,primecell";
1073			reg = <0x841000 0x1000>;
1074
1075			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1076			clock-names = "apb_pclk", "atclk";
1077
1078			ports {
1079				#address-cells = <1>;
1080				#size-cells = <0>;
1081
1082				port@0 {
1083					reg = <0>;
1084					funnel1_in0: endpoint {
1085						slave-mode;
1086						remote-endpoint = <&etm0_out>;
1087					};
1088				};
1089				port@1 {
1090					reg = <1>;
1091					funnel1_in1: endpoint {
1092						slave-mode;
1093						remote-endpoint = <&etm1_out>;
1094					};
1095				};
1096				port@2 {
1097					reg = <2>;
1098					funnel1_in2: endpoint {
1099						slave-mode;
1100						remote-endpoint = <&etm2_out>;
1101					};
1102				};
1103				port@3 {
1104					reg = <3>;
1105					funnel1_in3: endpoint {
1106						slave-mode;
1107						remote-endpoint = <&etm3_out>;
1108					};
1109				};
1110				port@4 {
1111					reg = <0>;
1112					funnel1_out: endpoint {
1113						remote-endpoint = <&funnel0_in4>;
1114					};
1115				};
1116			};
1117		};
1118
1119		etm@85c000 {
1120			compatible = "arm,coresight-etm4x", "arm,primecell";
1121			reg = <0x85c000 0x1000>;
1122
1123			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1124			clock-names = "apb_pclk", "atclk";
1125
1126			cpu = <&CPU0>;
1127
1128			port {
1129				etm0_out: endpoint {
1130				remote-endpoint = <&funnel1_in0>;
1131				};
1132			};
1133		};
1134
1135		etm@85d000 {
1136			compatible = "arm,coresight-etm4x", "arm,primecell";
1137			reg = <0x85d000 0x1000>;
1138
1139			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1140			clock-names = "apb_pclk", "atclk";
1141
1142			cpu = <&CPU1>;
1143
1144			port {
1145				etm1_out: endpoint {
1146					remote-endpoint = <&funnel1_in1>;
1147				};
1148			};
1149		};
1150
1151		etm@85e000 {
1152			compatible = "arm,coresight-etm4x", "arm,primecell";
1153			reg = <0x85e000 0x1000>;
1154
1155			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1156			clock-names = "apb_pclk", "atclk";
1157
1158			cpu = <&CPU2>;
1159
1160			port {
1161				etm2_out: endpoint {
1162					remote-endpoint = <&funnel1_in2>;
1163				};
1164			};
1165		};
1166
1167		etm@85f000 {
1168			compatible = "arm,coresight-etm4x", "arm,primecell";
1169			reg = <0x85f000 0x1000>;
1170
1171			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
1172			clock-names = "apb_pclk", "atclk";
1173
1174			cpu = <&CPU3>;
1175
1176			port {
1177				etm3_out: endpoint {
1178					remote-endpoint = <&funnel1_in3>;
1179				};
1180			};
1181		};
1182	};
1183
1184	smd {
1185		compatible = "qcom,smd";
1186
1187		rpm {
1188			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
1189			qcom,ipc = <&apcs 8 0>;
1190			qcom,smd-edge = <15>;
1191
1192			rpm_requests {
1193				compatible = "qcom,rpm-msm8916";
1194				qcom,smd-channels = "rpm_requests";
1195
1196				rpmcc: qcom,rpmcc {
1197					compatible = "qcom,rpmcc-msm8916";
1198					#clock-cells = <1>;
1199				};
1200
1201				smd_rpm_regulators: pm8916-regulators {
1202					compatible = "qcom,rpm-pm8916-regulators";
1203
1204					pm8916_s1: s1 {};
1205					pm8916_s3: s3 {};
1206					pm8916_s4: s4 {};
1207
1208					pm8916_l1: l1 {};
1209					pm8916_l2: l2 {};
1210					pm8916_l3: l3 {};
1211					pm8916_l4: l4 {};
1212					pm8916_l5: l5 {};
1213					pm8916_l6: l6 {};
1214					pm8916_l7: l7 {};
1215					pm8916_l8: l8 {};
1216					pm8916_l9: l9 {};
1217					pm8916_l10: l10 {};
1218					pm8916_l11: l11 {};
1219					pm8916_l12: l12 {};
1220					pm8916_l13: l13 {};
1221					pm8916_l14: l14 {};
1222					pm8916_l15: l15 {};
1223					pm8916_l16: l16 {};
1224					pm8916_l17: l17 {};
1225					pm8916_l18: l18 {};
1226				};
1227			};
1228		};
1229	};
1230
1231	hexagon-smp2p {
1232		compatible = "qcom,smp2p";
1233		qcom,smem = <435>, <428>;
1234
1235		interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
1236
1237		qcom,ipc = <&apcs 8 14>;
1238
1239		qcom,local-pid = <0>;
1240		qcom,remote-pid = <1>;
1241
1242		hexagon_smp2p_out: master-kernel {
1243			qcom,entry-name = "master-kernel";
1244
1245			#qcom,smem-state-cells = <1>;
1246		};
1247
1248		hexagon_smp2p_in: slave-kernel {
1249			qcom,entry-name = "slave-kernel";
1250
1251			interrupt-controller;
1252			#interrupt-cells = <2>;
1253		};
1254	};
1255
1256	wcnss-smp2p {
1257		compatible = "qcom,smp2p";
1258		qcom,smem = <451>, <431>;
1259
1260		interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
1261
1262		qcom,ipc = <&apcs 8 18>;
1263
1264		qcom,local-pid = <0>;
1265		qcom,remote-pid = <4>;
1266
1267		wcnss_smp2p_out: master-kernel {
1268			qcom,entry-name = "master-kernel";
1269
1270			#qcom,smem-state-cells = <1>;
1271		};
1272
1273		wcnss_smp2p_in: slave-kernel {
1274			qcom,entry-name = "slave-kernel";
1275
1276			interrupt-controller;
1277			#interrupt-cells = <2>;
1278		};
1279	};
1280
1281	smsm {
1282		compatible = "qcom,smsm";
1283
1284		#address-cells = <1>;
1285		#size-cells = <0>;
1286
1287		qcom,ipc-1 = <&apcs 0 13>;
1288		qcom,ipc-6 = <&apcs 0 19>;
1289
1290		apps_smsm: apps@0 {
1291			reg = <0>;
1292
1293			#qcom,smem-state-cells = <1>;
1294		};
1295
1296		hexagon_smsm: hexagon@1 {
1297			reg = <1>;
1298			interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
1299
1300			interrupt-controller;
1301			#interrupt-cells = <2>;
1302		};
1303
1304		wcnss_smsm: wcnss@6 {
1305			reg = <6>;
1306			interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
1307
1308			interrupt-controller;
1309			#interrupt-cells = <2>;
1310		};
1311	};
1312};
1313
1314#include "msm8916-pins.dtsi"
1315