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