• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2016-2022, AngeloGioacchino Del Regno
4 *                          <angelogioacchino.delregno@collabora.com>
5 * Copyright (c) 2022, Konrad Dybcio <konrad.dybcio@somainline.org>
6 * Copyright (c) 2022, Marijn Suijten <marijn.suijten@somainline.org>
7 */
8
9#include <dt-bindings/clock/qcom,gcc-msm8976.h>
10#include <dt-bindings/clock/qcom,rpmcc.h>
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/interrupt-controller/irq.h>
14#include <dt-bindings/power/qcom-rpmpd.h>
15
16/ {
17	interrupt-parent = <&intc>;
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		};
28	};
29
30	cpus {
31		#address-cells = <1>;
32		#size-cells = <0>;
33
34		CPU0: cpu@0 {
35			device_type = "cpu";
36			compatible = "arm,cortex-a53";
37			reg = <0x0>;
38			enable-method = "psci";
39			cpu-idle-states = <&little_cpu_sleep_0>;
40			capacity-dmips-mhz = <573>;
41			next-level-cache = <&l2_0>;
42			#cooling-cells = <2>;
43		};
44
45		CPU1: cpu@1 {
46			device_type = "cpu";
47			compatible = "arm,cortex-a53";
48			reg = <0x1>;
49			enable-method = "psci";
50			cpu-idle-states = <&little_cpu_sleep_0>;
51			capacity-dmips-mhz = <573>;
52			next-level-cache = <&l2_0>;
53			#cooling-cells = <2>;
54		};
55
56		CPU2: cpu@2 {
57			device_type = "cpu";
58			compatible = "arm,cortex-a53";
59			reg = <0x2>;
60			enable-method = "psci";
61			cpu-idle-states = <&little_cpu_sleep_0>;
62			capacity-dmips-mhz = <573>;
63			next-level-cache = <&l2_0>;
64			#cooling-cells = <2>;
65		};
66
67		CPU3: cpu@3 {
68			device_type = "cpu";
69			compatible = "arm,cortex-a53";
70			reg = <0x3>;
71			enable-method = "psci";
72			cpu-idle-states = <&little_cpu_sleep_0>;
73			capacity-dmips-mhz = <573>;
74			next-level-cache = <&l2_0>;
75			#cooling-cells = <2>;
76		};
77
78		CPU4: cpu@100 {
79			device_type = "cpu";
80			compatible = "arm,cortex-a72";
81			reg = <0x100>;
82			enable-method = "psci";
83			cpu-idle-states = <&big_cpu_sleep_0 &big_cpu_sleep_1>;
84			capacity-dmips-mhz = <1024>;
85			next-level-cache = <&l2_1>;
86			#cooling-cells = <2>;
87		};
88
89		CPU5: cpu@101 {
90			device_type = "cpu";
91			compatible = "arm,cortex-a72";
92			reg = <0x101>;
93			enable-method = "psci";
94			cpu-idle-states = <&big_cpu_sleep_0 &big_cpu_sleep_1>;
95			capacity-dmips-mhz = <1024>;
96			next-level-cache = <&l2_1>;
97			#cooling-cells = <2>;
98		};
99
100		CPU6: cpu@102 {
101			device_type = "cpu";
102			compatible = "arm,cortex-a72";
103			reg = <0x102>;
104			enable-method = "psci";
105			cpu-idle-states = <&big_cpu_sleep_0 &big_cpu_sleep_1>;
106			capacity-dmips-mhz = <1024>;
107			next-level-cache = <&l2_1>;
108			#cooling-cells = <2>;
109		};
110
111		CPU7: cpu@103 {
112			device_type = "cpu";
113			compatible = "arm,cortex-a72";
114			reg = <0x103>;
115			enable-method = "psci";
116			cpu-idle-states = <&big_cpu_sleep_0 &big_cpu_sleep_1>;
117			capacity-dmips-mhz = <1024>;
118			next-level-cache = <&l2_1>;
119			#cooling-cells = <2>;
120		};
121
122		cpu-map {
123			cluster0 {
124				core0 {
125					cpu = <&CPU0>;
126				};
127
128				core1 {
129					cpu = <&CPU1>;
130				};
131
132				core2 {
133					cpu = <&CPU2>;
134				};
135
136				core3 {
137					cpu = <&CPU3>;
138				};
139			};
140
141			cluster1 {
142				core0 {
143					cpu = <&CPU4>;
144				};
145
146				core1 {
147					cpu = <&CPU5>;
148				};
149
150				core2 {
151					cpu = <&CPU6>;
152				};
153
154				core3 {
155					cpu = <&CPU7>;
156				};
157			};
158		};
159
160		idle-states {
161			entry-method = "psci";
162
163			little_cpu_sleep_0: cpu-sleep-0-0 {
164				compatible = "arm,idle-state";
165				idle-state-name = "little-power-collapse";
166				arm,psci-suspend-param = <0x40000003>;
167				entry-latency-us = <181>;
168				exit-latency-us = <149>;
169				min-residency-us = <703>;
170				local-timer-stop;
171			};
172
173			big_cpu_sleep_0: cpu-sleep-1-0 {
174				compatible = "arm,idle-state";
175				idle-state-name = "big-retention";
176				arm,psci-suspend-param = <0x00000002>;
177				entry-latency-us = <142>;
178				exit-latency-us = <99>;
179				min-residency-us = <242>;
180			};
181
182			big_cpu_sleep_1: cpu-sleep-1-1 {
183				compatible = "arm,idle-state";
184				idle-state-name = "big-power-collapse";
185				arm,psci-suspend-param = <0x40000003>;
186				entry-latency-us = <158>;
187				exit-latency-us = <144>;
188				min-residency-us = <863>;
189				local-timer-stop;
190			};
191		};
192
193		l2_0: l2-cache0 {
194			compatible = "cache";
195			cache-level = <2>;
196			cache-unified;
197		};
198
199		l2_1: l2-cache1 {
200			compatible = "cache";
201			cache-level = <2>;
202			cache-unified;
203		};
204	};
205
206	firmware {
207		scm: scm {
208			compatible = "qcom,scm-msm8976", "qcom,scm";
209			clocks = <&gcc GCC_CRYPTO_CLK>,
210				 <&gcc GCC_CRYPTO_AXI_CLK>,
211				 <&gcc GCC_CRYPTO_AHB_CLK>;
212			clock-names = "core", "bus", "iface";
213			#reset-cells = <1>;
214
215			qcom,dload-mode = <&tcsr 0x6100>;
216		};
217	};
218
219	memory@80000000 {
220		device_type = "memory";
221		/* We expect the bootloader to fill in the size */
222		reg = <0x0 0x80000000 0x0 0x0>;
223	};
224
225	pmu-a53 {
226		compatible = "arm,cortex-a53-pmu";
227		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
228	};
229
230	pmu_a72: pmu-a72 {
231		compatible = "arm,cortex-a72-pmu";
232		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_RAW(0xf0) | IRQ_TYPE_LEVEL_HIGH)>;
233	};
234
235
236	psci {
237		compatible = "arm,psci-1.0";
238		method = "smc";
239	};
240
241	rpm: remoteproc {
242		compatible = "qcom,msm8976-rpm-proc", "qcom,rpm-proc";
243
244		smd-edge {
245			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
246			mboxes = <&apcs 0>;
247			qcom,smd-edge = <15>;
248
249			rpm_requests: rpm-requests {
250				compatible = "qcom,rpm-msm8976", "qcom,smd-rpm";
251				qcom,smd-channels = "rpm_requests";
252
253				rpmcc: clock-controller {
254					compatible = "qcom,rpmcc-msm8976", "qcom,rpmcc";
255					clocks = <&xo_board>;
256					clock-names = "xo";
257					#clock-cells = <1>;
258				};
259
260				rpmpd: power-controller {
261					compatible = "qcom,msm8976-rpmpd";
262					#power-domain-cells = <1>;
263					operating-points-v2 = <&rpmpd_opp_table>;
264
265					rpmpd_opp_table: opp-table {
266						compatible = "operating-points-v2";
267
268						rpmpd_opp_ret: opp1 {
269							opp-level = <RPM_SMD_LEVEL_RETENTION>;
270						};
271
272						rpmpd_opp_ret_plus: opp2 {
273							opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>;
274						};
275
276						rpmpd_opp_min_svs: opp3 {
277							opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
278						};
279
280						rpmpd_opp_low_svs: opp4 {
281							opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
282						};
283
284						rpmpd_opp_svs: opp5 {
285							opp-level = <RPM_SMD_LEVEL_SVS>;
286						};
287
288						rpmpd_opp_svs_plus: opp6 {
289							opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
290						};
291
292						rpmpd_opp_nom: opp7 {
293							opp-level = <RPM_SMD_LEVEL_NOM>;
294						};
295
296						rpmpd_opp_nom_plus: opp8 {
297							opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
298						};
299
300						rpmpd_opp_turbo: opp9 {
301							opp-level = <RPM_SMD_LEVEL_TURBO>;
302						};
303
304						rpmpd_opp_turbo_no_cpr: opp10 {
305							opp-level = <RPM_SMD_LEVEL_TURBO_NO_CPR>;
306						};
307
308						rpmpd_opp_turbo_high: opp111 {
309							opp-level = <RPM_SMD_LEVEL_TURBO_HIGH>;
310						};
311					};
312				};
313			};
314		};
315	};
316
317	reserved-memory {
318		#address-cells = <2>;
319		#size-cells = <2>;
320		ranges;
321
322		ext-region@85b00000 {
323			reg = <0x0 0x85b00000 0x0 0x500000>;
324			no-map;
325		};
326
327		smem@86300000 {
328			compatible = "qcom,smem";
329			reg = <0x0 0x86300000 0x0 0x100000>;
330			no-map;
331
332			hwlocks = <&tcsr_mutex 3>;
333			qcom,rpm-msg-ram = <&rpm_msg_ram>;
334		};
335
336		reserved@86400000 {
337			reg = <0x0 0x86400000 0x0 0x800000>;
338			no-map;
339		};
340
341		mpss_mem: mpss@86c00000 {
342			reg = <0x0 0x86c00000 0x0 0x5600000>;
343			no-map;
344		};
345
346		lpass_mem: lpass@8c200000 {
347			reg = <0x0 0x8c200000 0x0 0x1000000>;
348			no-map;
349		};
350
351		wcnss_fw_mem: wcnss@8d200000 {
352			reg = <0x0 0x8d200000 0x0 0x800000>;
353			no-map;
354		};
355
356		venus_mem: memory@8da00000 {
357			reg = <0x0 0x8da00000 0x0 0x2600000>;
358			no-map;
359		};
360
361		tz-apps@8dd00000 {
362			reg = <0x0 0x8dd00000 0x0 0x1400000>;
363			no-map;
364		};
365	};
366
367	smp2p-hexagon {
368		compatible = "qcom,smp2p";
369		interrupts = <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>;
370		mboxes = <&apcs 10>;
371
372		qcom,local-pid = <0>;
373		qcom,remote-pid = <2>;
374		qcom,smem = <443>, <429>;
375
376		adsp_smp2p_out: master-kernel {
377			qcom,entry-name = "master-kernel";
378
379			#qcom,smem-state-cells = <1>;
380		};
381
382		adsp_smp2p_in: slave-kernel {
383			qcom,entry-name = "slave-kernel";
384
385			interrupt-controller;
386			#interrupt-cells = <2>;
387		};
388	};
389
390	smp2p-modem {
391		compatible = "qcom,smp2p";
392		interrupts = <GIC_SPI 27 IRQ_TYPE_EDGE_RISING>;
393		mboxes = <&apcs 14>;
394
395		qcom,local-pid = <0>;
396		qcom,remote-pid = <1>;
397		qcom,smem = <435>, <428>;
398
399		modem_smp2p_out: master-kernel {
400			qcom,entry-name = "master-kernel";
401
402			#qcom,smem-state-cells = <1>;
403		};
404
405		modem_smp2p_in: slave-kernel {
406			qcom,entry-name = "slave-kernel";
407
408			interrupt-controller;
409			#interrupt-cells = <2>;
410		};
411	};
412
413	smp2p-wcnss {
414		compatible = "qcom,smp2p";
415		interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>;
416		mboxes = <&apcs 18>;
417
418		qcom,local-pid = <0>;
419		qcom,remote-pid = <4>;
420		qcom,smem = <451>, <431>;
421
422		wcnss_smp2p_out: master-kernel {
423			qcom,entry-name = "master-kernel";
424
425			#qcom,smem-state-cells = <1>;
426		};
427
428		wcnss_smp2p_in: slave-kernel {
429			qcom,entry-name = "slave-kernel";
430
431			interrupt-controller;
432			#interrupt-cells = <2>;
433		};
434	};
435
436	smsm {
437		compatible = "qcom,smsm";
438
439		#address-cells = <1>;
440		#size-cells = <0>;
441
442		mboxes = <0>, <&apcs 13>, <&apcs 9>, <&apcs 19>;
443
444		apps_smsm: apps@0 {
445			reg = <0>;
446			#qcom,smem-state-cells = <1>;
447		};
448
449		hexagon_smsm: hexagon@1 {
450			reg = <1>;
451			interrupts = <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>;
452
453			interrupt-controller;
454			#interrupt-cells = <2>;
455		};
456
457		wcnss_smsm: wcnss@6 {
458			reg = <6>;
459			interrupts = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>;
460
461			interrupt-controller;
462			#interrupt-cells = <2>;
463		};
464	};
465
466	soc: soc@0 {
467		#address-cells = <1>;
468		#size-cells = <1>;
469		ranges = <0 0 0 0xffffffff>;
470		compatible = "simple-bus";
471
472		rng@22000 {
473			compatible = "qcom,prng";
474			reg = <0x00022000 0x140>;
475			clocks = <&gcc GCC_PRNG_AHB_CLK>;
476			clock-names = "core";
477		};
478
479		rpm_msg_ram: sram@60000 {
480			compatible = "qcom,rpm-msg-ram";
481			reg = <0x00060000 0x8000>;
482		};
483
484		usb_hs_phy: phy@6c000 {
485			compatible = "qcom,usb-hs-28nm-femtophy";
486			reg = <0x0006c000 0x200>;
487			#phy-cells = <0>;
488			clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
489				 <&gcc GCC_USB_HS_PHY_CFG_AHB_CLK>,
490				 <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
491			clock-names = "ref", "ahb", "sleep";
492			resets = <&gcc RST_QUSB2_PHY_BCR>,
493				 <&gcc RST_USB2_HS_PHY_ONLY_BCR>;
494			reset-names = "phy", "por";
495			status = "disabled";
496		};
497
498		qfprom: qfprom@a4000 {
499			compatible = "qcom,msm8976-qfprom", "qcom,qfprom";
500			reg = <0x000a4000 0x1000>;
501			#address-cells = <1>;
502			#size-cells = <1>;
503
504			tsens_base1: base1@218 {
505				reg = <0x218 1>;
506				bits = <0 8>;
507			};
508
509			tsens_s0_p1: s0-p1@219 {
510				reg = <0x219 0x1>;
511				bits = <0 6>;
512			};
513
514			tsens_s0_p2: s0-p2@219 {
515				reg = <0x219 0x2>;
516				bits = <6 6>;
517			};
518
519			tsens_s1_p1: s1-p1@21a {
520				reg = <0x21a 0x2>;
521				bits = <4 6>;
522			};
523
524			tsens_s1_p2: s1-p2@21b {
525				reg = <0x21b 0x1>;
526				bits = <2 6>;
527			};
528
529			tsens_s2_p1: s2-p1@21c {
530				reg = <0x21c 0x1>;
531				bits = <0 6>;
532			};
533
534			tsens_s2_p2: s2-p2@21c {
535				reg = <0x21c 0x2>;
536				bits = <6 6>;
537			};
538
539			tsens_s3_p1: s3-p1@21d {
540				reg = <0x21d 0x2>;
541				bits = <4 6>;
542			};
543
544			tsens_s3_p2: s3-p2@21e {
545				reg = <0x21e 0x1>;
546				bits = <2 6>;
547			};
548
549			tsens_base2: base2@220 {
550				reg = <0x220 1>;
551				bits = <0 8>;
552			};
553
554			tsens_s4_p1: s4-p1@221 {
555				reg = <0x221 0x1>;
556				bits = <0 6>;
557			};
558
559			tsens_s4_p2: s4-p2@221 {
560				reg = <0x221 0x2>;
561				bits = <6 6>;
562			};
563
564			tsens_s5_p1: s5-p1@222 {
565				reg = <0x222 0x2>;
566				bits = <4 6>;
567			};
568
569			tsens_s5_p2: s5-p2@223 {
570				reg = <0x224 0x1>;
571				bits = <2 6>;
572			};
573
574			tsens_s6_p1: s6-p1@224 {
575				reg = <0x224 0x1>;
576				bits = <0 6>;
577			};
578
579			tsens_s6_p2: s6-p2@224 {
580				reg = <0x224 0x2>;
581				bits = <6 6>;
582			};
583
584			tsens_s7_p1: s7-p1@225 {
585				reg = <0x225 0x2>;
586				bits = <4 6>;
587			};
588
589			tsens_s7_p2: s7-p2@226 {
590				reg = <0x226 0x2>;
591				bits = <2 6>;
592			};
593
594			tsens_mode: mode@228 {
595				reg = <0x228 1>;
596				bits = <0 3>;
597			};
598
599			tsens_s8_p1: s8-p1@228 {
600				reg = <0x228 0x2>;
601				bits = <3 6>;
602			};
603
604			tsens_s8_p2: s8-p2@229 {
605				reg = <0x229 0x1>;
606				bits = <1 6>;
607			};
608
609			tsens_s9_p1: s9-p1@229 {
610				reg = <0x229 0x2>;
611				bits = <7 6>;
612			};
613
614			tsens_s9_p2: s9-p2@22a {
615				reg = <0x22a 0x2>;
616				bits = <5 6>;
617			};
618
619			tsens_s10_p1: s10-p1@22b {
620				reg = <0x22b 0x2>;
621				bits = <3 6>;
622			};
623
624			tsens_s10_p2: s10-p2@22c {
625				reg = <0x22c 0x1>;
626				bits = <1 6>;
627			};
628		};
629
630		tsens: thermal-sensor@4a9000 {
631			compatible = "qcom,msm8976-tsens", "qcom,tsens-v1";
632			reg = <0x004a9000 0x1000>, /* TM */
633			      <0x004a8000 0x1000>; /* SROT */
634			interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
635			interrupt-names = "uplow";
636			nvmem-cells = <&tsens_mode>,
637				      <&tsens_base1>, <&tsens_base2>,
638				      <&tsens_s0_p1>, <&tsens_s0_p2>,
639				      <&tsens_s1_p1>, <&tsens_s1_p2>,
640				      <&tsens_s2_p1>, <&tsens_s2_p2>,
641				      <&tsens_s3_p1>, <&tsens_s3_p2>,
642				      <&tsens_s4_p1>, <&tsens_s4_p2>,
643				      <&tsens_s5_p1>, <&tsens_s5_p2>,
644				      <&tsens_s6_p1>, <&tsens_s6_p2>,
645				      <&tsens_s7_p1>, <&tsens_s7_p2>,
646				      <&tsens_s8_p1>, <&tsens_s8_p2>,
647				      <&tsens_s9_p1>, <&tsens_s9_p2>,
648				      <&tsens_s10_p1>, <&tsens_s10_p2>;
649			nvmem-cell-names = "mode",
650					   "base1", "base2",
651					   "s0_p1", "s0_p2",
652					   "s1_p1", "s1_p2",
653					   "s2_p1", "s2_p2",
654					   "s3_p1", "s3_p2",
655					   "s4_p1", "s4_p2",
656					   "s5_p1", "s5_p2",
657					   "s6_p1", "s6_p2",
658					   "s7_p1", "s7_p2",
659					   "s8_p1", "s8_p2",
660					   "s9_p1", "s9_p2",
661					   "s10_p1", "s10_p2";
662			#qcom,sensors = <11>;
663			#thermal-sensor-cells = <1>;
664		};
665
666		restart@4ab000 {
667			compatible = "qcom,pshold";
668			reg = <0x004ab000 0x4>;
669		};
670
671		tlmm: pinctrl@1000000 {
672			compatible = "qcom,msm8976-pinctrl";
673			reg = <0x01000000 0x300000>;
674			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
675			#gpio-cells = <2>;
676			gpio-controller;
677			gpio-ranges = <&tlmm 0 0 145>;
678			interrupt-controller;
679			#interrupt-cells = <2>;
680
681			spi1_default: spi0-default-state {
682				spi-pins {
683					pins = "gpio0", "gpio1", "gpio3";
684					function = "blsp_spi1";
685					drive-strength = <12>;
686					bias-disable;
687				};
688
689				cs-pins {
690					pins = "gpio2";
691					function = "blsp_spi1";
692					drive-strength = <2>;
693					bias-disable;
694				};
695			};
696
697			spi1_sleep: spi0-sleep-state {
698				spi-pins {
699					pins = "gpio0", "gpio1", "gpio3";
700					function = "gpio";
701					drive-strength = <2>;
702					bias-pull-down;
703				};
704
705				cs-pins {
706					pins = "gpio2";
707					function = "gpio";
708					drive-strength = <2>;
709					bias-disable;
710				};
711			};
712
713			blsp1_i2c2_default: blsp1-i2c2-default-state {
714				pins = "gpio6", "gpio7";
715				function = "blsp_i2c2";
716				drive-strength = <2>;
717				bias-disable;
718			};
719
720			blsp1_i2c2_sleep: blsp1-i2c2-sleep-state {
721				pins = "gpio6", "gpio7";
722				function = "gpio";
723				drive-strength = <2>;
724				bias-disable;
725			};
726
727			blsp1_i2c4_default: blsp1-i2c4-default-state {
728				pins = "gpio14", "gpio15";
729				function = "blsp_i2c4";
730				drive-strength = <2>;
731				bias-disable;
732			};
733
734			blsp1_i2c4_sleep: blsp1-i2c4-sleep-state {
735				pins = "gpio14", "gpio15";
736				function = "gpio";
737				drive-strength = <2>;
738				bias-disable;
739			};
740
741			blsp2_uart2_active: blsp2-uart2-active-state {
742				pins = "gpio20", "gpio21";
743				function = "blsp_uart6";
744				drive-strength = <4>;
745				bias-disable;
746			};
747
748			blsp2_uart2_sleep: blsp2-uart2-sleep-state {
749				pins = "gpio20", "gpio21";
750				function = "gpio";
751				drive-strength = <2>;
752				bias-disable;
753			};
754
755			/* 4 (not 6!) interfaces per QUP, BLSP2 indexes are numbered (n)+4 */
756			blsp2_i2c2_default: blsp2-i2c2-default-state {
757				pins = "gpio22", "gpio23";
758				function = "blsp_i2c6";
759				drive-strength = <2>;
760				bias-disable;
761			};
762
763			blsp2_i2c2_sleep: blsp2-i2c2-sleep-state {
764				pins = "gpio22", "gpio23";
765				function = "gpio";
766				drive-strength = <2>;
767				bias-disable;
768			};
769
770			blsp2_i2c4_default: blsp2-i2c4-default-state {
771				pins = "gpio18", "gpio19";
772				function = "blsp_i2c8";
773				drive-strength = <2>;
774				bias-disable;
775			};
776
777			blsp2_i2c4_sleep: blsp2-i2c4-sleep-state {
778				pins = "gpio18", "gpio19";
779				function = "gpio";
780				drive-strength = <2>;
781				bias-disable;
782			};
783
784			wcss_wlan_default: wcss-wlan-default-state  {
785				wcss-wlan2-pins {
786					pins = "gpio40";
787					function = "wcss_wlan2";
788					drive-strength = <6>;
789					bias-pull-up;
790				};
791
792				wcss-wlan1-pins {
793					pins = "gpio41";
794					function = "wcss_wlan1";
795					drive-strength = <6>;
796					bias-pull-up;
797				};
798
799				wcss-wlan0-pins {
800					pins = "gpio42";
801					function = "wcss_wlan0";
802					drive-strength = <6>;
803					bias-pull-up;
804				};
805
806				wcss-wlan-pins {
807					pins = "gpio43", "gpio44";
808					function = "wcss_wlan";
809					drive-strength = <6>;
810					bias-pull-up;
811				};
812			};
813		};
814
815		gcc: clock-controller@1800000 {
816			compatible = "qcom,gcc-msm8976";
817			reg = <0x01800000 0x80000>;
818			#clock-cells = <1>;
819			#reset-cells = <1>;
820			#power-domain-cells = <1>;
821
822			assigned-clocks = <&gcc GPLL3>;
823			assigned-clock-rates = <1100000000>;
824
825			clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
826				 <&rpmcc RPM_SMD_XO_A_CLK_SRC>,
827				 <&mdss_dsi0_phy 1>,
828				 <&mdss_dsi0_phy 0>,
829				 <&mdss_dsi1_phy 1>,
830				 <&mdss_dsi1_phy 0>;
831			clock-names = "xo",
832				      "xo_a",
833				      "dsi0pll",
834				      "dsi0pllbyte",
835				      "dsi1pll",
836				      "dsi1pllbyte";
837		};
838
839		tcsr_mutex: hwlock@1905000 {
840			compatible = "qcom,tcsr-mutex";
841			reg = <0x01905000 0x20000>;
842			#hwlock-cells = <1>;
843		};
844
845		tcsr: syscon@1937000 {
846			compatible = "qcom,msm8976-tcsr", "syscon";
847			reg = <0x01937000 0x30000>;
848		};
849
850		mdss: display-subsystem@1a00000 {
851			compatible = "qcom,mdss";
852
853			reg = <0x01a00000 0x1000>,
854			      <0x01ab0000 0x3000>;
855			reg-names = "mdss_phys", "vbif_phys";
856
857			power-domains = <&gcc MDSS_GDSC>;
858			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
859
860			interrupt-controller;
861			#interrupt-cells = <1>;
862
863			clocks = <&gcc GCC_MDSS_AHB_CLK>,
864				 <&gcc GCC_MDSS_AXI_CLK>,
865				 <&gcc GCC_MDSS_VSYNC_CLK>,
866				 <&gcc GCC_MDSS_MDP_CLK>;
867			clock-names = "iface",
868				      "bus",
869				      "vsync",
870				      "core";
871
872			#address-cells = <1>;
873			#size-cells = <1>;
874			ranges;
875
876			status = "disabled";
877
878			mdss_mdp: display-controller@1a01000 {
879				compatible = "qcom,msm8976-mdp5", "qcom,mdp5";
880				reg = <0x01a01000 0x89000>;
881				reg-names = "mdp_phys";
882
883				interrupt-parent = <&mdss>;
884				interrupts = <0>;
885
886				clocks = <&gcc GCC_MDSS_AHB_CLK>,
887					 <&gcc GCC_MDSS_AXI_CLK>,
888					 <&gcc GCC_MDSS_MDP_CLK>,
889					 <&gcc GCC_MDSS_VSYNC_CLK>,
890					 <&gcc GCC_MDP_TBU_CLK>,
891					 <&gcc GCC_MDP_RT_TBU_CLK>;
892				clock-names = "iface",
893					      "bus",
894					      "core",
895					      "vsync",
896					      "tbu",
897					      "tbu_rt";
898
899				operating-points-v2 = <&mdp_opp_table>;
900				power-domains = <&gcc MDSS_GDSC>;
901
902				iommus = <&apps_iommu 22>;
903
904				ports {
905					#address-cells = <1>;
906					#size-cells = <0>;
907
908					port@0 {
909						reg = <0>;
910
911						mdss_mdp5_intf1_out: endpoint {
912							remote-endpoint = <&mdss_dsi0_in>;
913						};
914					};
915
916					port@1 {
917						reg = <1>;
918
919						mdss_mdp5_intf2_out: endpoint {
920							remote-endpoint = <&mdss_dsi1_in>;
921						};
922					};
923				};
924
925				mdp_opp_table: opp-table {
926					compatible = "operating-points-v2";
927
928					opp-177780000 {
929						opp-hz = /bits/ 64 <177780000>;
930						required-opps = <&rpmpd_opp_svs>;
931					};
932
933					opp-270000000 {
934						opp-hz = /bits/ 64 <270000000>;
935						required-opps = <&rpmpd_opp_svs_plus>;
936					};
937
938					opp-320000000 {
939						opp-hz = /bits/ 64 <320000000>;
940						required-opps = <&rpmpd_opp_nom>;
941					};
942
943					opp-360000000 {
944						opp-hz = /bits/ 64 <360000000>;
945						required-opps = <&rpmpd_opp_turbo>;
946					};
947				};
948			};
949
950			mdss_dsi0: dsi@1a94000 {
951				compatible = "qcom,msm8976-dsi-ctrl", "qcom,mdss-dsi-ctrl";
952				reg = <0x01a94000 0x300>;
953				reg-names = "dsi_ctrl";
954
955				interrupt-parent = <&mdss>;
956				interrupts = <4>;
957
958				clocks = <&gcc GCC_MDSS_MDP_CLK>,
959					 <&gcc GCC_MDSS_AHB_CLK>,
960					 <&gcc GCC_MDSS_AXI_CLK>,
961					 <&gcc GCC_MDSS_BYTE0_CLK>,
962					 <&gcc GCC_MDSS_PCLK0_CLK>,
963					 <&gcc GCC_MDSS_ESC0_CLK>;
964				clock-names = "mdp_core",
965					      "iface",
966					      "bus",
967					      "byte",
968					      "pixel",
969					      "core";
970
971				assigned-clocks = <&gcc GCC_MDSS_BYTE0_CLK_SRC>,
972						  <&gcc GCC_MDSS_PCLK0_CLK_SRC>;
973				assigned-clock-parents = <&mdss_dsi0_phy 0>,
974							 <&mdss_dsi0_phy 1>;
975
976				phys = <&mdss_dsi0_phy>;
977
978				operating-points-v2 = <&dsi0_opp_table>;
979				power-domains = <&gcc MDSS_GDSC>;
980
981				#address-cells = <1>;
982				#size-cells = <0>;
983
984				status = "disabled";
985
986				ports {
987					#address-cells = <1>;
988					#size-cells = <0>;
989
990					port@0 {
991						reg = <0>;
992
993						mdss_dsi0_in: endpoint {
994							remote-endpoint = <&mdss_mdp5_intf1_out>;
995						};
996					};
997
998					port@1 {
999						reg = <1>;
1000
1001						mdss_dsi0_out: endpoint {
1002						};
1003					};
1004				};
1005
1006				dsi0_opp_table: opp-table {
1007					compatible = "operating-points-v2";
1008
1009					opp-125000000 {
1010						opp-hz = /bits/ 64 <125000000>;
1011						required-opps = <&rpmpd_opp_svs>;
1012					};
1013
1014					opp-161250000 {
1015						opp-hz = /bits/ 64 <161250000>;
1016						required-opps = <&rpmpd_opp_svs_plus>;
1017					};
1018
1019					opp-187500000 {
1020						opp-hz = /bits/ 64 <187500000>;
1021						required-opps = <&rpmpd_opp_nom>;
1022					};
1023				};
1024			};
1025
1026			mdss_dsi1: dsi@1a96000 {
1027				compatible = "qcom,msm8976-dsi-ctrl", "qcom,mdss-dsi-ctrl";
1028				reg = <0x01a96000 0x300>;
1029				reg-names = "dsi_ctrl";
1030
1031				interrupt-parent = <&mdss>;
1032				interrupts = <5>;
1033
1034				clocks = <&gcc GCC_MDSS_MDP_CLK>,
1035					 <&gcc GCC_MDSS_AHB_CLK>,
1036					 <&gcc GCC_MDSS_AXI_CLK>,
1037					 <&gcc GCC_MDSS_BYTE1_CLK>,
1038					 <&gcc GCC_MDSS_PCLK1_CLK>,
1039					 <&gcc GCC_MDSS_ESC1_CLK>;
1040				clock-names = "mdp_core",
1041					      "iface",
1042					      "bus",
1043					      "byte",
1044					      "pixel",
1045					      "core";
1046
1047				assigned-clocks = <&gcc GCC_MDSS_BYTE1_CLK_SRC>,
1048						  <&gcc GCC_MDSS_PCLK1_CLK_SRC>;
1049				assigned-clock-parents = <&mdss_dsi1_phy 0>,
1050							 <&mdss_dsi1_phy 1>;
1051
1052				phys = <&mdss_dsi1_phy>;
1053
1054				operating-points-v2 = <&dsi0_opp_table>;
1055				power-domains = <&gcc MDSS_GDSC>;
1056
1057				#address-cells = <1>;
1058				#size-cells = <0>;
1059
1060				status = "disabled";
1061
1062				ports {
1063					#address-cells = <1>;
1064					#size-cells = <0>;
1065
1066					port@0 {
1067						reg = <0>;
1068
1069						mdss_dsi1_in: endpoint {
1070							remote-endpoint = <&mdss_mdp5_intf2_out>;
1071						};
1072					};
1073
1074					port@1 {
1075						reg = <1>;
1076
1077						mdss_dsi1_out: endpoint {
1078						};
1079					};
1080				};
1081			};
1082
1083			mdss_dsi0_phy: phy@1a94a00 {
1084				compatible = "qcom,dsi-phy-28nm-hpm-fam-b";
1085				reg = <0x01a94a00 0xd4>,
1086				      <0x01a94400 0x280>,
1087				      <0x01a94b80 0x30>;
1088				reg-names = "dsi_pll",
1089					    "dsi_phy",
1090					    "dsi_phy_regulator";
1091
1092				#clock-cells = <1>;
1093				#phy-cells = <0>;
1094
1095				clocks = <&gcc GCC_MDSS_AHB_CLK>,
1096					 <&rpmcc RPM_SMD_XO_CLK_SRC>;
1097				clock-names = "iface", "ref";
1098
1099				status = "disabled";
1100			};
1101
1102			mdss_dsi1_phy: phy@1a96a00 {
1103				compatible = "qcom,dsi-phy-28nm-hpm-fam-b";
1104				reg = <0x01a96a00 0xd4>,
1105				      <0x01a96400 0x280>,
1106				      <0x01a96b80 0x30>;
1107				reg-names = "dsi_pll",
1108					    "dsi_phy",
1109					    "dsi_phy_regulator";
1110
1111				#clock-cells = <1>;
1112				#phy-cells = <0>;
1113
1114				clocks = <&gcc GCC_MDSS_AHB_CLK>,
1115					 <&rpmcc RPM_SMD_XO_CLK_SRC>;
1116				clock-names = "iface", "ref";
1117
1118				status = "disabled";
1119			};
1120		};
1121
1122		adreno_gpu: gpu@1c00000 {
1123			compatible = "qcom,adreno-510.0", "qcom,adreno";
1124
1125			reg = <0x01c00000 0x40000>;
1126			reg-names = "kgsl_3d0_reg_memory";
1127
1128			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
1129			interrupt-names = "kgsl_3d0_irq";
1130
1131			clocks = <&gcc GCC_GFX3D_OXILI_CLK>,
1132				 <&gcc GCC_GFX3D_OXILI_AHB_CLK>,
1133				 <&gcc GCC_GFX3D_OXILI_GMEM_CLK>,
1134				 <&gcc GCC_GFX3D_BIMC_CLK>,
1135				 <&gcc GCC_GFX3D_OXILI_TIMER_CLK>,
1136				 <&gcc GCC_GFX3D_OXILI_AON_CLK>;
1137			clock-names = "core",
1138				      "iface",
1139				      "mem",
1140				      "mem_iface",
1141				      "rbbmtimer",
1142				      "alwayson";
1143
1144			power-domains = <&gcc OXILI_GX_GDSC>;
1145
1146			iommus = <&gpu_iommu 0>;
1147
1148			operating-points-v2 = <&gpu_opp_table>;
1149
1150			status = "disabled";
1151
1152			gpu_opp_table: opp-table {
1153				compatible = "operating-points-v2";
1154
1155				opp-200000000 {
1156					opp-hz = /bits/ 64 <200000000>;
1157					required-opps = <&rpmpd_opp_low_svs>;
1158					opp-supported-hw = <0xff>;
1159				};
1160
1161				opp-300000000 {
1162					opp-hz = /bits/ 64 <300000000>;
1163					required-opps = <&rpmpd_opp_svs>;
1164					opp-supported-hw = <0xff>;
1165				};
1166
1167				opp-400000000 {
1168					opp-hz = /bits/ 64 <400000000>;
1169					required-opps = <&rpmpd_opp_nom>;
1170					opp-supported-hw = <0xff>;
1171				};
1172
1173				opp-480000000 {
1174					opp-hz = /bits/ 64 <480000000>;
1175					required-opps = <&rpmpd_opp_nom_plus>;
1176					opp-supported-hw = <0xff>;
1177				};
1178
1179				opp-540000000 {
1180					opp-hz = /bits/ 64 <540000000>;
1181					required-opps = <&rpmpd_opp_turbo>;
1182					opp-supported-hw = <0xff>;
1183				};
1184
1185				opp-600000000 {
1186					opp-hz = /bits/ 64 <600000000>;
1187					required-opps = <&rpmpd_opp_turbo>;
1188					opp-supported-hw = <0xff>;
1189				};
1190			};
1191		};
1192
1193		apps_iommu: iommu@1ee0000 {
1194			compatible = "qcom,msm8976-iommu", "qcom,msm-iommu-v2";
1195			reg = <0x01ee0000 0x3000>;
1196			ranges  = <0 0x01e20000 0x20000>;
1197
1198			clocks = <&gcc GCC_SMMU_CFG_CLK>,
1199				 <&gcc GCC_APSS_TCU_CLK>;
1200			clock-names = "iface", "bus";
1201
1202			qcom,iommu-secure-id = <17>;
1203
1204			#address-cells = <1>;
1205			#size-cells = <1>;
1206			#iommu-cells = <1>;
1207
1208			/* VFE */
1209			iommu-ctx@15000 {
1210				compatible = "qcom,msm-iommu-v2-ns";
1211				reg = <0x15000 0x1000>;
1212				qcom,ctx-asid = <20>;
1213				interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
1214			};
1215
1216			/* VENUS NS */
1217			iommu-ctx@16000 {
1218				compatible = "qcom,msm-iommu-v2-ns";
1219				reg = <0x16000 0x1000>;
1220				qcom,ctx-asid = <21>;
1221				interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
1222			};
1223
1224			/* MDP0 */
1225			iommu-ctx@17000 {
1226				compatible = "qcom,msm-iommu-v2-ns";
1227				reg = <0x17000 0x1000>;
1228				qcom,ctx-asid = <22>;
1229				interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
1230			};
1231		};
1232
1233		gpu_iommu: iommu@1f08000 {
1234			compatible = "qcom,msm8976-iommu", "qcom,msm-iommu-v2";
1235			ranges = <0 0x01f08000 0x8000>;
1236
1237			clocks = <&gcc GCC_SMMU_CFG_CLK>,
1238				 <&gcc GCC_GFX3D_TCU_CLK>;
1239			clock-names = "iface", "bus";
1240
1241			power-domains = <&gcc OXILI_CX_GDSC>;
1242
1243			qcom,iommu-secure-id = <18>;
1244
1245			#address-cells = <1>;
1246			#size-cells = <1>;
1247			#iommu-cells = <1>;
1248
1249			/* gfx3d user */
1250			iommu-ctx@0 {
1251				compatible = "qcom,msm-iommu-v2-ns";
1252				reg = <0x0 0x1000>;
1253				qcom,ctx-asid = <0>;
1254				interrupts = <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
1255			};
1256
1257			/* gfx3d secure */
1258			iommu-ctx@1000 {
1259				compatible = "qcom,msm-iommu-v2-sec";
1260				reg = <0x1000 0x1000>;
1261				qcom,ctx-asid = <2>;
1262				interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
1263			};
1264
1265			/* gfx3d priv */
1266			iommu-ctx@2000 {
1267				compatible = "qcom,msm-iommu-v2-sec";
1268				reg = <0x2000 0x1000>;
1269				qcom,ctx-asid = <1>;
1270				interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
1271			};
1272		};
1273
1274		spmi_bus: spmi@200f000 {
1275			compatible = "qcom,spmi-pmic-arb";
1276			reg = <0x0200f000 0x1000>,
1277			      <0x02400000 0x800000>,
1278			      <0x02c00000 0x800000>,
1279			      <0x03800000 0x200000>,
1280			      <0x0200a000 0x2100>;
1281			reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
1282			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
1283			interrupt-names = "periph_irq";
1284			qcom,channel = <0>;
1285			qcom,ee = <0>;
1286
1287			#address-cells = <2>;
1288			#size-cells = <0>;
1289			interrupt-controller;
1290			#interrupt-cells = <4>;
1291		};
1292
1293		sdhc_1: mmc@7824900 {
1294			compatible = "qcom,msm8976-sdhci", "qcom,sdhci-msm-v4";
1295			reg = <0x07824900 0x500>, <0x07824000 0x800>;
1296			reg-names = "hc", "core";
1297
1298			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
1299				     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
1300			interrupt-names = "hc_irq", "pwr_irq";
1301
1302			clocks = <&gcc GCC_SDCC1_AHB_CLK>,
1303				 <&gcc GCC_SDCC1_APPS_CLK>,
1304				 <&rpmcc RPM_SMD_XO_CLK_SRC>;
1305			clock-names = "iface", "core", "xo";
1306			status = "disabled";
1307		};
1308
1309		sdhc_2: mmc@7864900 {
1310			compatible = "qcom,msm8976-sdhci", "qcom,sdhci-msm-v4";
1311			reg = <0x07864900 0x11c>, <0x07864000 0x800>;
1312			reg-names = "hc", "core";
1313
1314			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
1315				     <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
1316			interrupt-names = "hc_irq", "pwr_irq";
1317
1318			clocks = <&gcc GCC_SDCC2_AHB_CLK>,
1319				 <&gcc GCC_SDCC2_APPS_CLK>,
1320				 <&rpmcc RPM_SMD_XO_CLK_SRC>;
1321			clock-names = "iface", "core", "xo";
1322			status = "disabled";
1323		};
1324
1325		blsp1_dma: dma-controller@7884000 {
1326			compatible = "qcom,bam-v1.7.0";
1327			reg = <0x07884000 0x1f000>;
1328			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
1329			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
1330			clock-names = "bam_clk";
1331			#dma-cells = <1>;
1332			qcom,ee = <0>;
1333			qcom,controlled-remotely;
1334		};
1335
1336		blsp1_uart1: serial@78af000 {
1337			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
1338			reg = <0x078af000 0x200>;
1339			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
1340			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
1341			clock-names = "core", "iface";
1342			dmas = <&blsp1_dma 0>, <&blsp1_dma 1>;
1343			dma-names = "tx", "rx";
1344			status = "disabled";
1345		};
1346
1347		blsp1_uart2: serial@78b0000 {
1348			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
1349			reg = <0x078b0000 0x200>;
1350			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
1351			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
1352			clock-names = "core", "iface";
1353			dmas = <&blsp1_dma 2>, <&blsp1_dma 3>;
1354			dma-names = "tx", "rx";
1355			status = "disabled";
1356		};
1357
1358		blsp1_spi1: spi@78b5000 {
1359			compatible = "qcom,spi-qup-v2.2.1";
1360			reg = <0x078b5000 0x500>;
1361			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
1362			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
1363			clock-names = "core", "iface";
1364			dmas = <&blsp1_dma 4>, <&blsp1_dma 5>;
1365			dma-names = "tx", "rx";
1366			pinctrl-names = "default", "sleep";
1367			pinctrl-0 = <&spi1_default>;
1368			pinctrl-1 = <&spi1_sleep>;
1369			#address-cells = <1>;
1370			#size-cells = <0>;
1371			status = "disabled";
1372		};
1373
1374		blsp1_i2c2: i2c@78b6000 {
1375			compatible = "qcom,i2c-qup-v2.2.1";
1376			reg = <0x078b6000 0x500>;
1377			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
1378			clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
1379			clock-names = "core", "iface";
1380			clock-frequency = <400000>;
1381			dmas = <&blsp1_dma 6>, <&blsp1_dma 7>;
1382			dma-names = "tx", "rx";
1383			pinctrl-names = "default", "sleep";
1384			pinctrl-0 = <&blsp1_i2c2_default>;
1385			pinctrl-1 = <&blsp1_i2c2_default>;
1386			#address-cells = <1>;
1387			#size-cells = <0>;
1388			status = "disabled";
1389		};
1390
1391		blsp1_i2c4: i2c@78b8000 {
1392			compatible = "qcom,i2c-qup-v2.2.1";
1393			reg = <0x078b8000 0x500>;
1394			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1395			clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
1396			clock-names = "core", "iface";
1397			clock-frequency = <400000>;
1398			dmas = <&blsp1_dma 10>, <&blsp1_dma 11>;
1399			dma-names = "tx", "rx";
1400			pinctrl-names = "default", "sleep";
1401			pinctrl-0 = <&blsp1_i2c4_default>;
1402			pinctrl-1 = <&blsp1_i2c4_sleep>;
1403			#address-cells = <1>;
1404			#size-cells = <0>;
1405			status = "disabled";
1406		};
1407
1408		otg: usb@78db000 {
1409			compatible = "qcom,ci-hdrc";
1410			reg = <0x078db000 0x200>,
1411			      <0x078db200 0x200>;
1412			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
1413				     <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
1414			clocks = <&gcc GCC_USB_HS_AHB_CLK>, <&gcc GCC_USB_HS_SYSTEM_CLK>;
1415			clock-names = "iface", "core";
1416			assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
1417			assigned-clock-rates = <80000000>;
1418			resets = <&gcc RST_USB_HS_BCR>;
1419			reset-names = "core";
1420			ahb-burst-config = <0>;
1421			dr_mode = "peripheral";
1422			phy_type = "ulpi";
1423			phy-names = "usb-phy";
1424			phys = <&usb_hs_phy>;
1425			status = "disabled";
1426			#reset-cells = <1>;
1427		};
1428
1429		sdhc_3: mmc@7a24900 {
1430			compatible = "qcom,msm8976-sdhci", "qcom,sdhci-msm-v4";
1431			reg = <0x07a24900 0x11c>, <0x07a24000 0x800>;
1432			reg-names = "hc", "core";
1433
1434			interrupts = <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>,
1435				     <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>;
1436			interrupt-names = "hc_irq", "pwr_irq";
1437
1438			clocks = <&gcc GCC_SDCC3_AHB_CLK>,
1439				 <&gcc GCC_SDCC3_APPS_CLK>,
1440				 <&rpmcc RPM_SMD_XO_CLK_SRC>;
1441			clock-names = "iface", "core", "xo";
1442
1443			status = "disabled";
1444		};
1445
1446		blsp2_dma: dma-controller@7ac4000 {
1447			compatible = "qcom,bam-v1.7.0";
1448			reg = <0x07ac4000 0x1f000>;
1449			interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
1450			clocks = <&gcc GCC_BLSP2_AHB_CLK>;
1451			clock-names = "bam_clk";
1452			#dma-cells = <1>;
1453			qcom,ee = <0>;
1454			qcom,controlled-remotely;
1455		};
1456
1457		blsp2_uart2: serial@7af0000 {
1458			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
1459			reg = <0x07af0000 0x200>;
1460			interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>;
1461			clocks = <&gcc GCC_BLSP2_UART2_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
1462			clock-names = "core", "iface";
1463			dmas = <&blsp2_dma 0>, <&blsp2_dma 1>;
1464			dma-names = "tx", "rx";
1465			status = "disabled";
1466		};
1467
1468		blsp2_i2c2: i2c@7af6000 {
1469			compatible = "qcom,i2c-qup-v2.2.1";
1470			reg = <0x07af6000 0x600>;
1471			interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
1472			clocks = <&gcc GCC_BLSP2_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
1473			clock-names = "core", "iface";
1474			clock-frequency = <400000>;
1475			dmas = <&blsp2_dma 6>, <&blsp2_dma 7>;
1476			dma-names = "tx", "rx";
1477			pinctrl-names = "default", "sleep";
1478			pinctrl-0 = <&blsp2_i2c2_default>;
1479			pinctrl-1 = <&blsp2_i2c2_sleep>;
1480			#address-cells = <1>;
1481			#size-cells = <0>;
1482			status = "disabled";
1483		};
1484
1485		blsp2_i2c4: i2c@7af8000 {
1486			compatible = "qcom,i2c-qup-v2.2.1";
1487			reg = <0x07af8000 0x600>;
1488			interrupts = <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>;
1489			clocks = <&gcc GCC_BLSP2_QUP4_I2C_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
1490			clock-names = "core", "iface";
1491			clock-frequency = <400000>;
1492			dmas = <&blsp2_dma 10>, <&blsp2_dma 11>;
1493			dma-names = "tx", "rx";
1494			pinctrl-names = "default", "sleep";
1495			pinctrl-0 = <&blsp2_i2c4_default>;
1496			pinctrl-1 = <&blsp2_i2c4_sleep>;
1497			#address-cells = <1>;
1498			#size-cells = <0>;
1499			status = "disabled";
1500		};
1501
1502		wcnss: remoteproc@a204000 {
1503			compatible = "qcom,pronto-v3-pil", "qcom,pronto";
1504			reg = <0x0a204000 0x2000>,
1505			      <0x0a202000 0x1000>,
1506			      <0x0a21b000 0x3000>;
1507			reg-names = "ccu",
1508				    "dxe",
1509				    "pmu";
1510
1511			memory-region = <&wcnss_fw_mem>;
1512
1513			interrupts-extended = <&intc GIC_SPI 149 IRQ_TYPE_EDGE_RISING>,
1514					      <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
1515					      <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
1516					      <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
1517					      <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
1518			interrupt-names = "wdog",
1519					  "fatal",
1520					  "ready",
1521					  "handover",
1522					  "stop-ack";
1523
1524			power-domains = <&rpmpd MSM8976_VDDCX>,
1525					<&rpmpd MSM8976_VDDMX>;
1526			power-domain-names = "cx", "mx";
1527
1528			qcom,smem-states = <&wcnss_smp2p_out 0>;
1529			qcom,smem-state-names = "stop";
1530
1531			pinctrl-0 = <&wcss_wlan_default>;
1532			pinctrl-names = "default";
1533
1534			status = "disabled";
1535
1536			wcnss_iris: iris {
1537				/* Separate chip, compatible is board-specific */
1538				clocks = <&rpmcc RPM_SMD_RF_CLK2>;
1539				clock-names = "xo";
1540			};
1541
1542			smd-edge {
1543				interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>;
1544
1545				mboxes = <&apcs 17>;
1546				qcom,smd-edge = <6>;
1547				qcom,remote-pid = <4>;
1548
1549				label = "pronto";
1550
1551				wcnss_ctrl: wcnss {
1552					compatible = "qcom,wcnss";
1553					qcom,smd-channels = "WCNSS_CTRL";
1554
1555					qcom,mmio = <&wcnss>;
1556
1557					wcnss_bt: bluetooth {
1558						compatible = "qcom,wcnss-bt";
1559					};
1560
1561					wcnss_wifi: wifi {
1562						compatible = "qcom,wcnss-wlan";
1563
1564						interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
1565							     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
1566						interrupt-names = "tx", "rx";
1567
1568						qcom,smem-states = <&apps_smsm 10>,
1569								   <&apps_smsm 9>;
1570						qcom,smem-state-names = "tx-enable",
1571									"tx-rings-empty";
1572					};
1573				};
1574			};
1575		};
1576
1577		intc: interrupt-controller@b000000 {
1578			compatible = "qcom,msm-qgic2";
1579			reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
1580			interrupt-controller;
1581			#interrupt-cells = <3>;
1582		};
1583
1584		apcs: mailbox@b011000 {
1585			compatible = "qcom,msm8976-apcs-kpss-global",
1586				     "qcom,msm8994-apcs-kpss-global", "syscon";
1587			reg = <0x0b011000 0x1000>;
1588			#mbox-cells = <1>;
1589		};
1590
1591		timer@b120000 {
1592			compatible = "arm,armv7-timer-mem";
1593			reg = <0x0b120000 0x1000>;
1594			#address-cells = <1>;
1595			#size-cells = <1>;
1596			ranges;
1597			clock-frequency = <19200000>;
1598
1599			frame@b121000 {
1600				reg = <0x0b121000 0x1000>, <0x0b122000 0x1000>;
1601				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
1602					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
1603				frame-number = <0>;
1604			};
1605
1606			frame@b123000 {
1607				reg = <0x0b123000 0x1000>;
1608				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
1609				frame-number = <1>;
1610				status = "disabled";
1611			};
1612
1613			frame@b124000 {
1614				reg = <0x0b124000 0x1000>;
1615				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
1616				frame-number = <2>;
1617				status = "disabled";
1618			};
1619
1620			frame@b125000 {
1621				reg = <0x0b125000 0x1000>;
1622				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
1623				frame-number = <3>;
1624				status = "disabled";
1625			};
1626
1627			frame@b126000 {
1628				reg = <0x0b126000 0x1000>;
1629				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
1630				frame-number = <4>;
1631				status = "disabled";
1632			};
1633
1634			frame@b127000 {
1635				reg = <0x0b127000 0x1000>;
1636				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
1637				frame-number = <5>;
1638				status = "disabled";
1639			};
1640
1641			frame@b128000 {
1642				reg = <0x0b128000 0x1000>;
1643				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
1644				frame-number = <6>;
1645				status = "disabled";
1646			};
1647		};
1648
1649		imem: sram@8600000 {
1650			compatible = "qcom,msm8976-imem", "syscon", "simple-mfd";
1651			reg = <0x08600000 0x1000>;
1652			#address-cells = <1>;
1653			#size-cells = <1>;
1654
1655			ranges = <0 0x08600000 0x1000>;
1656
1657			pil-reloc@94c {
1658				compatible = "qcom,pil-reloc-info";
1659				reg = <0x94c 0xc8>;
1660			};
1661		};
1662	};
1663
1664	thermal-zones {
1665		aoss0-thermal {
1666			polling-delay-passive = <250>;
1667
1668			thermal-sensors = <&tsens 0>;
1669
1670			trips {
1671				aoss0_alert0: trip-point0 {
1672					temperature = <75000>;
1673					hysteresis = <2000>;
1674					type = "hot";
1675				};
1676			};
1677		};
1678
1679		modem-thermal {
1680			polling-delay-passive = <250>;
1681
1682			thermal-sensors = <&tsens 1>;
1683			trips {
1684				modem_alert0: trip-point0 {
1685					temperature = <75000>;
1686					hysteresis = <2000>;
1687					type = "hot";
1688				};
1689			};
1690		};
1691
1692		qdsp-thermal {
1693			polling-delay-passive = <250>;
1694
1695			thermal-sensors = <&tsens 2>;
1696			trips {
1697				qdsp_alert0: trip-point0 {
1698					temperature = <75000>;
1699					hysteresis = <2000>;
1700					type = "hot";
1701				};
1702			};
1703		};
1704
1705		cam-isp-thermal {
1706			polling-delay-passive = <250>;
1707
1708			thermal-sensors = <&tsens 3>;
1709			trips {
1710				cam_isp_alert0: trip-point0 {
1711					temperature = <75000>;
1712					hysteresis = <2000>;
1713					type = "hot";
1714				};
1715			};
1716		};
1717
1718		cpu4-thermal {
1719			polling-delay-passive = <250>;
1720
1721			thermal-sensors = <&tsens 4>;
1722
1723			trips {
1724				cpu4_alert0: trip-point0 {
1725					temperature = <50000>;
1726					hysteresis = <2000>;
1727					type = "hot";
1728				};
1729				cpu4_alert1: trip-point1 {
1730					temperature = <55000>;
1731					hysteresis = <2000>;
1732					type = "passive";
1733				};
1734				cpu4_crit: cpu-crit {
1735					temperature = <75000>;
1736					hysteresis = <2000>;
1737					type = "critical";
1738				};
1739			};
1740		};
1741
1742		cpu5-thermal {
1743			polling-delay-passive = <250>;
1744
1745			thermal-sensors = <&tsens 5>;
1746
1747			trips {
1748				cpu5_alert0: trip-point0 {
1749					temperature = <50000>;
1750					hysteresis = <2000>;
1751					type = "hot";
1752				};
1753				cpu5_alert1: trip-point1 {
1754					temperature = <55000>;
1755					hysteresis = <2000>;
1756					type = "passive";
1757				};
1758				cpu5_crit: cpu-crit {
1759					temperature = <75000>;
1760					hysteresis = <2000>;
1761					type = "critical";
1762				};
1763			};
1764		};
1765
1766		cpu6-thermal {
1767			polling-delay-passive = <250>;
1768
1769			thermal-sensors = <&tsens 6>;
1770
1771			trips {
1772				cpu6_alert0: trip-point0 {
1773					temperature = <50000>;
1774					hysteresis = <2000>;
1775					type = "hot";
1776				};
1777				cpu6_alert1: trip-point1 {
1778					temperature = <55000>;
1779					hysteresis = <2000>;
1780					type = "passive";
1781				};
1782				cpu6_crit: cpu-crit {
1783					temperature = <75000>;
1784					hysteresis = <2000>;
1785					type = "critical";
1786				};
1787			};
1788		};
1789
1790		cpu7-thermal {
1791			polling-delay-passive = <250>;
1792
1793			thermal-sensors = <&tsens 7>;
1794
1795			trips {
1796				cpu7_alert0: trip-point0 {
1797					temperature = <50000>;
1798					hysteresis = <2000>;
1799					type = "hot";
1800				};
1801				cpu7_alert1: trip-point1 {
1802					temperature = <55000>;
1803					hysteresis = <2000>;
1804					type = "passive";
1805				};
1806				cpu7_crit: cpu-crit {
1807					temperature = <75000>;
1808					hysteresis = <2000>;
1809					type = "critical";
1810				};
1811			};
1812		};
1813
1814		big-l2-thermal {
1815			polling-delay-passive = <250>;
1816
1817			thermal-sensors = <&tsens 8>;
1818
1819			trips {
1820				l2_alert0: trip-point0 {
1821					temperature = <50000>;
1822					hysteresis = <2000>;
1823					type = "hot";
1824				};
1825				l2_alert1: trip-point1 {
1826					temperature = <55000>;
1827					hysteresis = <2000>;
1828					type = "passive";
1829				};
1830				l2_crit: l2-crit {
1831					temperature = <75000>;
1832					hysteresis = <2000>;
1833					type = "critical";
1834				};
1835			};
1836		};
1837
1838		cpu0-thermal {
1839			polling-delay-passive = <250>;
1840
1841			thermal-sensors = <&tsens 9>;
1842
1843			trips {
1844				cpu0_alert0: trip-point0 {
1845					temperature = <50000>;
1846					hysteresis = <2000>;
1847					type = "hot";
1848				};
1849				cpu0_alert1: trip-point1 {
1850					temperature = <55000>;
1851					hysteresis = <2000>;
1852					type = "passive";
1853				};
1854				cpu0_crit: cpu-crit {
1855					temperature = <75000>;
1856					hysteresis = <2000>;
1857					type = "critical";
1858				};
1859			};
1860		};
1861
1862		gpu-thermal {
1863			polling-delay-passive = <250>;
1864
1865			thermal-sensors = <&tsens 10>;
1866
1867			trips {
1868				gpu_alert0: trip-point0 {
1869					temperature = <50000>;
1870					hysteresis = <2000>;
1871					type = "hot";
1872				};
1873				gpu_alert1: trip-point1 {
1874					temperature = <55000>;
1875					hysteresis = <2000>;
1876					type = "passive";
1877				};
1878				gpu_crit: gpu-crit {
1879					temperature = <75000>;
1880					hysteresis = <2000>;
1881					type = "critical";
1882				};
1883			};
1884		};
1885	};
1886
1887	timer {
1888		compatible = "arm,armv8-timer";
1889		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
1890			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
1891			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
1892			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
1893		clock-frequency = <19200000>;
1894	};
1895};
1896