xref: /freebsd/sys/contrib/device-tree/src/arm64/qcom/msm8996.dtsi (revision 7ef62cebc2f965b0f640263e179276928885e33d)
1// SPDX-License-Identifier: GPL-2.0-only
2/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
3 */
4
5#include <dt-bindings/interrupt-controller/arm-gic.h>
6#include <dt-bindings/clock/qcom,gcc-msm8996.h>
7#include <dt-bindings/clock/qcom,mmcc-msm8996.h>
8#include <dt-bindings/clock/qcom,rpmcc.h>
9#include <dt-bindings/interconnect/qcom,msm8996.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/power/qcom-rpmpd.h>
12#include <dt-bindings/soc/qcom,apr.h>
13#include <dt-bindings/thermal/thermal.h>
14
15/ {
16	interrupt-parent = <&intc>;
17
18	#address-cells = <2>;
19	#size-cells = <2>;
20
21	chosen { };
22
23	clocks {
24		xo_board: xo-board {
25			compatible = "fixed-clock";
26			#clock-cells = <0>;
27			clock-frequency = <19200000>;
28			clock-output-names = "xo_board";
29		};
30
31		sleep_clk: sleep-clk {
32			compatible = "fixed-clock";
33			#clock-cells = <0>;
34			clock-frequency = <32764>;
35			clock-output-names = "sleep_clk";
36		};
37	};
38
39	cpus {
40		#address-cells = <2>;
41		#size-cells = <0>;
42
43		CPU0: cpu@0 {
44			device_type = "cpu";
45			compatible = "qcom,kryo";
46			reg = <0x0 0x0>;
47			enable-method = "psci";
48			cpu-idle-states = <&CPU_SLEEP_0>;
49			capacity-dmips-mhz = <1024>;
50			clocks = <&kryocc 0>;
51			operating-points-v2 = <&cluster0_opp>;
52			#cooling-cells = <2>;
53			next-level-cache = <&L2_0>;
54			L2_0: l2-cache {
55			      compatible = "cache";
56			      cache-level = <2>;
57			};
58		};
59
60		CPU1: cpu@1 {
61			device_type = "cpu";
62			compatible = "qcom,kryo";
63			reg = <0x0 0x1>;
64			enable-method = "psci";
65			cpu-idle-states = <&CPU_SLEEP_0>;
66			capacity-dmips-mhz = <1024>;
67			clocks = <&kryocc 0>;
68			operating-points-v2 = <&cluster0_opp>;
69			#cooling-cells = <2>;
70			next-level-cache = <&L2_0>;
71		};
72
73		CPU2: cpu@100 {
74			device_type = "cpu";
75			compatible = "qcom,kryo";
76			reg = <0x0 0x100>;
77			enable-method = "psci";
78			cpu-idle-states = <&CPU_SLEEP_0>;
79			capacity-dmips-mhz = <1024>;
80			clocks = <&kryocc 1>;
81			operating-points-v2 = <&cluster1_opp>;
82			#cooling-cells = <2>;
83			next-level-cache = <&L2_1>;
84			L2_1: l2-cache {
85			      compatible = "cache";
86			      cache-level = <2>;
87			};
88		};
89
90		CPU3: cpu@101 {
91			device_type = "cpu";
92			compatible = "qcom,kryo";
93			reg = <0x0 0x101>;
94			enable-method = "psci";
95			cpu-idle-states = <&CPU_SLEEP_0>;
96			capacity-dmips-mhz = <1024>;
97			clocks = <&kryocc 1>;
98			operating-points-v2 = <&cluster1_opp>;
99			#cooling-cells = <2>;
100			next-level-cache = <&L2_1>;
101		};
102
103		cpu-map {
104			cluster0 {
105				core0 {
106					cpu = <&CPU0>;
107				};
108
109				core1 {
110					cpu = <&CPU1>;
111				};
112			};
113
114			cluster1 {
115				core0 {
116					cpu = <&CPU2>;
117				};
118
119				core1 {
120					cpu = <&CPU3>;
121				};
122			};
123		};
124
125		idle-states {
126			entry-method = "psci";
127
128			CPU_SLEEP_0: cpu-sleep-0 {
129				compatible = "arm,idle-state";
130				idle-state-name = "standalone-power-collapse";
131				arm,psci-suspend-param = <0x00000004>;
132				entry-latency-us = <130>;
133				exit-latency-us = <80>;
134				min-residency-us = <300>;
135			};
136		};
137	};
138
139	cluster0_opp: opp-table-cluster0 {
140		compatible = "operating-points-v2-kryo-cpu";
141		nvmem-cells = <&speedbin_efuse>;
142		opp-shared;
143
144		/* Nominal fmax for now */
145		opp-307200000 {
146			opp-hz = /bits/ 64 <307200000>;
147			opp-supported-hw = <0x77>;
148			clock-latency-ns = <200000>;
149		};
150		opp-422400000 {
151			opp-hz = /bits/ 64 <422400000>;
152			opp-supported-hw = <0x77>;
153			clock-latency-ns = <200000>;
154		};
155		opp-480000000 {
156			opp-hz = /bits/ 64 <480000000>;
157			opp-supported-hw = <0x77>;
158			clock-latency-ns = <200000>;
159		};
160		opp-556800000 {
161			opp-hz = /bits/ 64 <556800000>;
162			opp-supported-hw = <0x77>;
163			clock-latency-ns = <200000>;
164		};
165		opp-652800000 {
166			opp-hz = /bits/ 64 <652800000>;
167			opp-supported-hw = <0x77>;
168			clock-latency-ns = <200000>;
169		};
170		opp-729600000 {
171			opp-hz = /bits/ 64 <729600000>;
172			opp-supported-hw = <0x77>;
173			clock-latency-ns = <200000>;
174		};
175		opp-844800000 {
176			opp-hz = /bits/ 64 <844800000>;
177			opp-supported-hw = <0x77>;
178			clock-latency-ns = <200000>;
179		};
180		opp-960000000 {
181			opp-hz = /bits/ 64 <960000000>;
182			opp-supported-hw = <0x77>;
183			clock-latency-ns = <200000>;
184		};
185		opp-1036800000 {
186			opp-hz = /bits/ 64 <1036800000>;
187			opp-supported-hw = <0x77>;
188			clock-latency-ns = <200000>;
189		};
190		opp-1113600000 {
191			opp-hz = /bits/ 64 <1113600000>;
192			opp-supported-hw = <0x77>;
193			clock-latency-ns = <200000>;
194		};
195		opp-1190400000 {
196			opp-hz = /bits/ 64 <1190400000>;
197			opp-supported-hw = <0x77>;
198			clock-latency-ns = <200000>;
199		};
200		opp-1228800000 {
201			opp-hz = /bits/ 64 <1228800000>;
202			opp-supported-hw = <0x77>;
203			clock-latency-ns = <200000>;
204		};
205		opp-1324800000 {
206			opp-hz = /bits/ 64 <1324800000>;
207			opp-supported-hw = <0x77>;
208			clock-latency-ns = <200000>;
209		};
210		opp-1401600000 {
211			opp-hz = /bits/ 64 <1401600000>;
212			opp-supported-hw = <0x77>;
213			clock-latency-ns = <200000>;
214		};
215		opp-1478400000 {
216			opp-hz = /bits/ 64 <1478400000>;
217			opp-supported-hw = <0x77>;
218			clock-latency-ns = <200000>;
219		};
220		opp-1593600000 {
221			opp-hz = /bits/ 64 <1593600000>;
222			opp-supported-hw = <0x77>;
223			clock-latency-ns = <200000>;
224		};
225	};
226
227	cluster1_opp: opp-table-cluster1 {
228		compatible = "operating-points-v2-kryo-cpu";
229		nvmem-cells = <&speedbin_efuse>;
230		opp-shared;
231
232		/* Nominal fmax for now */
233		opp-307200000 {
234			opp-hz = /bits/ 64 <307200000>;
235			opp-supported-hw = <0x77>;
236			clock-latency-ns = <200000>;
237		};
238		opp-403200000 {
239			opp-hz = /bits/ 64 <403200000>;
240			opp-supported-hw = <0x77>;
241			clock-latency-ns = <200000>;
242		};
243		opp-480000000 {
244			opp-hz = /bits/ 64 <480000000>;
245			opp-supported-hw = <0x77>;
246			clock-latency-ns = <200000>;
247		};
248		opp-556800000 {
249			opp-hz = /bits/ 64 <556800000>;
250			opp-supported-hw = <0x77>;
251			clock-latency-ns = <200000>;
252		};
253		opp-652800000 {
254			opp-hz = /bits/ 64 <652800000>;
255			opp-supported-hw = <0x77>;
256			clock-latency-ns = <200000>;
257		};
258		opp-729600000 {
259			opp-hz = /bits/ 64 <729600000>;
260			opp-supported-hw = <0x77>;
261			clock-latency-ns = <200000>;
262		};
263		opp-806400000 {
264			opp-hz = /bits/ 64 <806400000>;
265			opp-supported-hw = <0x77>;
266			clock-latency-ns = <200000>;
267		};
268		opp-883200000 {
269			opp-hz = /bits/ 64 <883200000>;
270			opp-supported-hw = <0x77>;
271			clock-latency-ns = <200000>;
272		};
273		opp-940800000 {
274			opp-hz = /bits/ 64 <940800000>;
275			opp-supported-hw = <0x77>;
276			clock-latency-ns = <200000>;
277		};
278		opp-1036800000 {
279			opp-hz = /bits/ 64 <1036800000>;
280			opp-supported-hw = <0x77>;
281			clock-latency-ns = <200000>;
282		};
283		opp-1113600000 {
284			opp-hz = /bits/ 64 <1113600000>;
285			opp-supported-hw = <0x77>;
286			clock-latency-ns = <200000>;
287		};
288		opp-1190400000 {
289			opp-hz = /bits/ 64 <1190400000>;
290			opp-supported-hw = <0x77>;
291			clock-latency-ns = <200000>;
292		};
293		opp-1248000000 {
294			opp-hz = /bits/ 64 <1248000000>;
295			opp-supported-hw = <0x77>;
296			clock-latency-ns = <200000>;
297		};
298		opp-1324800000 {
299			opp-hz = /bits/ 64 <1324800000>;
300			opp-supported-hw = <0x77>;
301			clock-latency-ns = <200000>;
302		};
303		opp-1401600000 {
304			opp-hz = /bits/ 64 <1401600000>;
305			opp-supported-hw = <0x77>;
306			clock-latency-ns = <200000>;
307		};
308		opp-1478400000 {
309			opp-hz = /bits/ 64 <1478400000>;
310			opp-supported-hw = <0x77>;
311			clock-latency-ns = <200000>;
312		};
313		opp-1555200000 {
314			opp-hz = /bits/ 64 <1555200000>;
315			opp-supported-hw = <0x77>;
316			clock-latency-ns = <200000>;
317		};
318		opp-1632000000 {
319			opp-hz = /bits/ 64 <1632000000>;
320			opp-supported-hw = <0x77>;
321			clock-latency-ns = <200000>;
322		};
323		opp-1708800000 {
324			opp-hz = /bits/ 64 <1708800000>;
325			opp-supported-hw = <0x77>;
326			clock-latency-ns = <200000>;
327		};
328		opp-1785600000 {
329			opp-hz = /bits/ 64 <1785600000>;
330			opp-supported-hw = <0x77>;
331			clock-latency-ns = <200000>;
332		};
333		opp-1824000000 {
334			opp-hz = /bits/ 64 <1824000000>;
335			opp-supported-hw = <0x77>;
336			clock-latency-ns = <200000>;
337		};
338		opp-1920000000 {
339			opp-hz = /bits/ 64 <1920000000>;
340			opp-supported-hw = <0x77>;
341			clock-latency-ns = <200000>;
342		};
343		opp-1996800000 {
344			opp-hz = /bits/ 64 <1996800000>;
345			opp-supported-hw = <0x77>;
346			clock-latency-ns = <200000>;
347		};
348		opp-2073600000 {
349			opp-hz = /bits/ 64 <2073600000>;
350			opp-supported-hw = <0x77>;
351			clock-latency-ns = <200000>;
352		};
353		opp-2150400000 {
354			opp-hz = /bits/ 64 <2150400000>;
355			opp-supported-hw = <0x77>;
356			clock-latency-ns = <200000>;
357		};
358	};
359
360	firmware {
361		scm {
362			compatible = "qcom,scm-msm8996", "qcom,scm";
363			qcom,dload-mode = <&tcsr_2 0x13000>;
364		};
365	};
366
367	memory@80000000 {
368		device_type = "memory";
369		/* We expect the bootloader to fill in the reg */
370		reg = <0x0 0x80000000 0x0 0x0>;
371	};
372
373	psci {
374		compatible = "arm,psci-1.0";
375		method = "smc";
376	};
377
378	reserved-memory {
379		#address-cells = <2>;
380		#size-cells = <2>;
381		ranges;
382
383		hyp_mem: memory@85800000 {
384			reg = <0x0 0x85800000 0x0 0x600000>;
385			no-map;
386		};
387
388		xbl_mem: memory@85e00000 {
389			reg = <0x0 0x85e00000 0x0 0x200000>;
390			no-map;
391		};
392
393		smem_mem: smem-mem@86000000 {
394			reg = <0x0 0x86000000 0x0 0x200000>;
395			no-map;
396		};
397
398		tz_mem: memory@86200000 {
399			reg = <0x0 0x86200000 0x0 0x2600000>;
400			no-map;
401		};
402
403		rmtfs_mem: rmtfs {
404			compatible = "qcom,rmtfs-mem";
405
406			size = <0x0 0x200000>;
407			alloc-ranges = <0x0 0xa0000000 0x0 0x2000000>;
408			no-map;
409
410			qcom,client-id = <1>;
411			qcom,vmid = <15>;
412		};
413
414		mpss_mem: mpss@88800000 {
415			reg = <0x0 0x88800000 0x0 0x6200000>;
416			no-map;
417		};
418
419		adsp_mem: adsp@8ea00000 {
420			reg = <0x0 0x8ea00000 0x0 0x1b00000>;
421			no-map;
422		};
423
424		slpi_mem: slpi@90500000 {
425			reg = <0x0 0x90500000 0x0 0xa00000>;
426			no-map;
427		};
428
429		gpu_mem: gpu@90f00000 {
430			compatible = "shared-dma-pool";
431			reg = <0x0 0x90f00000 0x0 0x100000>;
432			no-map;
433		};
434
435		venus_mem: venus@91000000 {
436			reg = <0x0 0x91000000 0x0 0x500000>;
437			no-map;
438		};
439
440		mba_mem: mba@91500000 {
441			reg = <0x0 0x91500000 0x0 0x200000>;
442			no-map;
443		};
444	};
445
446	rpm-glink {
447		compatible = "qcom,glink-rpm";
448
449		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
450
451		qcom,rpm-msg-ram = <&rpm_msg_ram>;
452
453		mboxes = <&apcs_glb 0>;
454
455		rpm_requests: rpm-requests {
456			compatible = "qcom,rpm-msm8996";
457			qcom,glink-channels = "rpm_requests";
458
459			rpmcc: qcom,rpmcc {
460				compatible = "qcom,rpmcc-msm8996", "qcom,rpmcc";
461				#clock-cells = <1>;
462				clocks = <&xo_board>;
463				clock-names = "xo";
464			};
465
466			rpmpd: power-controller {
467				compatible = "qcom,msm8996-rpmpd";
468				#power-domain-cells = <1>;
469				operating-points-v2 = <&rpmpd_opp_table>;
470
471				rpmpd_opp_table: opp-table {
472					compatible = "operating-points-v2";
473
474					rpmpd_opp1: opp1 {
475						opp-level = <1>;
476					};
477
478					rpmpd_opp2: opp2 {
479						opp-level = <2>;
480					};
481
482					rpmpd_opp3: opp3 {
483						opp-level = <3>;
484					};
485
486					rpmpd_opp4: opp4 {
487						opp-level = <4>;
488					};
489
490					rpmpd_opp5: opp5 {
491						opp-level = <5>;
492					};
493
494					rpmpd_opp6: opp6 {
495						opp-level = <6>;
496					};
497				};
498			};
499		};
500	};
501
502	smem {
503		compatible = "qcom,smem";
504		memory-region = <&smem_mem>;
505		hwlocks = <&tcsr_mutex 3>;
506	};
507
508	smp2p-adsp {
509		compatible = "qcom,smp2p";
510		qcom,smem = <443>, <429>;
511
512		interrupts = <0 158 IRQ_TYPE_EDGE_RISING>;
513
514		mboxes = <&apcs_glb 10>;
515
516		qcom,local-pid = <0>;
517		qcom,remote-pid = <2>;
518
519		adsp_smp2p_out: master-kernel {
520			qcom,entry-name = "master-kernel";
521			#qcom,smem-state-cells = <1>;
522		};
523
524		adsp_smp2p_in: slave-kernel {
525			qcom,entry-name = "slave-kernel";
526
527			interrupt-controller;
528			#interrupt-cells = <2>;
529		};
530	};
531
532	smp2p-mpss {
533		compatible = "qcom,smp2p";
534		qcom,smem = <435>, <428>;
535
536		interrupts = <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>;
537
538		mboxes = <&apcs_glb 14>;
539
540		qcom,local-pid = <0>;
541		qcom,remote-pid = <1>;
542
543		mpss_smp2p_out: master-kernel {
544			qcom,entry-name = "master-kernel";
545			#qcom,smem-state-cells = <1>;
546		};
547
548		mpss_smp2p_in: slave-kernel {
549			qcom,entry-name = "slave-kernel";
550
551			interrupt-controller;
552			#interrupt-cells = <2>;
553		};
554	};
555
556	smp2p-slpi {
557		compatible = "qcom,smp2p";
558		qcom,smem = <481>, <430>;
559
560		interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
561
562		mboxes = <&apcs_glb 26>;
563
564		qcom,local-pid = <0>;
565		qcom,remote-pid = <3>;
566
567		slpi_smp2p_out: master-kernel {
568			qcom,entry-name = "master-kernel";
569			#qcom,smem-state-cells = <1>;
570		};
571
572		slpi_smp2p_in: slave-kernel {
573			qcom,entry-name = "slave-kernel";
574
575			interrupt-controller;
576			#interrupt-cells = <2>;
577		};
578	};
579
580	soc: soc {
581		#address-cells = <1>;
582		#size-cells = <1>;
583		ranges = <0 0 0 0xffffffff>;
584		compatible = "simple-bus";
585
586		pcie_phy: phy-wrapper@34000 {
587			compatible = "qcom,msm8996-qmp-pcie-phy";
588			reg = <0x00034000 0x488>;
589			#address-cells = <1>;
590			#size-cells = <1>;
591			ranges = <0x0 0x00034000 0x4000>;
592
593			clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>,
594				<&gcc GCC_PCIE_PHY_CFG_AHB_CLK>,
595				<&gcc GCC_PCIE_CLKREF_CLK>;
596			clock-names = "aux", "cfg_ahb", "ref";
597
598			resets = <&gcc GCC_PCIE_PHY_BCR>,
599				<&gcc GCC_PCIE_PHY_COM_BCR>,
600				<&gcc GCC_PCIE_PHY_COM_NOCSR_BCR>;
601			reset-names = "phy", "common", "cfg";
602
603			status = "disabled";
604
605			pciephy_0: phy@1000 {
606				reg = <0x1000 0x130>,
607				      <0x1200 0x200>,
608				      <0x1400 0x1dc>;
609
610				clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
611				clock-names = "pipe0";
612				resets = <&gcc GCC_PCIE_0_PHY_BCR>;
613				reset-names = "lane0";
614
615				#clock-cells = <0>;
616				clock-output-names = "pcie_0_pipe_clk_src";
617
618				#phy-cells = <0>;
619			};
620
621			pciephy_1: phy@2000 {
622				reg = <0x2000 0x130>,
623				      <0x2200 0x200>,
624				      <0x2400 0x1dc>;
625
626				clocks = <&gcc GCC_PCIE_1_PIPE_CLK>;
627				clock-names = "pipe1";
628				resets = <&gcc GCC_PCIE_1_PHY_BCR>;
629				reset-names = "lane1";
630
631				#clock-cells = <0>;
632				clock-output-names = "pcie_1_pipe_clk_src";
633
634				#phy-cells = <0>;
635			};
636
637			pciephy_2: phy@3000 {
638				reg = <0x3000 0x130>,
639				      <0x3200 0x200>,
640				      <0x3400 0x1dc>;
641
642				clocks = <&gcc GCC_PCIE_2_PIPE_CLK>;
643				clock-names = "pipe2";
644				resets = <&gcc GCC_PCIE_2_PHY_BCR>;
645				reset-names = "lane2";
646
647				#clock-cells = <0>;
648				clock-output-names = "pcie_2_pipe_clk_src";
649
650				#phy-cells = <0>;
651			};
652		};
653
654		rpm_msg_ram: sram@68000 {
655			compatible = "qcom,rpm-msg-ram";
656			reg = <0x00068000 0x6000>;
657		};
658
659		qfprom@74000 {
660			compatible = "qcom,msm8996-qfprom", "qcom,qfprom";
661			reg = <0x00074000 0x8ff>;
662			#address-cells = <1>;
663			#size-cells = <1>;
664
665			qusb2p_hstx_trim: hstx_trim@24e {
666				reg = <0x24e 0x2>;
667				bits = <5 4>;
668			};
669
670			qusb2s_hstx_trim: hstx_trim@24f {
671				reg = <0x24f 0x1>;
672				bits = <1 4>;
673			};
674
675			speedbin_efuse: speedbin@133 {
676				reg = <0x133 0x1>;
677				bits = <5 3>;
678			};
679		};
680
681		rng: rng@83000 {
682			compatible = "qcom,prng-ee";
683			reg = <0x00083000 0x1000>;
684			clocks = <&gcc GCC_PRNG_AHB_CLK>;
685			clock-names = "core";
686		};
687
688		gcc: clock-controller@300000 {
689			compatible = "qcom,gcc-msm8996";
690			#clock-cells = <1>;
691			#reset-cells = <1>;
692			#power-domain-cells = <1>;
693			reg = <0x00300000 0x90000>;
694
695			clocks = <&rpmcc RPM_SMD_BB_CLK1>,
696				 <&rpmcc RPM_SMD_LN_BB_CLK>,
697				 <&sleep_clk>,
698				 <&pciephy_0>,
699				 <&pciephy_1>,
700				 <&pciephy_2>,
701				 <&ssusb_phy_0>,
702				 <0>, <0>, <0>;
703			clock-names = "cxo",
704				      "cxo2",
705				      "sleep_clk",
706				      "pcie_0_pipe_clk_src",
707				      "pcie_1_pipe_clk_src",
708				      "pcie_2_pipe_clk_src",
709				      "usb3_phy_pipe_clk_src",
710				      "ufs_rx_symbol_0_clk_src",
711				      "ufs_rx_symbol_1_clk_src",
712				      "ufs_tx_symbol_0_clk_src";
713		};
714
715		bimc: interconnect@408000 {
716			compatible = "qcom,msm8996-bimc";
717			reg = <0x00408000 0x5a000>;
718			#interconnect-cells = <1>;
719			clock-names = "bus", "bus_a";
720			clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
721				 <&rpmcc RPM_SMD_BIMC_A_CLK>;
722		};
723
724		tsens0: thermal-sensor@4a9000 {
725			compatible = "qcom,msm8996-tsens", "qcom,tsens-v2";
726			reg = <0x004a9000 0x1000>, /* TM */
727			      <0x004a8000 0x1000>; /* SROT */
728			#qcom,sensors = <13>;
729			interrupts = <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
730				     <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>;
731			interrupt-names = "uplow", "critical";
732			#thermal-sensor-cells = <1>;
733		};
734
735		tsens1: thermal-sensor@4ad000 {
736			compatible = "qcom,msm8996-tsens", "qcom,tsens-v2";
737			reg = <0x004ad000 0x1000>, /* TM */
738			      <0x004ac000 0x1000>; /* SROT */
739			#qcom,sensors = <8>;
740			interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
741				     <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
742			interrupt-names = "uplow", "critical";
743			#thermal-sensor-cells = <1>;
744		};
745
746		cryptobam: dma-controller@644000 {
747			compatible = "qcom,bam-v1.7.0";
748			reg = <0x00644000 0x24000>;
749			interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
750			clocks = <&gcc GCC_CE1_CLK>;
751			clock-names = "bam_clk";
752			#dma-cells = <1>;
753			qcom,ee = <0>;
754			qcom,controlled-remotely;
755		};
756
757		crypto: crypto@67a000 {
758			compatible = "qcom,crypto-v5.4";
759			reg = <0x0067a000 0x6000>;
760			clocks = <&gcc GCC_CE1_AHB_CLK>,
761				 <&gcc GCC_CE1_AXI_CLK>,
762				 <&gcc GCC_CE1_CLK>;
763			clock-names = "iface", "bus", "core";
764			dmas = <&cryptobam 6>, <&cryptobam 7>;
765			dma-names = "rx", "tx";
766		};
767
768		cnoc: interconnect@500000 {
769			compatible = "qcom,msm8996-cnoc";
770			reg = <0x00500000 0x1000>;
771			#interconnect-cells = <1>;
772			clock-names = "bus", "bus_a";
773			clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
774				 <&rpmcc RPM_SMD_CNOC_A_CLK>;
775		};
776
777		snoc: interconnect@524000 {
778			compatible = "qcom,msm8996-snoc";
779			reg = <0x00524000 0x1c000>;
780			#interconnect-cells = <1>;
781			clock-names = "bus", "bus_a";
782			clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
783				 <&rpmcc RPM_SMD_SNOC_A_CLK>;
784		};
785
786		a0noc: interconnect@543000 {
787			compatible = "qcom,msm8996-a0noc";
788			reg = <0x00543000 0x6000>;
789			#interconnect-cells = <1>;
790			clock-names = "aggre0_snoc_axi",
791				      "aggre0_cnoc_ahb",
792				      "aggre0_noc_mpu_cfg";
793			clocks = <&gcc GCC_AGGRE0_SNOC_AXI_CLK>,
794				 <&gcc GCC_AGGRE0_CNOC_AHB_CLK>,
795				 <&gcc GCC_AGGRE0_NOC_MPU_CFG_AHB_CLK>;
796			power-domains = <&gcc AGGRE0_NOC_GDSC>;
797		};
798
799		a1noc: interconnect@562000 {
800			compatible = "qcom,msm8996-a1noc";
801			reg = <0x00562000 0x5000>;
802			#interconnect-cells = <1>;
803			clock-names = "bus", "bus_a";
804			clocks = <&rpmcc RPM_SMD_AGGR1_NOC_CLK>,
805				 <&rpmcc RPM_SMD_AGGR1_NOC_A_CLK>;
806		};
807
808		a2noc: interconnect@583000 {
809			compatible = "qcom,msm8996-a2noc";
810			reg = <0x00583000 0x7000>;
811			#interconnect-cells = <1>;
812			clock-names = "bus", "bus_a";
813			clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
814				 <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>;
815		};
816
817		mnoc: interconnect@5a4000 {
818			compatible = "qcom,msm8996-mnoc";
819			reg = <0x005a4000 0x1c000>;
820			#interconnect-cells = <1>;
821			clock-names = "bus", "bus_a", "iface";
822			clocks = <&rpmcc RPM_SMD_MMAXI_CLK>,
823				 <&rpmcc RPM_SMD_MMAXI_A_CLK>,
824				 <&mmcc AHB_CLK_SRC>;
825		};
826
827		pnoc: interconnect@5c0000 {
828			compatible = "qcom,msm8996-pnoc";
829			reg = <0x005c0000 0x3000>;
830			#interconnect-cells = <1>;
831			clock-names = "bus", "bus_a";
832			clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
833				 <&rpmcc RPM_SMD_PCNOC_A_CLK>;
834		};
835
836		tcsr_mutex: hwlock@740000 {
837			compatible = "qcom,tcsr-mutex";
838			reg = <0x00740000 0x20000>;
839			#hwlock-cells = <1>;
840		};
841
842		tcsr_1: syscon@760000 {
843			compatible = "qcom,tcsr-msm8996", "syscon";
844			reg = <0x00760000 0x20000>;
845		};
846
847		tcsr_2: syscon@7a0000 {
848			compatible = "qcom,tcsr-msm8996", "syscon";
849			reg = <0x007a0000 0x18000>;
850		};
851
852		mmcc: clock-controller@8c0000 {
853			compatible = "qcom,mmcc-msm8996";
854			#clock-cells = <1>;
855			#reset-cells = <1>;
856			#power-domain-cells = <1>;
857			reg = <0x008c0000 0x40000>;
858			clocks = <&xo_board>,
859				 <&gcc GCC_MMSS_NOC_CFG_AHB_CLK>,
860				 <&gcc GPLL0>,
861				 <&dsi0_phy 1>,
862				 <&dsi0_phy 0>,
863				 <0>,
864				 <0>,
865				 <0>;
866			clock-names = "xo",
867				      "gcc_mmss_noc_cfg_ahb_clk",
868				      "gpll0",
869				      "dsi0pll",
870				      "dsi0pllbyte",
871				      "dsi1pll",
872				      "dsi1pllbyte",
873				      "hdmipll";
874			assigned-clocks = <&mmcc MMPLL9_PLL>,
875					  <&mmcc MMPLL1_PLL>,
876					  <&mmcc MMPLL3_PLL>,
877					  <&mmcc MMPLL4_PLL>,
878					  <&mmcc MMPLL5_PLL>;
879			assigned-clock-rates = <624000000>,
880					       <810000000>,
881					       <980000000>,
882					       <960000000>,
883					       <825000000>;
884		};
885
886		mdss: mdss@900000 {
887			compatible = "qcom,mdss";
888
889			reg = <0x00900000 0x1000>,
890			      <0x009b0000 0x1040>,
891			      <0x009b8000 0x1040>;
892			reg-names = "mdss_phys",
893				    "vbif_phys",
894				    "vbif_nrt_phys";
895
896			power-domains = <&mmcc MDSS_GDSC>;
897			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
898
899			interrupt-controller;
900			#interrupt-cells = <1>;
901
902			clocks = <&mmcc MDSS_AHB_CLK>,
903				 <&mmcc MDSS_MDP_CLK>;
904			clock-names = "iface", "core";
905
906			#address-cells = <1>;
907			#size-cells = <1>;
908			ranges;
909
910			status = "disabled";
911
912			mdp: mdp@901000 {
913				compatible = "qcom,mdp5";
914				reg = <0x00901000 0x90000>;
915				reg-names = "mdp_phys";
916
917				interrupt-parent = <&mdss>;
918				interrupts = <0>;
919
920				clocks = <&mmcc MDSS_AHB_CLK>,
921					 <&mmcc MDSS_AXI_CLK>,
922					 <&mmcc MDSS_MDP_CLK>,
923					 <&mmcc SMMU_MDP_AXI_CLK>,
924					 <&mmcc MDSS_VSYNC_CLK>;
925				clock-names = "iface",
926					      "bus",
927					      "core",
928					      "iommu",
929					      "vsync";
930
931				iommus = <&mdp_smmu 0>;
932
933				assigned-clocks = <&mmcc MDSS_MDP_CLK>,
934					 <&mmcc MDSS_VSYNC_CLK>;
935				assigned-clock-rates = <300000000>,
936					 <19200000>;
937
938				interconnects = <&mnoc MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
939						<&mnoc MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>,
940						<&mnoc MASTER_ROTATOR &bimc SLAVE_EBI_CH0>;
941				interconnect-names = "mdp0-mem", "mdp1-mem", "rotator-mem";
942
943				ports {
944					#address-cells = <1>;
945					#size-cells = <0>;
946
947					port@0 {
948						reg = <0>;
949						mdp5_intf3_out: endpoint {
950							remote-endpoint = <&hdmi_in>;
951						};
952					};
953
954					port@1 {
955						reg = <1>;
956						mdp5_intf1_out: endpoint {
957							remote-endpoint = <&dsi0_in>;
958						};
959					};
960
961					port@2 {
962						reg = <2>;
963						mdp5_intf2_out: endpoint {
964							remote-endpoint = <&dsi1_in>;
965						};
966					};
967				};
968			};
969
970			dsi0: dsi@994000 {
971				compatible = "qcom,mdss-dsi-ctrl";
972				reg = <0x00994000 0x400>;
973				reg-names = "dsi_ctrl";
974
975				interrupt-parent = <&mdss>;
976				interrupts = <4>;
977
978				clocks = <&mmcc MDSS_MDP_CLK>,
979					 <&mmcc MDSS_BYTE0_CLK>,
980					 <&mmcc MDSS_AHB_CLK>,
981					 <&mmcc MDSS_AXI_CLK>,
982					 <&mmcc MMSS_MISC_AHB_CLK>,
983					 <&mmcc MDSS_PCLK0_CLK>,
984					 <&mmcc MDSS_ESC0_CLK>;
985				clock-names = "mdp_core",
986					      "byte",
987					      "iface",
988					      "bus",
989					      "core_mmss",
990					      "pixel",
991					      "core";
992				assigned-clocks = <&mmcc BYTE0_CLK_SRC>, <&mmcc PCLK0_CLK_SRC>;
993				assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
994
995				phys = <&dsi0_phy>;
996				phy-names = "dsi";
997				status = "disabled";
998
999				#address-cells = <1>;
1000				#size-cells = <0>;
1001
1002				ports {
1003					#address-cells = <1>;
1004					#size-cells = <0>;
1005
1006					port@0 {
1007						reg = <0>;
1008						dsi0_in: endpoint {
1009							remote-endpoint = <&mdp5_intf1_out>;
1010						};
1011					};
1012
1013					port@1 {
1014						reg = <1>;
1015						dsi0_out: endpoint {
1016						};
1017					};
1018				};
1019			};
1020
1021			dsi0_phy: dsi-phy@994400 {
1022				compatible = "qcom,dsi-phy-14nm";
1023				reg = <0x00994400 0x100>,
1024				      <0x00994500 0x300>,
1025				      <0x00994800 0x188>;
1026				reg-names = "dsi_phy",
1027					    "dsi_phy_lane",
1028					    "dsi_pll";
1029
1030				#clock-cells = <1>;
1031				#phy-cells = <0>;
1032
1033				clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_BB_CLK1>;
1034				clock-names = "iface", "ref";
1035				status = "disabled";
1036			};
1037
1038			dsi1: dsi@996000 {
1039				compatible = "qcom,mdss-dsi-ctrl";
1040				reg = <0x00996000 0x400>;
1041				reg-names = "dsi_ctrl";
1042
1043				interrupt-parent = <&mdss>;
1044				interrupts = <4>;
1045
1046				clocks = <&mmcc MDSS_MDP_CLK>,
1047					 <&mmcc MDSS_BYTE1_CLK>,
1048					 <&mmcc MDSS_AHB_CLK>,
1049					 <&mmcc MDSS_AXI_CLK>,
1050					 <&mmcc MMSS_MISC_AHB_CLK>,
1051					 <&mmcc MDSS_PCLK1_CLK>,
1052					 <&mmcc MDSS_ESC1_CLK>;
1053				clock-names = "mdp_core",
1054					      "byte",
1055					      "iface",
1056					      "bus",
1057					      "core_mmss",
1058					      "pixel",
1059					      "core";
1060				assigned-clocks = <&mmcc BYTE1_CLK_SRC>, <&mmcc PCLK1_CLK_SRC>;
1061				assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
1062
1063				phys = <&dsi1_phy>;
1064				phy-names = "dsi";
1065				status = "disabled";
1066
1067				#address-cells = <1>;
1068				#size-cells = <0>;
1069
1070				ports {
1071					#address-cells = <1>;
1072					#size-cells = <0>;
1073
1074					port@0 {
1075						reg = <0>;
1076						dsi1_in: endpoint {
1077							remote-endpoint = <&mdp5_intf2_out>;
1078						};
1079					};
1080
1081					port@1 {
1082						reg = <1>;
1083						dsi1_out: endpoint {
1084						};
1085					};
1086				};
1087			};
1088
1089			dsi1_phy: dsi-phy@996400 {
1090				compatible = "qcom,dsi-phy-14nm";
1091				reg = <0x00996400 0x100>,
1092				      <0x00996500 0x300>,
1093				      <0x00996800 0x188>;
1094				reg-names = "dsi_phy",
1095					    "dsi_phy_lane",
1096					    "dsi_pll";
1097
1098				#clock-cells = <1>;
1099				#phy-cells = <0>;
1100
1101				clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_BB_CLK1>;
1102				clock-names = "iface", "ref";
1103				status = "disabled";
1104			};
1105
1106			hdmi: hdmi-tx@9a0000 {
1107				compatible = "qcom,hdmi-tx-8996";
1108				reg =	<0x009a0000 0x50c>,
1109					<0x00070000 0x6158>,
1110					<0x009e0000 0xfff>;
1111				reg-names = "core_physical",
1112					    "qfprom_physical",
1113					    "hdcp_physical";
1114
1115				interrupt-parent = <&mdss>;
1116				interrupts = <8>;
1117
1118				clocks = <&mmcc MDSS_MDP_CLK>,
1119					 <&mmcc MDSS_AHB_CLK>,
1120					 <&mmcc MDSS_HDMI_CLK>,
1121					 <&mmcc MDSS_HDMI_AHB_CLK>,
1122					 <&mmcc MDSS_EXTPCLK_CLK>;
1123				clock-names =
1124					"mdp_core",
1125					"iface",
1126					"core",
1127					"alt_iface",
1128					"extp";
1129
1130				phys = <&hdmi_phy>;
1131				#sound-dai-cells = <1>;
1132
1133				status = "disabled";
1134
1135				ports {
1136					#address-cells = <1>;
1137					#size-cells = <0>;
1138
1139					port@0 {
1140						reg = <0>;
1141						hdmi_in: endpoint {
1142							remote-endpoint = <&mdp5_intf3_out>;
1143						};
1144					};
1145				};
1146			};
1147
1148			hdmi_phy: hdmi-phy@9a0600 {
1149				#phy-cells = <0>;
1150				compatible = "qcom,hdmi-phy-8996";
1151				reg = <0x009a0600 0x1c4>,
1152				      <0x009a0a00 0x124>,
1153				      <0x009a0c00 0x124>,
1154				      <0x009a0e00 0x124>,
1155				      <0x009a1000 0x124>,
1156				      <0x009a1200 0x0c8>;
1157				reg-names = "hdmi_pll",
1158					    "hdmi_tx_l0",
1159					    "hdmi_tx_l1",
1160					    "hdmi_tx_l2",
1161					    "hdmi_tx_l3",
1162					    "hdmi_phy";
1163
1164				clocks = <&mmcc MDSS_AHB_CLK>,
1165					 <&gcc GCC_HDMI_CLKREF_CLK>,
1166					 <&xo_board>;
1167				clock-names = "iface",
1168					      "ref",
1169					      "xo";
1170
1171				#clock-cells = <0>;
1172
1173				status = "disabled";
1174			};
1175		};
1176
1177		gpu: gpu@b00000 {
1178			compatible = "qcom,adreno-530.2", "qcom,adreno";
1179
1180			reg = <0x00b00000 0x3f000>;
1181			reg-names = "kgsl_3d0_reg_memory";
1182
1183			interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
1184
1185			clocks = <&mmcc GPU_GX_GFX3D_CLK>,
1186				<&mmcc GPU_AHB_CLK>,
1187				<&mmcc GPU_GX_RBBMTIMER_CLK>,
1188				<&gcc GCC_BIMC_GFX_CLK>,
1189				<&gcc GCC_MMSS_BIMC_GFX_CLK>;
1190
1191			clock-names = "core",
1192				"iface",
1193				"rbbmtimer",
1194				"mem",
1195				"mem_iface";
1196
1197			interconnects = <&bimc MASTER_GRAPHICS_3D &bimc SLAVE_EBI_CH0>;
1198			interconnect-names = "gfx-mem";
1199
1200			power-domains = <&mmcc GPU_GX_GDSC>;
1201			iommus = <&adreno_smmu 0>;
1202
1203			nvmem-cells = <&speedbin_efuse>;
1204			nvmem-cell-names = "speed_bin";
1205
1206			operating-points-v2 = <&gpu_opp_table>;
1207
1208			status = "disabled";
1209
1210			#cooling-cells = <2>;
1211
1212			gpu_opp_table: opp-table {
1213				compatible = "operating-points-v2";
1214
1215				/*
1216				 * 624Mhz and 560Mhz are only available on speed
1217				 * bin (1 << 0). All the rest are available on
1218				 * all bins of the hardware
1219				 */
1220				opp-624000000 {
1221					opp-hz = /bits/ 64 <624000000>;
1222					opp-supported-hw = <0x01>;
1223				};
1224				opp-560000000 {
1225					opp-hz = /bits/ 64 <560000000>;
1226					opp-supported-hw = <0x01>;
1227				};
1228				opp-510000000 {
1229					opp-hz = /bits/ 64 <510000000>;
1230					opp-supported-hw = <0xFF>;
1231				};
1232				opp-401800000 {
1233					opp-hz = /bits/ 64 <401800000>;
1234					opp-supported-hw = <0xFF>;
1235				};
1236				opp-315000000 {
1237					opp-hz = /bits/ 64 <315000000>;
1238					opp-supported-hw = <0xFF>;
1239				};
1240				opp-214000000 {
1241					opp-hz = /bits/ 64 <214000000>;
1242					opp-supported-hw = <0xFF>;
1243				};
1244				opp-133000000 {
1245					opp-hz = /bits/ 64 <133000000>;
1246					opp-supported-hw = <0xFF>;
1247				};
1248			};
1249
1250			zap-shader {
1251				memory-region = <&gpu_mem>;
1252			};
1253		};
1254
1255		tlmm: pinctrl@1010000 {
1256			compatible = "qcom,msm8996-pinctrl";
1257			reg = <0x01010000 0x300000>;
1258			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
1259			gpio-controller;
1260			gpio-ranges = <&tlmm 0 0 150>;
1261			#gpio-cells = <2>;
1262			interrupt-controller;
1263			#interrupt-cells = <2>;
1264
1265			blsp1_spi1_default: blsp1-spi1-default {
1266				spi {
1267					pins = "gpio0", "gpio1", "gpio3";
1268					function = "blsp_spi1";
1269					drive-strength = <12>;
1270					bias-disable;
1271				};
1272
1273				cs {
1274					pins = "gpio2";
1275					function = "gpio";
1276					drive-strength = <16>;
1277					bias-disable;
1278					output-high;
1279				};
1280			};
1281
1282			blsp1_spi1_sleep: blsp1-spi1-sleep {
1283				pins = "gpio0", "gpio1", "gpio2", "gpio3";
1284				function = "gpio";
1285				drive-strength = <2>;
1286				bias-pull-down;
1287			};
1288
1289			blsp2_uart2_2pins_default: blsp2-uart1-2pins {
1290				pins = "gpio4", "gpio5";
1291				function = "blsp_uart8";
1292				drive-strength = <16>;
1293				bias-disable;
1294			};
1295
1296			blsp2_uart2_2pins_sleep: blsp2-uart1-2pins-sleep {
1297				pins = "gpio4", "gpio5";
1298				function = "gpio";
1299				drive-strength = <2>;
1300				bias-disable;
1301			};
1302
1303			blsp2_i2c2_default: blsp2-i2c2 {
1304				pins = "gpio6", "gpio7";
1305				function = "blsp_i2c8";
1306				drive-strength = <16>;
1307				bias-disable;
1308			};
1309
1310			blsp2_i2c2_sleep: blsp2-i2c2-sleep {
1311				pins = "gpio6", "gpio7";
1312				function = "gpio";
1313				drive-strength = <2>;
1314				bias-disable;
1315			};
1316
1317			cci0_default: cci0-default {
1318				pins = "gpio17", "gpio18";
1319				function = "cci_i2c";
1320				drive-strength = <16>;
1321				bias-disable;
1322			};
1323
1324			camera0_state_on:
1325			camera_rear_default: camera-rear-default {
1326				camera0_mclk: mclk0 {
1327					pins = "gpio13";
1328					function = "cam_mclk";
1329					drive-strength = <16>;
1330					bias-disable;
1331				};
1332
1333				camera0_rst: rst {
1334					pins = "gpio25";
1335					function = "gpio";
1336					drive-strength = <16>;
1337					bias-disable;
1338				};
1339
1340				camera0_pwdn: pwdn {
1341					pins = "gpio26";
1342					function = "gpio";
1343					drive-strength = <16>;
1344					bias-disable;
1345				};
1346			};
1347
1348			cci1_default: cci1-default {
1349				pins = "gpio19", "gpio20";
1350				function = "cci_i2c";
1351				drive-strength = <16>;
1352				bias-disable;
1353			};
1354
1355			camera1_state_on:
1356			camera_board_default: camera-board-default {
1357				mclk1 {
1358					pins = "gpio14";
1359					function = "cam_mclk";
1360					drive-strength = <16>;
1361					bias-disable;
1362				};
1363
1364				pwdn {
1365					pins = "gpio98";
1366					function = "gpio";
1367					drive-strength = <16>;
1368					bias-disable;
1369				};
1370
1371				rst {
1372					pins = "gpio104";
1373					function = "gpio";
1374					drive-strength = <16>;
1375					bias-disable;
1376				};
1377			};
1378
1379			camera2_state_on:
1380			camera_front_default: camera-front-default {
1381				camera2_mclk: mclk2 {
1382					pins = "gpio15";
1383					function = "cam_mclk";
1384					drive-strength = <16>;
1385					bias-disable;
1386				};
1387
1388				camera2_rst: rst {
1389					pins = "gpio23";
1390					function = "gpio";
1391					drive-strength = <16>;
1392					bias-disable;
1393				};
1394
1395				pwdn {
1396					pins = "gpio133";
1397					function = "gpio";
1398					drive-strength = <16>;
1399					bias-disable;
1400				};
1401			};
1402
1403			pcie0_state_on: pcie0-state-on {
1404				perst {
1405					pins = "gpio35";
1406					function = "gpio";
1407					drive-strength = <2>;
1408					bias-pull-down;
1409				};
1410
1411				clkreq {
1412					pins = "gpio36";
1413					function = "pci_e0";
1414					drive-strength = <2>;
1415					bias-pull-up;
1416				};
1417
1418				wake {
1419					pins = "gpio37";
1420					function = "gpio";
1421					drive-strength = <2>;
1422					bias-pull-up;
1423				};
1424			};
1425
1426			pcie0_state_off: pcie0-state-off {
1427				perst {
1428					pins = "gpio35";
1429					function = "gpio";
1430					drive-strength = <2>;
1431					bias-pull-down;
1432				};
1433
1434				clkreq {
1435					pins = "gpio36";
1436					function = "gpio";
1437					drive-strength = <2>;
1438					bias-disable;
1439				};
1440
1441				wake {
1442					pins = "gpio37";
1443					function = "gpio";
1444					drive-strength = <2>;
1445					bias-disable;
1446				};
1447			};
1448
1449			blsp1_uart2_default: blsp1-uart2-default {
1450				pins = "gpio41", "gpio42", "gpio43", "gpio44";
1451				function = "blsp_uart2";
1452				drive-strength = <16>;
1453				bias-disable;
1454			};
1455
1456			blsp1_uart2_sleep: blsp1-uart2-sleep {
1457				pins = "gpio41", "gpio42", "gpio43", "gpio44";
1458				function = "gpio";
1459				drive-strength = <2>;
1460				bias-disable;
1461			};
1462
1463			blsp1_i2c3_default: blsp1-i2c2-default {
1464				pins = "gpio47", "gpio48";
1465				function = "blsp_i2c3";
1466				drive-strength = <16>;
1467				bias-disable;
1468			};
1469
1470			blsp1_i2c3_sleep: blsp1-i2c2-sleep {
1471				pins = "gpio47", "gpio48";
1472				function = "gpio";
1473				drive-strength = <2>;
1474				bias-disable;
1475			};
1476
1477			blsp2_uart3_4pins_default: blsp2-uart2-4pins {
1478				pins = "gpio49", "gpio50", "gpio51", "gpio52";
1479				function = "blsp_uart9";
1480				drive-strength = <16>;
1481				bias-disable;
1482			};
1483
1484			blsp2_uart3_4pins_sleep: blsp2-uart2-4pins-sleep {
1485				pins = "gpio49", "gpio50", "gpio51", "gpio52";
1486				function = "blsp_uart9";
1487				drive-strength = <2>;
1488				bias-disable;
1489			};
1490
1491			blsp2_i2c3_default: blsp2-i2c3 {
1492				pins = "gpio51", "gpio52";
1493				function = "blsp_i2c9";
1494				drive-strength = <16>;
1495				bias-disable;
1496			};
1497
1498			blsp2_i2c3_sleep: blsp2-i2c3-sleep {
1499				pins = "gpio51", "gpio52";
1500				function = "gpio";
1501				drive-strength = <2>;
1502				bias-disable;
1503			};
1504
1505			wcd_intr_default: wcd-intr-default{
1506				pins = "gpio54";
1507				function = "gpio";
1508				drive-strength = <2>;
1509				bias-pull-down;
1510				input-enable;
1511			};
1512
1513			blsp2_i2c1_default: blsp2-i2c1 {
1514				pins = "gpio55", "gpio56";
1515				function = "blsp_i2c7";
1516				drive-strength = <16>;
1517				bias-disable;
1518			};
1519
1520			blsp2_i2c1_sleep: blsp2-i2c0-sleep {
1521				pins = "gpio55", "gpio56";
1522				function = "gpio";
1523				drive-strength = <2>;
1524				bias-disable;
1525			};
1526
1527			blsp2_i2c5_default: blsp2-i2c5 {
1528				pins = "gpio60", "gpio61";
1529				function = "blsp_i2c11";
1530				drive-strength = <2>;
1531				bias-disable;
1532			};
1533
1534			/* Sleep state for BLSP2_I2C5 is missing.. */
1535
1536			cdc_reset_active: cdc-reset-active {
1537				pins = "gpio64";
1538				function = "gpio";
1539				drive-strength = <16>;
1540				bias-pull-down;
1541				output-high;
1542			};
1543
1544			cdc_reset_sleep: cdc-reset-sleep {
1545				pins = "gpio64";
1546				function = "gpio";
1547				drive-strength = <16>;
1548				bias-disable;
1549				output-low;
1550			};
1551
1552			blsp2_spi6_default: blsp2-spi5-default {
1553				spi {
1554					pins = "gpio85", "gpio86", "gpio88";
1555					function = "blsp_spi12";
1556					drive-strength = <12>;
1557					bias-disable;
1558				};
1559
1560				cs {
1561					pins = "gpio87";
1562					function = "gpio";
1563					drive-strength = <16>;
1564					bias-disable;
1565					output-high;
1566				};
1567			};
1568
1569			blsp2_spi6_sleep: blsp2-spi5-sleep {
1570				pins = "gpio85", "gpio86", "gpio87", "gpio88";
1571				function = "gpio";
1572				drive-strength = <2>;
1573				bias-pull-down;
1574			};
1575
1576			blsp2_i2c6_default: blsp2-i2c6 {
1577				pins = "gpio87", "gpio88";
1578				function = "blsp_i2c12";
1579				drive-strength = <16>;
1580				bias-disable;
1581			};
1582
1583			blsp2_i2c6_sleep: blsp2-i2c6-sleep {
1584				pins = "gpio87", "gpio88";
1585				function = "gpio";
1586				drive-strength = <2>;
1587				bias-disable;
1588			};
1589
1590			pcie1_state_on: pcie1-state-on {
1591				perst {
1592					pins = "gpio130";
1593					function = "gpio";
1594					drive-strength = <2>;
1595					bias-pull-down;
1596				};
1597
1598				clkreq {
1599					pins = "gpio131";
1600					function = "pci_e1";
1601					drive-strength = <2>;
1602					bias-pull-up;
1603				};
1604
1605				wake {
1606					pins = "gpio132";
1607					function = "gpio";
1608					drive-strength = <2>;
1609					bias-pull-down;
1610				};
1611			};
1612
1613			pcie1_state_off: pcie1-state-off {
1614				/* Perst is missing? */
1615				clkreq {
1616					pins = "gpio131";
1617					function = "gpio";
1618					drive-strength = <2>;
1619					bias-disable;
1620				};
1621
1622				wake {
1623					pins = "gpio132";
1624					function = "gpio";
1625					drive-strength = <2>;
1626					bias-disable;
1627				};
1628			};
1629
1630			pcie2_state_on: pcie2-state-on {
1631				perst {
1632					pins = "gpio114";
1633					function = "gpio";
1634					drive-strength = <2>;
1635					bias-pull-down;
1636				};
1637
1638				clkreq {
1639					pins = "gpio115";
1640					function = "pci_e2";
1641					drive-strength = <2>;
1642					bias-pull-up;
1643				};
1644
1645				wake {
1646					pins = "gpio116";
1647					function = "gpio";
1648					drive-strength = <2>;
1649					bias-pull-down;
1650				};
1651			};
1652
1653			pcie2_state_off: pcie2-state-off {
1654				/* Perst is missing? */
1655				clkreq {
1656					pins = "gpio115";
1657					function = "gpio";
1658					drive-strength = <2>;
1659					bias-disable;
1660				};
1661
1662				wake {
1663					pins = "gpio116";
1664					function = "gpio";
1665					drive-strength = <2>;
1666					bias-disable;
1667				};
1668			};
1669
1670			sdc1_state_on: sdc1-state-on {
1671				clk {
1672					pins = "sdc1_clk";
1673					bias-disable;
1674					drive-strength = <16>;
1675				};
1676
1677				cmd {
1678					pins = "sdc1_cmd";
1679					bias-pull-up;
1680					drive-strength = <10>;
1681				};
1682
1683				data {
1684					pins = "sdc1_data";
1685					bias-pull-up;
1686					drive-strength = <10>;
1687				};
1688
1689				rclk {
1690					pins = "sdc1_rclk";
1691					bias-pull-down;
1692				};
1693			};
1694
1695			sdc1_state_off: sdc1-state-off {
1696				clk {
1697					pins = "sdc1_clk";
1698					bias-disable;
1699					drive-strength = <2>;
1700				};
1701
1702				cmd {
1703					pins = "sdc1_cmd";
1704					bias-pull-up;
1705					drive-strength = <2>;
1706				};
1707
1708				data {
1709					pins = "sdc1_data";
1710					bias-pull-up;
1711					drive-strength = <2>;
1712				};
1713
1714				rclk {
1715					pins = "sdc1_rclk";
1716					bias-pull-down;
1717				};
1718			};
1719
1720			sdc2_state_on: sdc2-clk-on {
1721				clk {
1722					pins = "sdc2_clk";
1723					bias-disable;
1724					drive-strength = <16>;
1725				};
1726
1727				cmd {
1728					pins = "sdc2_cmd";
1729					bias-pull-up;
1730					drive-strength = <10>;
1731				};
1732
1733				data {
1734					pins = "sdc2_data";
1735					bias-pull-up;
1736					drive-strength = <10>;
1737				};
1738			};
1739
1740			sdc2_state_off: sdc2-clk-off {
1741				clk {
1742					pins = "sdc2_clk";
1743					bias-disable;
1744					drive-strength = <2>;
1745				};
1746
1747				cmd {
1748					pins = "sdc2_cmd";
1749					bias-pull-up;
1750					drive-strength = <2>;
1751				};
1752
1753				data {
1754					pins = "sdc2_data";
1755					bias-pull-up;
1756					drive-strength = <2>;
1757				};
1758			};
1759		};
1760
1761		sram@290000 {
1762			compatible = "qcom,rpm-stats";
1763			reg = <0x00290000 0x10000>;
1764		};
1765
1766		spmi_bus: spmi@400f000 {
1767			compatible = "qcom,spmi-pmic-arb";
1768			reg = <0x0400f000 0x1000>,
1769			      <0x04400000 0x800000>,
1770			      <0x04c00000 0x800000>,
1771			      <0x05800000 0x200000>,
1772			      <0x0400a000 0x002100>;
1773			reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
1774			interrupt-names = "periph_irq";
1775			interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
1776			qcom,ee = <0>;
1777			qcom,channel = <0>;
1778			#address-cells = <2>;
1779			#size-cells = <0>;
1780			interrupt-controller;
1781			#interrupt-cells = <4>;
1782		};
1783
1784		agnoc@0 {
1785			power-domains = <&gcc AGGRE0_NOC_GDSC>;
1786			compatible = "simple-pm-bus";
1787			#address-cells = <1>;
1788			#size-cells = <1>;
1789			ranges;
1790
1791			pcie0: pcie@600000 {
1792				compatible = "qcom,pcie-msm8996";
1793				status = "disabled";
1794				power-domains = <&gcc PCIE0_GDSC>;
1795				bus-range = <0x00 0xff>;
1796				num-lanes = <1>;
1797
1798				reg = <0x00600000 0x2000>,
1799				      <0x0c000000 0xf1d>,
1800				      <0x0c000f20 0xa8>,
1801				      <0x0c100000 0x100000>;
1802				reg-names = "parf", "dbi", "elbi","config";
1803
1804				phys = <&pciephy_0>;
1805				phy-names = "pciephy";
1806
1807				#address-cells = <3>;
1808				#size-cells = <2>;
1809				ranges = <0x01000000 0x0 0x0c200000 0x0c200000 0x0 0x100000>,
1810					<0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>;
1811
1812				device_type = "pci";
1813
1814				interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
1815				interrupt-names = "msi";
1816				#interrupt-cells = <1>;
1817				interrupt-map-mask = <0 0 0 0x7>;
1818				interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
1819						<0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
1820						<0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
1821						<0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
1822
1823				pinctrl-names = "default", "sleep";
1824				pinctrl-0 = <&pcie0_state_on>;
1825				pinctrl-1 = <&pcie0_state_off>;
1826
1827				linux,pci-domain = <0>;
1828
1829				clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
1830					<&gcc GCC_PCIE_0_AUX_CLK>,
1831					<&gcc GCC_PCIE_0_CFG_AHB_CLK>,
1832					<&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
1833					<&gcc GCC_PCIE_0_SLV_AXI_CLK>;
1834
1835				clock-names = "pipe",
1836						"aux",
1837						"cfg",
1838						"bus_master",
1839						"bus_slave";
1840
1841			};
1842
1843			pcie1: pcie@608000 {
1844				compatible = "qcom,pcie-msm8996";
1845				power-domains = <&gcc PCIE1_GDSC>;
1846				bus-range = <0x00 0xff>;
1847				num-lanes = <1>;
1848
1849				status = "disabled";
1850
1851				reg = <0x00608000 0x2000>,
1852				      <0x0d000000 0xf1d>,
1853				      <0x0d000f20 0xa8>,
1854				      <0x0d100000 0x100000>;
1855
1856				reg-names = "parf", "dbi", "elbi","config";
1857
1858				phys = <&pciephy_1>;
1859				phy-names = "pciephy";
1860
1861				#address-cells = <3>;
1862				#size-cells = <2>;
1863				ranges = <0x01000000 0x0 0x0d200000 0x0d200000 0x0 0x100000>,
1864					<0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>;
1865
1866				device_type = "pci";
1867
1868				interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>;
1869				interrupt-names = "msi";
1870				#interrupt-cells = <1>;
1871				interrupt-map-mask = <0 0 0 0x7>;
1872				interrupt-map = <0 0 0 1 &intc 0 272 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
1873						<0 0 0 2 &intc 0 273 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
1874						<0 0 0 3 &intc 0 274 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
1875						<0 0 0 4 &intc 0 275 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
1876
1877				pinctrl-names = "default", "sleep";
1878				pinctrl-0 = <&pcie1_state_on>;
1879				pinctrl-1 = <&pcie1_state_off>;
1880
1881				linux,pci-domain = <1>;
1882
1883				clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
1884					<&gcc GCC_PCIE_1_AUX_CLK>,
1885					<&gcc GCC_PCIE_1_CFG_AHB_CLK>,
1886					<&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
1887					<&gcc GCC_PCIE_1_SLV_AXI_CLK>;
1888
1889				clock-names = "pipe",
1890						"aux",
1891						"cfg",
1892						"bus_master",
1893						"bus_slave";
1894			};
1895
1896			pcie2: pcie@610000 {
1897				compatible = "qcom,pcie-msm8996";
1898				power-domains = <&gcc PCIE2_GDSC>;
1899				bus-range = <0x00 0xff>;
1900				num-lanes = <1>;
1901				status = "disabled";
1902				reg = <0x00610000 0x2000>,
1903				      <0x0e000000 0xf1d>,
1904				      <0x0e000f20 0xa8>,
1905				      <0x0e100000 0x100000>;
1906
1907				reg-names = "parf", "dbi", "elbi","config";
1908
1909				phys = <&pciephy_2>;
1910				phy-names = "pciephy";
1911
1912				#address-cells = <3>;
1913				#size-cells = <2>;
1914				ranges = <0x01000000 0x0 0x0e200000 0x0e200000 0x0 0x100000>,
1915					<0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>;
1916
1917				device_type = "pci";
1918
1919				interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
1920				interrupt-names = "msi";
1921				#interrupt-cells = <1>;
1922				interrupt-map-mask = <0 0 0 0x7>;
1923				interrupt-map = <0 0 0 1 &intc 0 142 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
1924						<0 0 0 2 &intc 0 143 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
1925						<0 0 0 3 &intc 0 144 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
1926						<0 0 0 4 &intc 0 145 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
1927
1928				pinctrl-names = "default", "sleep";
1929				pinctrl-0 = <&pcie2_state_on>;
1930				pinctrl-1 = <&pcie2_state_off>;
1931
1932				linux,pci-domain = <2>;
1933				clocks = <&gcc GCC_PCIE_2_PIPE_CLK>,
1934					<&gcc GCC_PCIE_2_AUX_CLK>,
1935					<&gcc GCC_PCIE_2_CFG_AHB_CLK>,
1936					<&gcc GCC_PCIE_2_MSTR_AXI_CLK>,
1937					<&gcc GCC_PCIE_2_SLV_AXI_CLK>;
1938
1939				clock-names = "pipe",
1940						"aux",
1941						"cfg",
1942						"bus_master",
1943						"bus_slave";
1944			};
1945		};
1946
1947		ufshc: ufshc@624000 {
1948			compatible = "qcom,msm8996-ufshc", "qcom,ufshc",
1949				     "jedec,ufs-2.0";
1950			reg = <0x00624000 0x2500>;
1951			interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
1952
1953			phys = <&ufsphy_lane>;
1954			phy-names = "ufsphy";
1955
1956			power-domains = <&gcc UFS_GDSC>;
1957
1958			clock-names =
1959				"core_clk_src",
1960				"core_clk",
1961				"bus_clk",
1962				"bus_aggr_clk",
1963				"iface_clk",
1964				"core_clk_unipro_src",
1965				"core_clk_unipro",
1966				"core_clk_ice",
1967				"ref_clk",
1968				"tx_lane0_sync_clk",
1969				"rx_lane0_sync_clk";
1970			clocks =
1971				<&gcc UFS_AXI_CLK_SRC>,
1972				<&gcc GCC_UFS_AXI_CLK>,
1973				<&gcc GCC_SYS_NOC_UFS_AXI_CLK>,
1974				<&gcc GCC_AGGRE2_UFS_AXI_CLK>,
1975				<&gcc GCC_UFS_AHB_CLK>,
1976				<&gcc UFS_ICE_CORE_CLK_SRC>,
1977				<&gcc GCC_UFS_UNIPRO_CORE_CLK>,
1978				<&gcc GCC_UFS_ICE_CORE_CLK>,
1979				<&rpmcc RPM_SMD_LN_BB_CLK>,
1980				<&gcc GCC_UFS_TX_SYMBOL_0_CLK>,
1981				<&gcc GCC_UFS_RX_SYMBOL_0_CLK>;
1982			freq-table-hz =
1983				<100000000 200000000>,
1984				<0 0>,
1985				<0 0>,
1986				<0 0>,
1987				<0 0>,
1988				<150000000 300000000>,
1989				<0 0>,
1990				<0 0>,
1991				<0 0>,
1992				<0 0>,
1993				<0 0>;
1994
1995			lanes-per-direction = <1>;
1996			#reset-cells = <1>;
1997			status = "disabled";
1998
1999			ufs_variant {
2000				compatible = "qcom,ufs_variant";
2001			};
2002		};
2003
2004		ufsphy: phy@627000 {
2005			compatible = "qcom,msm8996-qmp-ufs-phy";
2006			reg = <0x00627000 0x1c4>;
2007			#address-cells = <1>;
2008			#size-cells = <1>;
2009			ranges;
2010
2011			clocks = <&gcc GCC_UFS_CLKREF_CLK>;
2012			clock-names = "ref";
2013
2014			resets = <&ufshc 0>;
2015			reset-names = "ufsphy";
2016			status = "disabled";
2017
2018			ufsphy_lane: phy@627400 {
2019				reg = <0x627400 0x12c>,
2020				      <0x627600 0x200>,
2021				      <0x627c00 0x1b4>;
2022				#phy-cells = <0>;
2023			};
2024		};
2025
2026		camss: camss@a00000 {
2027			compatible = "qcom,msm8996-camss";
2028			reg = <0x00a34000 0x1000>,
2029			      <0x00a00030 0x4>,
2030			      <0x00a35000 0x1000>,
2031			      <0x00a00038 0x4>,
2032			      <0x00a36000 0x1000>,
2033			      <0x00a00040 0x4>,
2034			      <0x00a30000 0x100>,
2035			      <0x00a30400 0x100>,
2036			      <0x00a30800 0x100>,
2037			      <0x00a30c00 0x100>,
2038			      <0x00a31000 0x500>,
2039			      <0x00a00020 0x10>,
2040			      <0x00a10000 0x1000>,
2041			      <0x00a14000 0x1000>;
2042			reg-names = "csiphy0",
2043				"csiphy0_clk_mux",
2044				"csiphy1",
2045				"csiphy1_clk_mux",
2046				"csiphy2",
2047				"csiphy2_clk_mux",
2048				"csid0",
2049				"csid1",
2050				"csid2",
2051				"csid3",
2052				"ispif",
2053				"csi_clk_mux",
2054				"vfe0",
2055				"vfe1";
2056			interrupts = <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>,
2057				<GIC_SPI 79 IRQ_TYPE_EDGE_RISING>,
2058				<GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
2059				<GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
2060				<GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
2061				<GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
2062				<GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
2063				<GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
2064				<GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
2065				<GIC_SPI 315 IRQ_TYPE_EDGE_RISING>;
2066			interrupt-names = "csiphy0",
2067				"csiphy1",
2068				"csiphy2",
2069				"csid0",
2070				"csid1",
2071				"csid2",
2072				"csid3",
2073				"ispif",
2074				"vfe0",
2075				"vfe1";
2076			power-domains = <&mmcc VFE0_GDSC>,
2077					<&mmcc VFE1_GDSC>;
2078			clocks = <&mmcc CAMSS_TOP_AHB_CLK>,
2079				<&mmcc CAMSS_ISPIF_AHB_CLK>,
2080				<&mmcc CAMSS_CSI0PHYTIMER_CLK>,
2081				<&mmcc CAMSS_CSI1PHYTIMER_CLK>,
2082				<&mmcc CAMSS_CSI2PHYTIMER_CLK>,
2083				<&mmcc CAMSS_CSI0_AHB_CLK>,
2084				<&mmcc CAMSS_CSI0_CLK>,
2085				<&mmcc CAMSS_CSI0PHY_CLK>,
2086				<&mmcc CAMSS_CSI0PIX_CLK>,
2087				<&mmcc CAMSS_CSI0RDI_CLK>,
2088				<&mmcc CAMSS_CSI1_AHB_CLK>,
2089				<&mmcc CAMSS_CSI1_CLK>,
2090				<&mmcc CAMSS_CSI1PHY_CLK>,
2091				<&mmcc CAMSS_CSI1PIX_CLK>,
2092				<&mmcc CAMSS_CSI1RDI_CLK>,
2093				<&mmcc CAMSS_CSI2_AHB_CLK>,
2094				<&mmcc CAMSS_CSI2_CLK>,
2095				<&mmcc CAMSS_CSI2PHY_CLK>,
2096				<&mmcc CAMSS_CSI2PIX_CLK>,
2097				<&mmcc CAMSS_CSI2RDI_CLK>,
2098				<&mmcc CAMSS_CSI3_AHB_CLK>,
2099				<&mmcc CAMSS_CSI3_CLK>,
2100				<&mmcc CAMSS_CSI3PHY_CLK>,
2101				<&mmcc CAMSS_CSI3PIX_CLK>,
2102				<&mmcc CAMSS_CSI3RDI_CLK>,
2103				<&mmcc CAMSS_AHB_CLK>,
2104				<&mmcc CAMSS_VFE0_CLK>,
2105				<&mmcc CAMSS_CSI_VFE0_CLK>,
2106				<&mmcc CAMSS_VFE0_AHB_CLK>,
2107				<&mmcc CAMSS_VFE0_STREAM_CLK>,
2108				<&mmcc CAMSS_VFE1_CLK>,
2109				<&mmcc CAMSS_CSI_VFE1_CLK>,
2110				<&mmcc CAMSS_VFE1_AHB_CLK>,
2111				<&mmcc CAMSS_VFE1_STREAM_CLK>,
2112				<&mmcc CAMSS_VFE_AHB_CLK>,
2113				<&mmcc CAMSS_VFE_AXI_CLK>;
2114			clock-names = "top_ahb",
2115				"ispif_ahb",
2116				"csiphy0_timer",
2117				"csiphy1_timer",
2118				"csiphy2_timer",
2119				"csi0_ahb",
2120				"csi0",
2121				"csi0_phy",
2122				"csi0_pix",
2123				"csi0_rdi",
2124				"csi1_ahb",
2125				"csi1",
2126				"csi1_phy",
2127				"csi1_pix",
2128				"csi1_rdi",
2129				"csi2_ahb",
2130				"csi2",
2131				"csi2_phy",
2132				"csi2_pix",
2133				"csi2_rdi",
2134				"csi3_ahb",
2135				"csi3",
2136				"csi3_phy",
2137				"csi3_pix",
2138				"csi3_rdi",
2139				"ahb",
2140				"vfe0",
2141				"csi_vfe0",
2142				"vfe0_ahb",
2143				"vfe0_stream",
2144				"vfe1",
2145				"csi_vfe1",
2146				"vfe1_ahb",
2147				"vfe1_stream",
2148				"vfe_ahb",
2149				"vfe_axi";
2150			iommus = <&vfe_smmu 0>,
2151				 <&vfe_smmu 1>,
2152				 <&vfe_smmu 2>,
2153				 <&vfe_smmu 3>;
2154			status = "disabled";
2155			ports {
2156				#address-cells = <1>;
2157				#size-cells = <0>;
2158			};
2159		};
2160
2161		cci: cci@a0c000 {
2162			compatible = "qcom,msm8996-cci";
2163			#address-cells = <1>;
2164			#size-cells = <0>;
2165			reg = <0xa0c000 0x1000>;
2166			interrupts = <GIC_SPI 295 IRQ_TYPE_EDGE_RISING>;
2167			power-domains = <&mmcc CAMSS_GDSC>;
2168			clocks = <&mmcc CAMSS_TOP_AHB_CLK>,
2169				 <&mmcc CAMSS_CCI_AHB_CLK>,
2170				 <&mmcc CAMSS_CCI_CLK>,
2171				 <&mmcc CAMSS_AHB_CLK>;
2172			clock-names = "camss_top_ahb",
2173				      "cci_ahb",
2174				      "cci",
2175				      "camss_ahb";
2176			assigned-clocks = <&mmcc CAMSS_CCI_AHB_CLK>,
2177					  <&mmcc CAMSS_CCI_CLK>;
2178			assigned-clock-rates = <80000000>, <37500000>;
2179			pinctrl-names = "default";
2180			pinctrl-0 = <&cci0_default &cci1_default>;
2181			status = "disabled";
2182
2183			cci_i2c0: i2c-bus@0 {
2184				reg = <0>;
2185				clock-frequency = <400000>;
2186				#address-cells = <1>;
2187				#size-cells = <0>;
2188			};
2189
2190			cci_i2c1: i2c-bus@1 {
2191				reg = <1>;
2192				clock-frequency = <400000>;
2193				#address-cells = <1>;
2194				#size-cells = <0>;
2195			};
2196		};
2197
2198		adreno_smmu: iommu@b40000 {
2199			compatible = "qcom,msm8996-smmu-v2", "qcom,adreno-smmu", "qcom,smmu-v2";
2200			reg = <0x00b40000 0x10000>;
2201
2202			#global-interrupts = <1>;
2203			interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
2204				     <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
2205				     <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>;
2206			#iommu-cells = <1>;
2207
2208			clocks = <&mmcc GPU_AHB_CLK>,
2209				 <&gcc GCC_MMSS_BIMC_GFX_CLK>;
2210			clock-names = "iface", "bus";
2211
2212			power-domains = <&mmcc GPU_GDSC>;
2213		};
2214
2215		venus: video-codec@c00000 {
2216			compatible = "qcom,msm8996-venus";
2217			reg = <0x00c00000 0xff000>;
2218			interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
2219			power-domains = <&mmcc VENUS_GDSC>;
2220			clocks = <&mmcc VIDEO_CORE_CLK>,
2221				 <&mmcc VIDEO_AHB_CLK>,
2222				 <&mmcc VIDEO_AXI_CLK>,
2223				 <&mmcc VIDEO_MAXI_CLK>;
2224			clock-names = "core", "iface", "bus", "mbus";
2225			interconnects = <&mnoc MASTER_VIDEO_P0 &bimc SLAVE_EBI_CH0>,
2226					<&bimc MASTER_AMPSS_M0 &mnoc SLAVE_VENUS_CFG>;
2227			interconnect-names = "video-mem", "cpu-cfg";
2228			iommus = <&venus_smmu 0x00>,
2229				 <&venus_smmu 0x01>,
2230				 <&venus_smmu 0x0a>,
2231				 <&venus_smmu 0x07>,
2232				 <&venus_smmu 0x0e>,
2233				 <&venus_smmu 0x0f>,
2234				 <&venus_smmu 0x08>,
2235				 <&venus_smmu 0x09>,
2236				 <&venus_smmu 0x0b>,
2237				 <&venus_smmu 0x0c>,
2238				 <&venus_smmu 0x0d>,
2239				 <&venus_smmu 0x10>,
2240				 <&venus_smmu 0x11>,
2241				 <&venus_smmu 0x21>,
2242				 <&venus_smmu 0x28>,
2243				 <&venus_smmu 0x29>,
2244				 <&venus_smmu 0x2b>,
2245				 <&venus_smmu 0x2c>,
2246				 <&venus_smmu 0x2d>,
2247				 <&venus_smmu 0x31>;
2248			memory-region = <&venus_mem>;
2249			status = "disabled";
2250
2251			video-decoder {
2252				compatible = "venus-decoder";
2253				clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
2254				clock-names = "core";
2255				power-domains = <&mmcc VENUS_CORE0_GDSC>;
2256			};
2257
2258			video-encoder {
2259				compatible = "venus-encoder";
2260				clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
2261				clock-names = "core";
2262				power-domains = <&mmcc VENUS_CORE1_GDSC>;
2263			};
2264		};
2265
2266		mdp_smmu: iommu@d00000 {
2267			compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
2268			reg = <0x00d00000 0x10000>;
2269
2270			#global-interrupts = <1>;
2271			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
2272				     <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
2273				     <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
2274			#iommu-cells = <1>;
2275			clocks = <&mmcc SMMU_MDP_AHB_CLK>,
2276				 <&mmcc SMMU_MDP_AXI_CLK>;
2277			clock-names = "iface", "bus";
2278
2279			power-domains = <&mmcc MDSS_GDSC>;
2280		};
2281
2282		venus_smmu: iommu@d40000 {
2283			compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
2284			reg = <0x00d40000 0x20000>;
2285			#global-interrupts = <1>;
2286			interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>,
2287				     <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
2288				     <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
2289				     <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>,
2290				     <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
2291				     <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
2292				     <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
2293				     <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
2294			power-domains = <&mmcc MMAGIC_VIDEO_GDSC>;
2295			clocks = <&mmcc SMMU_VIDEO_AHB_CLK>,
2296				 <&mmcc SMMU_VIDEO_AXI_CLK>;
2297			clock-names = "iface", "bus";
2298			#iommu-cells = <1>;
2299			status = "okay";
2300		};
2301
2302		vfe_smmu: iommu@da0000 {
2303			compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
2304			reg = <0x00da0000 0x10000>;
2305
2306			#global-interrupts = <1>;
2307			interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
2308				     <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>,
2309				     <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>;
2310			power-domains = <&mmcc MMAGIC_CAMSS_GDSC>;
2311			clocks = <&mmcc SMMU_VFE_AHB_CLK>,
2312				 <&mmcc SMMU_VFE_AXI_CLK>;
2313			clock-names = "iface",
2314				      "bus";
2315			#iommu-cells = <1>;
2316		};
2317
2318		lpass_q6_smmu: iommu@1600000 {
2319			compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
2320			reg = <0x01600000 0x20000>;
2321			#iommu-cells = <1>;
2322			power-domains = <&gcc HLOS1_VOTE_LPASS_CORE_GDSC>;
2323
2324			#global-interrupts = <1>;
2325			interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
2326		                <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
2327		                <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>,
2328		                <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>,
2329		                <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>,
2330		                <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>,
2331		                <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>,
2332		                <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
2333		                <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
2334		                <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
2335		                <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
2336		                <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
2337		                <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>;
2338
2339			clocks = <&gcc GCC_HLOS1_VOTE_LPASS_CORE_SMMU_CLK>,
2340				 <&gcc GCC_HLOS1_VOTE_LPASS_ADSP_SMMU_CLK>;
2341			clock-names = "iface", "bus";
2342		};
2343
2344		slpi_pil: remoteproc@1c00000 {
2345			compatible = "qcom,msm8996-slpi-pil";
2346			reg = <0x01c00000 0x4000>;
2347
2348			interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>,
2349					      <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
2350					      <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
2351					      <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
2352					      <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
2353			interrupt-names = "wdog",
2354					  "fatal",
2355					  "ready",
2356					  "handover",
2357					  "stop-ack";
2358
2359			clocks = <&xo_board>,
2360				 <&rpmcc RPM_SMD_AGGR2_NOC_CLK>;
2361			clock-names = "xo", "aggre2";
2362
2363			memory-region = <&slpi_mem>;
2364
2365			qcom,smem-states = <&slpi_smp2p_out 0>;
2366			qcom,smem-state-names = "stop";
2367
2368			power-domains = <&rpmpd MSM8996_VDDSSCX>;
2369			power-domain-names = "ssc_cx";
2370
2371			status = "disabled";
2372
2373			smd-edge {
2374				interrupts = <GIC_SPI 176 IRQ_TYPE_EDGE_RISING>;
2375
2376				label = "dsps";
2377				mboxes = <&apcs_glb 25>;
2378				qcom,smd-edge = <3>;
2379				qcom,remote-pid = <3>;
2380			};
2381		};
2382
2383		mss_pil: remoteproc@2080000 {
2384			compatible = "qcom,msm8996-mss-pil";
2385			reg = <0x2080000 0x100>,
2386			      <0x2180000 0x020>;
2387			reg-names = "qdsp6", "rmb";
2388
2389			interrupts-extended = <&intc 0 448 IRQ_TYPE_EDGE_RISING>,
2390					      <&mpss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
2391					      <&mpss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
2392					      <&mpss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
2393					      <&mpss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
2394					      <&mpss_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
2395			interrupt-names = "wdog", "fatal", "ready",
2396					  "handover", "stop-ack",
2397					  "shutdown-ack";
2398
2399			clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
2400				 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
2401				 <&gcc GCC_BOOT_ROM_AHB_CLK>,
2402				 <&xo_board>,
2403				 <&gcc GCC_MSS_GPLL0_DIV_CLK>,
2404				 <&gcc GCC_MSS_SNOC_AXI_CLK>,
2405				 <&gcc GCC_MSS_MNOC_BIMC_AXI_CLK>,
2406				 <&rpmcc RPM_SMD_PCNOC_CLK>,
2407				 <&rpmcc RPM_SMD_QDSS_CLK>;
2408			clock-names = "iface", "bus", "mem", "xo", "gpll0_mss",
2409				      "snoc_axi", "mnoc_axi", "pnoc", "qdss";
2410
2411			resets = <&gcc GCC_MSS_RESTART>;
2412			reset-names = "mss_restart";
2413
2414			power-domains = <&rpmpd MSM8996_VDDCX>,
2415					<&rpmpd MSM8996_VDDMX>;
2416			power-domain-names = "cx", "mx";
2417
2418			qcom,smem-states = <&mpss_smp2p_out 0>;
2419			qcom,smem-state-names = "stop";
2420
2421			qcom,halt-regs = <&tcsr_1 0x3000 0x5000 0x4000>;
2422
2423			status = "disabled";
2424
2425			mba {
2426				memory-region = <&mba_mem>;
2427			};
2428
2429			mpss {
2430				memory-region = <&mpss_mem>;
2431			};
2432
2433			smd-edge {
2434				interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;
2435
2436				label = "mpss";
2437				mboxes = <&apcs_glb 12>;
2438				qcom,smd-edge = <0>;
2439				qcom,remote-pid = <1>;
2440			};
2441		};
2442
2443		stm@3002000 {
2444			compatible = "arm,coresight-stm", "arm,primecell";
2445			reg = <0x3002000 0x1000>,
2446			      <0x8280000 0x180000>;
2447			reg-names = "stm-base", "stm-stimulus-base";
2448
2449			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2450			clock-names = "apb_pclk", "atclk";
2451
2452			out-ports {
2453				port {
2454					stm_out: endpoint {
2455						remote-endpoint =
2456						  <&funnel0_in>;
2457					};
2458				};
2459			};
2460		};
2461
2462		tpiu@3020000 {
2463			compatible = "arm,coresight-tpiu", "arm,primecell";
2464			reg = <0x3020000 0x1000>;
2465
2466			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2467			clock-names = "apb_pclk", "atclk";
2468
2469			in-ports {
2470				port {
2471					tpiu_in: endpoint {
2472						remote-endpoint =
2473						  <&replicator_out1>;
2474					};
2475				};
2476			};
2477		};
2478
2479		funnel@3021000 {
2480			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2481			reg = <0x3021000 0x1000>;
2482
2483			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2484			clock-names = "apb_pclk", "atclk";
2485
2486			in-ports {
2487				#address-cells = <1>;
2488				#size-cells = <0>;
2489
2490				port@7 {
2491					reg = <7>;
2492					funnel0_in: endpoint {
2493						remote-endpoint =
2494						  <&stm_out>;
2495					};
2496				};
2497			};
2498
2499			out-ports {
2500				port {
2501					funnel0_out: endpoint {
2502						remote-endpoint =
2503						  <&merge_funnel_in0>;
2504					};
2505				};
2506			};
2507		};
2508
2509		funnel@3022000 {
2510			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2511			reg = <0x3022000 0x1000>;
2512
2513			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2514			clock-names = "apb_pclk", "atclk";
2515
2516			in-ports {
2517				#address-cells = <1>;
2518				#size-cells = <0>;
2519
2520				port@6 {
2521					reg = <6>;
2522					funnel1_in: endpoint {
2523						remote-endpoint =
2524						  <&apss_merge_funnel_out>;
2525					};
2526				};
2527			};
2528
2529			out-ports {
2530				port {
2531					funnel1_out: endpoint {
2532						remote-endpoint =
2533						  <&merge_funnel_in1>;
2534					};
2535				};
2536			};
2537		};
2538
2539		funnel@3023000 {
2540			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2541			reg = <0x3023000 0x1000>;
2542
2543			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2544			clock-names = "apb_pclk", "atclk";
2545
2546
2547			out-ports {
2548				port {
2549					funnel2_out: endpoint {
2550						remote-endpoint =
2551						  <&merge_funnel_in2>;
2552					};
2553				};
2554			};
2555		};
2556
2557		funnel@3025000 {
2558			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2559			reg = <0x3025000 0x1000>;
2560
2561			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2562			clock-names = "apb_pclk", "atclk";
2563
2564			in-ports {
2565				#address-cells = <1>;
2566				#size-cells = <0>;
2567
2568				port@0 {
2569					reg = <0>;
2570					merge_funnel_in0: endpoint {
2571						remote-endpoint =
2572						  <&funnel0_out>;
2573					};
2574				};
2575
2576				port@1 {
2577					reg = <1>;
2578					merge_funnel_in1: endpoint {
2579						remote-endpoint =
2580						  <&funnel1_out>;
2581					};
2582				};
2583
2584				port@2 {
2585					reg = <2>;
2586					merge_funnel_in2: endpoint {
2587						remote-endpoint =
2588						  <&funnel2_out>;
2589					};
2590				};
2591			};
2592
2593			out-ports {
2594				port {
2595					merge_funnel_out: endpoint {
2596						remote-endpoint =
2597						  <&etf_in>;
2598					};
2599				};
2600			};
2601		};
2602
2603		replicator@3026000 {
2604			compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
2605			reg = <0x3026000 0x1000>;
2606
2607			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2608			clock-names = "apb_pclk", "atclk";
2609
2610			in-ports {
2611				port {
2612					replicator_in: endpoint {
2613						remote-endpoint =
2614						  <&etf_out>;
2615					};
2616				};
2617			};
2618
2619			out-ports {
2620				#address-cells = <1>;
2621				#size-cells = <0>;
2622
2623				port@0 {
2624					reg = <0>;
2625					replicator_out0: endpoint {
2626						remote-endpoint =
2627						  <&etr_in>;
2628					};
2629				};
2630
2631				port@1 {
2632					reg = <1>;
2633					replicator_out1: endpoint {
2634						remote-endpoint =
2635						  <&tpiu_in>;
2636					};
2637				};
2638			};
2639		};
2640
2641		etf@3027000 {
2642			compatible = "arm,coresight-tmc", "arm,primecell";
2643			reg = <0x3027000 0x1000>;
2644
2645			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2646			clock-names = "apb_pclk", "atclk";
2647
2648			in-ports {
2649				port {
2650					etf_in: endpoint {
2651						remote-endpoint =
2652						  <&merge_funnel_out>;
2653					};
2654				};
2655			};
2656
2657			out-ports {
2658				port {
2659					etf_out: endpoint {
2660						remote-endpoint =
2661						  <&replicator_in>;
2662					};
2663				};
2664			};
2665		};
2666
2667		etr@3028000 {
2668			compatible = "arm,coresight-tmc", "arm,primecell";
2669			reg = <0x3028000 0x1000>;
2670
2671			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2672			clock-names = "apb_pclk", "atclk";
2673			arm,scatter-gather;
2674
2675			in-ports {
2676				port {
2677					etr_in: endpoint {
2678						remote-endpoint =
2679						  <&replicator_out0>;
2680					};
2681				};
2682			};
2683		};
2684
2685		debug@3810000 {
2686			compatible = "arm,coresight-cpu-debug", "arm,primecell";
2687			reg = <0x3810000 0x1000>;
2688
2689			clocks = <&rpmcc RPM_QDSS_CLK>;
2690			clock-names = "apb_pclk";
2691
2692			cpu = <&CPU0>;
2693		};
2694
2695		etm@3840000 {
2696			compatible = "arm,coresight-etm4x", "arm,primecell";
2697			reg = <0x3840000 0x1000>;
2698
2699			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2700			clock-names = "apb_pclk", "atclk";
2701
2702			cpu = <&CPU0>;
2703
2704			out-ports {
2705				port {
2706					etm0_out: endpoint {
2707						remote-endpoint =
2708						  <&apss_funnel0_in0>;
2709					};
2710				};
2711			};
2712		};
2713
2714		debug@3910000 {
2715			compatible = "arm,coresight-cpu-debug", "arm,primecell";
2716			reg = <0x3910000 0x1000>;
2717
2718			clocks = <&rpmcc RPM_QDSS_CLK>;
2719			clock-names = "apb_pclk";
2720
2721			cpu = <&CPU1>;
2722		};
2723
2724		etm@3940000 {
2725			compatible = "arm,coresight-etm4x", "arm,primecell";
2726			reg = <0x3940000 0x1000>;
2727
2728			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2729			clock-names = "apb_pclk", "atclk";
2730
2731			cpu = <&CPU1>;
2732
2733			out-ports {
2734				port {
2735					etm1_out: endpoint {
2736						remote-endpoint =
2737						  <&apss_funnel0_in1>;
2738					};
2739				};
2740			};
2741		};
2742
2743		funnel@39b0000 { /* APSS Funnel 0 */
2744			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2745			reg = <0x39b0000 0x1000>;
2746
2747			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2748			clock-names = "apb_pclk", "atclk";
2749
2750			in-ports {
2751				#address-cells = <1>;
2752				#size-cells = <0>;
2753
2754				port@0 {
2755					reg = <0>;
2756					apss_funnel0_in0: endpoint {
2757						remote-endpoint = <&etm0_out>;
2758					};
2759				};
2760
2761				port@1 {
2762					reg = <1>;
2763					apss_funnel0_in1: endpoint {
2764						remote-endpoint = <&etm1_out>;
2765					};
2766				};
2767			};
2768
2769			out-ports {
2770				port {
2771					apss_funnel0_out: endpoint {
2772						remote-endpoint =
2773						  <&apss_merge_funnel_in0>;
2774					};
2775				};
2776			};
2777		};
2778
2779		debug@3a10000 {
2780			compatible = "arm,coresight-cpu-debug", "arm,primecell";
2781			reg = <0x3a10000 0x1000>;
2782
2783			clocks = <&rpmcc RPM_QDSS_CLK>;
2784			clock-names = "apb_pclk";
2785
2786			cpu = <&CPU2>;
2787		};
2788
2789		etm@3a40000 {
2790			compatible = "arm,coresight-etm4x", "arm,primecell";
2791			reg = <0x3a40000 0x1000>;
2792
2793			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2794			clock-names = "apb_pclk", "atclk";
2795
2796			cpu = <&CPU2>;
2797
2798			out-ports {
2799				port {
2800					etm2_out: endpoint {
2801						remote-endpoint =
2802						  <&apss_funnel1_in0>;
2803					};
2804				};
2805			};
2806		};
2807
2808		debug@3b10000 {
2809			compatible = "arm,coresight-cpu-debug", "arm,primecell";
2810			reg = <0x3b10000 0x1000>;
2811
2812			clocks = <&rpmcc RPM_QDSS_CLK>;
2813			clock-names = "apb_pclk";
2814
2815			cpu = <&CPU3>;
2816		};
2817
2818		etm@3b40000 {
2819			compatible = "arm,coresight-etm4x", "arm,primecell";
2820			reg = <0x3b40000 0x1000>;
2821
2822			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2823			clock-names = "apb_pclk", "atclk";
2824
2825			cpu = <&CPU3>;
2826
2827			out-ports {
2828				port {
2829					etm3_out: endpoint {
2830						remote-endpoint =
2831						  <&apss_funnel1_in1>;
2832					};
2833				};
2834			};
2835		};
2836
2837		funnel@3bb0000 { /* APSS Funnel 1 */
2838			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2839			reg = <0x3bb0000 0x1000>;
2840
2841			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2842			clock-names = "apb_pclk", "atclk";
2843
2844			in-ports {
2845				#address-cells = <1>;
2846				#size-cells = <0>;
2847
2848				port@0 {
2849					reg = <0>;
2850					apss_funnel1_in0: endpoint {
2851						remote-endpoint = <&etm2_out>;
2852					};
2853				};
2854
2855				port@1 {
2856					reg = <1>;
2857					apss_funnel1_in1: endpoint {
2858						remote-endpoint = <&etm3_out>;
2859					};
2860				};
2861			};
2862
2863			out-ports {
2864				port {
2865					apss_funnel1_out: endpoint {
2866						remote-endpoint =
2867						  <&apss_merge_funnel_in1>;
2868					};
2869				};
2870			};
2871		};
2872
2873		funnel@3bc0000 {
2874			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
2875			reg = <0x3bc0000 0x1000>;
2876
2877			clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
2878			clock-names = "apb_pclk", "atclk";
2879
2880			in-ports {
2881				#address-cells = <1>;
2882				#size-cells = <0>;
2883
2884				port@0 {
2885					reg = <0>;
2886					apss_merge_funnel_in0: endpoint {
2887						remote-endpoint =
2888						  <&apss_funnel0_out>;
2889					};
2890				};
2891
2892				port@1 {
2893					reg = <1>;
2894					apss_merge_funnel_in1: endpoint {
2895						remote-endpoint =
2896						  <&apss_funnel1_out>;
2897					};
2898				};
2899			};
2900
2901			out-ports {
2902				port {
2903					apss_merge_funnel_out: endpoint {
2904						remote-endpoint =
2905						  <&funnel1_in>;
2906					};
2907				};
2908			};
2909		};
2910
2911		kryocc: clock-controller@6400000 {
2912			compatible = "qcom,msm8996-apcc";
2913			reg = <0x06400000 0x90000>;
2914
2915			clock-names = "xo";
2916			clocks = <&rpmcc RPM_SMD_BB_CLK1>;
2917
2918			#clock-cells = <1>;
2919		};
2920
2921		usb3: usb@6af8800 {
2922			compatible = "qcom,msm8996-dwc3", "qcom,dwc3";
2923			reg = <0x06af8800 0x400>;
2924			#address-cells = <1>;
2925			#size-cells = <1>;
2926			ranges;
2927
2928			interrupts = <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
2929				     <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
2930			interrupt-names = "hs_phy_irq", "ss_phy_irq";
2931
2932			clocks = <&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
2933				 <&gcc GCC_USB30_MASTER_CLK>,
2934				 <&gcc GCC_AGGRE2_USB3_AXI_CLK>,
2935				 <&gcc GCC_USB30_SLEEP_CLK>,
2936				 <&gcc GCC_USB30_MOCK_UTMI_CLK>;
2937			clock-names = "cfg_noc",
2938				      "core",
2939				      "iface",
2940				      "sleep",
2941				      "mock_utmi";
2942
2943			assigned-clocks = <&gcc GCC_USB30_MOCK_UTMI_CLK>,
2944					  <&gcc GCC_USB30_MASTER_CLK>;
2945			assigned-clock-rates = <19200000>, <120000000>;
2946
2947			interconnects = <&a2noc MASTER_USB3 &bimc SLAVE_EBI_CH0>,
2948					<&bimc MASTER_AMPSS_M0 &snoc SLAVE_USB3>;
2949			interconnect-names = "usb-ddr", "apps-usb";
2950
2951			power-domains = <&gcc USB30_GDSC>;
2952			status = "disabled";
2953
2954			usb3_dwc3: usb@6a00000 {
2955				compatible = "snps,dwc3";
2956				reg = <0x06a00000 0xcc00>;
2957				interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
2958				phys = <&hsusb_phy1>, <&ssusb_phy_0>;
2959				phy-names = "usb2-phy", "usb3-phy";
2960				snps,dis_u2_susphy_quirk;
2961				snps,dis_enblslpm_quirk;
2962			};
2963		};
2964
2965		usb3phy: phy@7410000 {
2966			compatible = "qcom,msm8996-qmp-usb3-phy";
2967			reg = <0x07410000 0x1c4>;
2968			#address-cells = <1>;
2969			#size-cells = <1>;
2970			ranges;
2971
2972			clocks = <&gcc GCC_USB3_PHY_AUX_CLK>,
2973				<&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
2974				<&gcc GCC_USB3_CLKREF_CLK>;
2975			clock-names = "aux", "cfg_ahb", "ref";
2976
2977			resets = <&gcc GCC_USB3_PHY_BCR>,
2978				<&gcc GCC_USB3PHY_PHY_BCR>;
2979			reset-names = "phy", "common";
2980			status = "disabled";
2981
2982			ssusb_phy_0: phy@7410200 {
2983				reg = <0x07410200 0x200>,
2984				      <0x07410400 0x130>,
2985				      <0x07410600 0x1a8>;
2986				#phy-cells = <0>;
2987
2988				#clock-cells = <0>;
2989				clock-output-names = "usb3_phy_pipe_clk_src";
2990				clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
2991				clock-names = "pipe0";
2992			};
2993		};
2994
2995		hsusb_phy1: phy@7411000 {
2996			compatible = "qcom,msm8996-qusb2-phy";
2997			reg = <0x07411000 0x180>;
2998			#phy-cells = <0>;
2999
3000			clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
3001				<&gcc GCC_RX1_USB2_CLKREF_CLK>;
3002			clock-names = "cfg_ahb", "ref";
3003
3004			resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
3005			nvmem-cells = <&qusb2p_hstx_trim>;
3006			status = "disabled";
3007		};
3008
3009		hsusb_phy2: phy@7412000 {
3010			compatible = "qcom,msm8996-qusb2-phy";
3011			reg = <0x07412000 0x180>;
3012			#phy-cells = <0>;
3013
3014			clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
3015				<&gcc GCC_RX2_USB2_CLKREF_CLK>;
3016			clock-names = "cfg_ahb", "ref";
3017
3018			resets = <&gcc GCC_QUSB2PHY_SEC_BCR>;
3019			nvmem-cells = <&qusb2s_hstx_trim>;
3020			status = "disabled";
3021		};
3022
3023		sdhc1: mmc@7464900 {
3024			compatible = "qcom,msm8996-sdhci", "qcom,sdhci-msm-v4";
3025			reg = <0x07464900 0x11c>, <0x07464000 0x800>;
3026			reg-names = "hc", "core";
3027
3028			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
3029					<GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
3030			interrupt-names = "hc_irq", "pwr_irq";
3031
3032			clock-names = "iface", "core", "xo";
3033			clocks = <&gcc GCC_SDCC1_AHB_CLK>,
3034				<&gcc GCC_SDCC1_APPS_CLK>,
3035				<&rpmcc RPM_SMD_BB_CLK1>;
3036			resets = <&gcc GCC_SDCC1_BCR>;
3037
3038			pinctrl-names = "default", "sleep";
3039			pinctrl-0 = <&sdc1_state_on>;
3040			pinctrl-1 = <&sdc1_state_off>;
3041
3042			bus-width = <8>;
3043			non-removable;
3044			status = "disabled";
3045		};
3046
3047		sdhc2: mmc@74a4900 {
3048			compatible = "qcom,msm8996-sdhci", "qcom,sdhci-msm-v4";
3049			reg = <0x074a4900 0x314>, <0x074a4000 0x800>;
3050			reg-names = "hc", "core";
3051
3052			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
3053				      <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
3054			interrupt-names = "hc_irq", "pwr_irq";
3055
3056			clock-names = "iface", "core", "xo";
3057			clocks = <&gcc GCC_SDCC2_AHB_CLK>,
3058				<&gcc GCC_SDCC2_APPS_CLK>,
3059				<&rpmcc RPM_SMD_BB_CLK1>;
3060			resets = <&gcc GCC_SDCC2_BCR>;
3061
3062			pinctrl-names = "default", "sleep";
3063			pinctrl-0 = <&sdc2_state_on>;
3064			pinctrl-1 = <&sdc2_state_off>;
3065
3066			bus-width = <4>;
3067			status = "disabled";
3068		 };
3069
3070		blsp1_dma: dma-controller@7544000 {
3071			compatible = "qcom,bam-v1.7.0";
3072			reg = <0x07544000 0x2b000>;
3073			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
3074			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
3075			clock-names = "bam_clk";
3076			qcom,controlled-remotely;
3077			#dma-cells = <1>;
3078			qcom,ee = <0>;
3079		};
3080
3081		blsp1_uart2: serial@7570000 {
3082			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
3083			reg = <0x07570000 0x1000>;
3084			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
3085			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
3086				 <&gcc GCC_BLSP1_AHB_CLK>;
3087			clock-names = "core", "iface";
3088			pinctrl-names = "default", "sleep";
3089			pinctrl-0 = <&blsp1_uart2_default>;
3090			pinctrl-1 = <&blsp1_uart2_sleep>;
3091			dmas = <&blsp1_dma 2>, <&blsp1_dma 3>;
3092			dma-names = "tx", "rx";
3093			status = "disabled";
3094		};
3095
3096		blsp1_spi1: spi@7575000 {
3097			compatible = "qcom,spi-qup-v2.2.1";
3098			reg = <0x07575000 0x600>;
3099			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
3100			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
3101				 <&gcc GCC_BLSP1_AHB_CLK>;
3102			clock-names = "core", "iface";
3103			pinctrl-names = "default", "sleep";
3104			pinctrl-0 = <&blsp1_spi1_default>;
3105			pinctrl-1 = <&blsp1_spi1_sleep>;
3106			dmas = <&blsp1_dma 12>, <&blsp1_dma 13>;
3107			dma-names = "tx", "rx";
3108			#address-cells = <1>;
3109			#size-cells = <0>;
3110			status = "disabled";
3111		};
3112
3113		blsp1_i2c3: i2c@7577000 {
3114			compatible = "qcom,i2c-qup-v2.2.1";
3115			reg = <0x07577000 0x1000>;
3116			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
3117			clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>,
3118				 <&gcc GCC_BLSP1_AHB_CLK>;
3119			clock-names = "core", "iface";
3120			pinctrl-names = "default", "sleep";
3121			pinctrl-0 = <&blsp1_i2c3_default>;
3122			pinctrl-1 = <&blsp1_i2c3_sleep>;
3123			dmas = <&blsp1_dma 16>, <&blsp1_dma 17>;
3124			dma-names = "tx", "rx";
3125			#address-cells = <1>;
3126			#size-cells = <0>;
3127			status = "disabled";
3128		};
3129
3130		blsp2_dma: dma-controller@7584000 {
3131			compatible = "qcom,bam-v1.7.0";
3132			reg = <0x07584000 0x2b000>;
3133			interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
3134			clocks = <&gcc GCC_BLSP2_AHB_CLK>;
3135			clock-names = "bam_clk";
3136			qcom,controlled-remotely;
3137			#dma-cells = <1>;
3138			qcom,ee = <0>;
3139		};
3140
3141		blsp2_uart2: serial@75b0000 {
3142			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
3143			reg = <0x075b0000 0x1000>;
3144			interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
3145			clocks = <&gcc GCC_BLSP2_UART2_APPS_CLK>,
3146				 <&gcc GCC_BLSP2_AHB_CLK>;
3147			clock-names = "core", "iface";
3148			status = "disabled";
3149		};
3150
3151		blsp2_uart3: serial@75b1000 {
3152			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
3153			reg = <0x075b1000 0x1000>;
3154			interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
3155			clocks = <&gcc GCC_BLSP2_UART3_APPS_CLK>,
3156				 <&gcc GCC_BLSP2_AHB_CLK>;
3157			clock-names = "core", "iface";
3158			status = "disabled";
3159		};
3160
3161		blsp2_i2c1: i2c@75b5000 {
3162			compatible = "qcom,i2c-qup-v2.2.1";
3163			reg = <0x075b5000 0x1000>;
3164			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
3165			clocks = <&gcc GCC_BLSP2_QUP1_I2C_APPS_CLK>,
3166				 <&gcc GCC_BLSP2_AHB_CLK>;
3167			clock-names = "core", "iface";
3168			pinctrl-names = "default", "sleep";
3169			pinctrl-0 = <&blsp2_i2c1_default>;
3170			pinctrl-1 = <&blsp2_i2c1_sleep>;
3171			dmas = <&blsp2_dma 12>, <&blsp2_dma 13>;
3172			dma-names = "tx", "rx";
3173			#address-cells = <1>;
3174			#size-cells = <0>;
3175			status = "disabled";
3176		};
3177
3178		blsp2_i2c2: i2c@75b6000 {
3179			compatible = "qcom,i2c-qup-v2.2.1";
3180			reg = <0x075b6000 0x1000>;
3181			interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
3182			clocks = <&gcc GCC_BLSP2_QUP2_I2C_APPS_CLK>,
3183				 <&gcc GCC_BLSP2_AHB_CLK>;
3184			clock-names = "core", "iface";
3185			pinctrl-names = "default", "sleep";
3186			pinctrl-0 = <&blsp2_i2c2_default>;
3187			pinctrl-1 = <&blsp2_i2c2_sleep>;
3188			dmas = <&blsp2_dma 14>, <&blsp2_dma 15>;
3189			dma-names = "tx", "rx";
3190			#address-cells = <1>;
3191			#size-cells = <0>;
3192			status = "disabled";
3193		};
3194
3195		blsp2_i2c3: i2c@75b7000 {
3196			compatible = "qcom,i2c-qup-v2.2.1";
3197			reg = <0x075b7000 0x1000>;
3198			interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
3199			clocks = <&gcc GCC_BLSP2_QUP3_I2C_APPS_CLK>,
3200				 <&gcc GCC_BLSP2_AHB_CLK>;
3201			clock-names = "core", "iface";
3202			clock-frequency = <400000>;
3203			pinctrl-names = "default", "sleep";
3204			pinctrl-0 = <&blsp2_i2c3_default>;
3205			pinctrl-1 = <&blsp2_i2c3_sleep>;
3206			dmas = <&blsp2_dma 16>, <&blsp2_dma 17>;
3207			dma-names = "tx", "rx";
3208			#address-cells = <1>;
3209			#size-cells = <0>;
3210			status = "disabled";
3211		};
3212
3213		blsp2_i2c5: i2c@75b9000 {
3214			compatible = "qcom,i2c-qup-v2.2.1";
3215			reg = <0x75b9000 0x1000>;
3216			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
3217			clocks = <&gcc GCC_BLSP2_QUP5_I2C_APPS_CLK>,
3218				 <&gcc GCC_BLSP2_AHB_CLK>;
3219			clock-names = "core", "iface";
3220			pinctrl-names = "default";
3221			pinctrl-0 = <&blsp2_i2c5_default>;
3222			dmas = <&blsp2_dma 20>, <&blsp2_dma 21>;
3223			dma-names = "tx", "rx";
3224			#address-cells = <1>;
3225			#size-cells = <0>;
3226			status = "disabled";
3227		};
3228
3229		blsp2_i2c6: i2c@75ba000 {
3230			compatible = "qcom,i2c-qup-v2.2.1";
3231			reg = <0x75ba000 0x1000>;
3232			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
3233			clocks = <&gcc GCC_BLSP2_QUP6_I2C_APPS_CLK>,
3234				 <&gcc GCC_BLSP2_AHB_CLK>;
3235			clock-names = "core", "iface";
3236			pinctrl-names = "default", "sleep";
3237			pinctrl-0 = <&blsp2_i2c6_default>;
3238			pinctrl-1 = <&blsp2_i2c6_sleep>;
3239			dmas = <&blsp2_dma 22>, <&blsp2_dma 23>;
3240			dma-names = "tx", "rx";
3241			#address-cells = <1>;
3242			#size-cells = <0>;
3243			status = "disabled";
3244		};
3245
3246		blsp2_spi6: spi@75ba000{
3247			compatible = "qcom,spi-qup-v2.2.1";
3248			reg = <0x075ba000 0x600>;
3249			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
3250			clocks = <&gcc GCC_BLSP2_QUP6_SPI_APPS_CLK>,
3251				 <&gcc GCC_BLSP2_AHB_CLK>;
3252			clock-names = "core", "iface";
3253			pinctrl-names = "default", "sleep";
3254			pinctrl-0 = <&blsp2_spi6_default>;
3255			pinctrl-1 = <&blsp2_spi6_sleep>;
3256			dmas = <&blsp2_dma 22>, <&blsp2_dma 23>;
3257			dma-names = "tx", "rx";
3258			#address-cells = <1>;
3259			#size-cells = <0>;
3260			status = "disabled";
3261		};
3262
3263		usb2: usb@76f8800 {
3264			compatible = "qcom,msm8996-dwc3", "qcom,dwc3";
3265			reg = <0x076f8800 0x400>;
3266			#address-cells = <1>;
3267			#size-cells = <1>;
3268			ranges;
3269
3270			clocks = <&gcc GCC_PERIPH_NOC_USB20_AHB_CLK>,
3271				<&gcc GCC_USB20_MASTER_CLK>,
3272				<&gcc GCC_USB20_MOCK_UTMI_CLK>,
3273				<&gcc GCC_USB20_SLEEP_CLK>,
3274				<&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>;
3275			clock-names = "cfg_noc",
3276				      "core",
3277				      "iface",
3278				      "sleep",
3279				      "mock_utmi";
3280
3281			assigned-clocks = <&gcc GCC_USB20_MOCK_UTMI_CLK>,
3282					  <&gcc GCC_USB20_MASTER_CLK>;
3283			assigned-clock-rates = <19200000>, <60000000>;
3284
3285			power-domains = <&gcc USB30_GDSC>;
3286			qcom,select-utmi-as-pipe-clk;
3287			status = "disabled";
3288
3289			usb2_dwc3: usb@7600000 {
3290				compatible = "snps,dwc3";
3291				reg = <0x07600000 0xcc00>;
3292				interrupts = <0 138 IRQ_TYPE_LEVEL_HIGH>;
3293				phys = <&hsusb_phy2>;
3294				phy-names = "usb2-phy";
3295				maximum-speed = "high-speed";
3296				snps,dis_u2_susphy_quirk;
3297				snps,dis_enblslpm_quirk;
3298			};
3299		};
3300
3301		slimbam: dma-controller@9184000 {
3302			compatible = "qcom,bam-v1.7.0";
3303			qcom,controlled-remotely;
3304			reg = <0x09184000 0x32000>;
3305			num-channels = <31>;
3306			interrupts = <0 164 IRQ_TYPE_LEVEL_HIGH>;
3307			#dma-cells = <1>;
3308			qcom,ee = <1>;
3309			qcom,num-ees = <2>;
3310		};
3311
3312		slim_msm: slim@91c0000 {
3313			compatible = "qcom,slim-ngd-v1.5.0";
3314			reg = <0x091c0000 0x2C000>;
3315			reg-names = "ctrl";
3316			interrupts = <0 163 IRQ_TYPE_LEVEL_HIGH>;
3317			dmas = <&slimbam 3>, <&slimbam 4>,
3318				<&slimbam 5>, <&slimbam 6>;
3319			dma-names = "rx", "tx", "tx2", "rx2";
3320			#address-cells = <1>;
3321			#size-cells = <0>;
3322			ngd@1 {
3323				reg = <1>;
3324				#address-cells = <1>;
3325				#size-cells = <1>;
3326
3327				tasha_ifd: tas-ifd {
3328					compatible = "slim217,1a0";
3329					reg = <0 0>;
3330				};
3331
3332				wcd9335: codec@1{
3333					pinctrl-0 = <&cdc_reset_active &wcd_intr_default>;
3334					pinctrl-names = "default";
3335
3336					compatible = "slim217,1a0";
3337					reg = <1 0>;
3338
3339					interrupt-parent = <&tlmm>;
3340					interrupts = <54 IRQ_TYPE_LEVEL_HIGH>,
3341						     <53 IRQ_TYPE_LEVEL_HIGH>;
3342					interrupt-names = "intr1", "intr2";
3343					interrupt-controller;
3344					#interrupt-cells = <1>;
3345					reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
3346
3347					slim-ifc-dev = <&tasha_ifd>;
3348
3349					#sound-dai-cells = <1>;
3350				};
3351			};
3352		};
3353
3354		adsp_pil: remoteproc@9300000 {
3355			compatible = "qcom,msm8996-adsp-pil";
3356			reg = <0x09300000 0x80000>;
3357
3358			interrupts-extended = <&intc 0 162 IRQ_TYPE_EDGE_RISING>,
3359					      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
3360					      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
3361					      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
3362					      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
3363			interrupt-names = "wdog", "fatal", "ready",
3364					  "handover", "stop-ack";
3365
3366			clocks = <&rpmcc RPM_SMD_BB_CLK1>;
3367			clock-names = "xo";
3368
3369			memory-region = <&adsp_mem>;
3370
3371			qcom,smem-states = <&adsp_smp2p_out 0>;
3372			qcom,smem-state-names = "stop";
3373
3374			power-domains = <&rpmpd MSM8996_VDDCX>;
3375			power-domain-names = "cx";
3376
3377			status = "disabled";
3378
3379			smd-edge {
3380				interrupts = <GIC_SPI 156 IRQ_TYPE_EDGE_RISING>;
3381
3382				label = "lpass";
3383				mboxes = <&apcs_glb 8>;
3384				qcom,smd-edge = <1>;
3385				qcom,remote-pid = <2>;
3386				#address-cells = <1>;
3387				#size-cells = <0>;
3388				apr {
3389					power-domains = <&gcc HLOS1_VOTE_LPASS_ADSP_GDSC>;
3390					compatible = "qcom,apr-v2";
3391					qcom,smd-channels = "apr_audio_svc";
3392					qcom,domain = <APR_DOMAIN_ADSP>;
3393					#address-cells = <1>;
3394					#size-cells = <0>;
3395
3396					q6core {
3397						reg = <APR_SVC_ADSP_CORE>;
3398						compatible = "qcom,q6core";
3399					};
3400
3401					q6afe: q6afe {
3402						compatible = "qcom,q6afe";
3403						reg = <APR_SVC_AFE>;
3404						q6afedai: dais {
3405							compatible = "qcom,q6afe-dais";
3406							#address-cells = <1>;
3407							#size-cells = <0>;
3408							#sound-dai-cells = <1>;
3409							hdmi@1 {
3410								reg = <1>;
3411							};
3412						};
3413					};
3414
3415					q6asm: q6asm {
3416						compatible = "qcom,q6asm";
3417						reg = <APR_SVC_ASM>;
3418						q6asmdai: dais {
3419							compatible = "qcom,q6asm-dais";
3420							#address-cells = <1>;
3421							#size-cells = <0>;
3422							#sound-dai-cells = <1>;
3423							iommus = <&lpass_q6_smmu 1>;
3424						};
3425					};
3426
3427					q6adm: q6adm {
3428						compatible = "qcom,q6adm";
3429						reg = <APR_SVC_ADM>;
3430						q6routing: routing {
3431							compatible = "qcom,q6adm-routing";
3432							#sound-dai-cells = <0>;
3433						};
3434					};
3435				};
3436
3437			};
3438		};
3439
3440		apcs_glb: mailbox@9820000 {
3441			compatible = "qcom,msm8996-apcs-hmss-global";
3442			reg = <0x09820000 0x1000>;
3443
3444			#mbox-cells = <1>;
3445		};
3446
3447		timer@9840000 {
3448			#address-cells = <1>;
3449			#size-cells = <1>;
3450			ranges;
3451			compatible = "arm,armv7-timer-mem";
3452			reg = <0x09840000 0x1000>;
3453			clock-frequency = <19200000>;
3454
3455			frame@9850000 {
3456				frame-number = <0>;
3457				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
3458					     <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
3459				reg = <0x09850000 0x1000>,
3460				      <0x09860000 0x1000>;
3461			};
3462
3463			frame@9870000 {
3464				frame-number = <1>;
3465				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
3466				reg = <0x09870000 0x1000>;
3467				status = "disabled";
3468			};
3469
3470			frame@9880000 {
3471				frame-number = <2>;
3472				interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
3473				reg = <0x09880000 0x1000>;
3474				status = "disabled";
3475			};
3476
3477			frame@9890000 {
3478				frame-number = <3>;
3479				interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
3480				reg = <0x09890000 0x1000>;
3481				status = "disabled";
3482			};
3483
3484			frame@98a0000 {
3485				frame-number = <4>;
3486				interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
3487				reg = <0x098a0000 0x1000>;
3488				status = "disabled";
3489			};
3490
3491			frame@98b0000 {
3492				frame-number = <5>;
3493				interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
3494				reg = <0x098b0000 0x1000>;
3495				status = "disabled";
3496			};
3497
3498			frame@98c0000 {
3499				frame-number = <6>;
3500				interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
3501				reg = <0x098c0000 0x1000>;
3502				status = "disabled";
3503			};
3504		};
3505
3506		saw3: syscon@9a10000 {
3507			compatible = "syscon";
3508			reg = <0x09a10000 0x1000>;
3509		};
3510
3511		intc: interrupt-controller@9bc0000 {
3512			compatible = "qcom,msm8996-gic-v3", "arm,gic-v3";
3513			#interrupt-cells = <3>;
3514			interrupt-controller;
3515			#redistributor-regions = <1>;
3516			redistributor-stride = <0x0 0x40000>;
3517			reg = <0x09bc0000 0x10000>,
3518			      <0x09c00000 0x100000>;
3519			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
3520		};
3521	};
3522
3523	sound: sound {
3524	};
3525
3526	thermal-zones {
3527		cpu0-thermal {
3528			polling-delay-passive = <250>;
3529			polling-delay = <1000>;
3530
3531			thermal-sensors = <&tsens0 3>;
3532
3533			trips {
3534				cpu0_alert0: trip-point0 {
3535					temperature = <75000>;
3536					hysteresis = <2000>;
3537					type = "passive";
3538				};
3539
3540				cpu0_crit: cpu_crit {
3541					temperature = <110000>;
3542					hysteresis = <2000>;
3543					type = "critical";
3544				};
3545			};
3546		};
3547
3548		cpu1-thermal {
3549			polling-delay-passive = <250>;
3550			polling-delay = <1000>;
3551
3552			thermal-sensors = <&tsens0 5>;
3553
3554			trips {
3555				cpu1_alert0: trip-point0 {
3556					temperature = <75000>;
3557					hysteresis = <2000>;
3558					type = "passive";
3559				};
3560
3561				cpu1_crit: cpu_crit {
3562					temperature = <110000>;
3563					hysteresis = <2000>;
3564					type = "critical";
3565				};
3566			};
3567		};
3568
3569		cpu2-thermal {
3570			polling-delay-passive = <250>;
3571			polling-delay = <1000>;
3572
3573			thermal-sensors = <&tsens0 8>;
3574
3575			trips {
3576				cpu2_alert0: trip-point0 {
3577					temperature = <75000>;
3578					hysteresis = <2000>;
3579					type = "passive";
3580				};
3581
3582				cpu2_crit: cpu_crit {
3583					temperature = <110000>;
3584					hysteresis = <2000>;
3585					type = "critical";
3586				};
3587			};
3588		};
3589
3590		cpu3-thermal {
3591			polling-delay-passive = <250>;
3592			polling-delay = <1000>;
3593
3594			thermal-sensors = <&tsens0 10>;
3595
3596			trips {
3597				cpu3_alert0: trip-point0 {
3598					temperature = <75000>;
3599					hysteresis = <2000>;
3600					type = "passive";
3601				};
3602
3603				cpu3_crit: cpu_crit {
3604					temperature = <110000>;
3605					hysteresis = <2000>;
3606					type = "critical";
3607				};
3608			};
3609		};
3610
3611		gpu-top-thermal {
3612			polling-delay-passive = <250>;
3613			polling-delay = <1000>;
3614
3615			thermal-sensors = <&tsens1 6>;
3616
3617			trips {
3618				gpu1_alert0: trip-point0 {
3619					temperature = <90000>;
3620					hysteresis = <2000>;
3621					type = "passive";
3622				};
3623			};
3624
3625			cooling-maps {
3626				map0 {
3627					trip = <&gpu1_alert0>;
3628					cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
3629				};
3630			};
3631		};
3632
3633		gpu-bottom-thermal {
3634			polling-delay-passive = <250>;
3635			polling-delay = <1000>;
3636
3637			thermal-sensors = <&tsens1 7>;
3638
3639			trips {
3640				gpu2_alert0: trip-point0 {
3641					temperature = <90000>;
3642					hysteresis = <2000>;
3643					type = "passive";
3644				};
3645			};
3646
3647			cooling-maps {
3648				map0 {
3649					trip = <&gpu2_alert0>;
3650					cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
3651				};
3652			};
3653		};
3654
3655		m4m-thermal {
3656			polling-delay-passive = <250>;
3657			polling-delay = <1000>;
3658
3659			thermal-sensors = <&tsens0 1>;
3660
3661			trips {
3662				m4m_alert0: trip-point0 {
3663					temperature = <90000>;
3664					hysteresis = <2000>;
3665					type = "hot";
3666				};
3667			};
3668		};
3669
3670		l3-or-venus-thermal {
3671			polling-delay-passive = <250>;
3672			polling-delay = <1000>;
3673
3674			thermal-sensors = <&tsens0 2>;
3675
3676			trips {
3677				l3_or_venus_alert0: trip-point0 {
3678					temperature = <90000>;
3679					hysteresis = <2000>;
3680					type = "hot";
3681				};
3682			};
3683		};
3684
3685		cluster0-l2-thermal {
3686			polling-delay-passive = <250>;
3687			polling-delay = <1000>;
3688
3689			thermal-sensors = <&tsens0 7>;
3690
3691			trips {
3692				cluster0_l2_alert0: trip-point0 {
3693					temperature = <90000>;
3694					hysteresis = <2000>;
3695					type = "hot";
3696				};
3697			};
3698		};
3699
3700		cluster1-l2-thermal {
3701			polling-delay-passive = <250>;
3702			polling-delay = <1000>;
3703
3704			thermal-sensors = <&tsens0 12>;
3705
3706			trips {
3707				cluster1_l2_alert0: trip-point0 {
3708					temperature = <90000>;
3709					hysteresis = <2000>;
3710					type = "hot";
3711				};
3712			};
3713		};
3714
3715		camera-thermal {
3716			polling-delay-passive = <250>;
3717			polling-delay = <1000>;
3718
3719			thermal-sensors = <&tsens1 1>;
3720
3721			trips {
3722				camera_alert0: trip-point0 {
3723					temperature = <90000>;
3724					hysteresis = <2000>;
3725					type = "hot";
3726				};
3727			};
3728		};
3729
3730		q6-dsp-thermal {
3731			polling-delay-passive = <250>;
3732			polling-delay = <1000>;
3733
3734			thermal-sensors = <&tsens1 2>;
3735
3736			trips {
3737				q6_dsp_alert0: trip-point0 {
3738					temperature = <90000>;
3739					hysteresis = <2000>;
3740					type = "hot";
3741				};
3742			};
3743		};
3744
3745		mem-thermal {
3746			polling-delay-passive = <250>;
3747			polling-delay = <1000>;
3748
3749			thermal-sensors = <&tsens1 3>;
3750
3751			trips {
3752				mem_alert0: trip-point0 {
3753					temperature = <90000>;
3754					hysteresis = <2000>;
3755					type = "hot";
3756				};
3757			};
3758		};
3759
3760		modemtx-thermal {
3761			polling-delay-passive = <250>;
3762			polling-delay = <1000>;
3763
3764			thermal-sensors = <&tsens1 4>;
3765
3766			trips {
3767				modemtx_alert0: trip-point0 {
3768					temperature = <90000>;
3769					hysteresis = <2000>;
3770					type = "hot";
3771				};
3772			};
3773		};
3774	};
3775
3776	timer {
3777		compatible = "arm,armv8-timer";
3778		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
3779			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
3780			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
3781			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
3782	};
3783};
3784