1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/interrupt-controller/arm-gic.h>
9#include <dt-bindings/clock/qcom,gcc-msm8974.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/power/qcom-rpmpd.h>
12#include <dt-bindings/reset/qcom,gcc-msm8974.h>
13
14/ {
15	#address-cells = <1>;
16	#size-cells = <1>;
17	interrupt-parent = <&intc>;
18
19	chosen { };
20
21	memory@0 {
22		device_type = "memory";
23		reg = <0x0 0x0>;
24	};
25
26	clocks {
27		xo_board: xo_board {
28			compatible = "fixed-clock";
29			#clock-cells = <0>;
30			clock-frequency = <19200000>;
31		};
32
33		sleep_clk: sleep_clk {
34			compatible = "fixed-clock";
35			#clock-cells = <0>;
36			clock-frequency = <32768>;
37		};
38	};
39
40	firmware {
41		scm {
42			compatible = "qcom,scm-msm8226", "qcom,scm";
43			clocks = <&gcc GCC_CE1_CLK>, <&gcc GCC_CE1_AXI_CLK>, <&gcc GCC_CE1_AHB_CLK>;
44			clock-names = "core", "bus", "iface";
45		};
46	};
47
48	reserved-memory {
49		#address-cells = <1>;
50		#size-cells = <1>;
51		ranges;
52
53		smem_region: smem@3000000 {
54			reg = <0x3000000 0x100000>;
55			no-map;
56		};
57
58		adsp_region: adsp@dc00000 {
59			reg = <0x0dc00000 0x1900000>;
60			no-map;
61		};
62	};
63
64	smd {
65		compatible = "qcom,smd";
66
67		rpm {
68			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
69			qcom,ipc = <&apcs 8 0>;
70			qcom,smd-edge = <15>;
71
72			rpm_requests: rpm-requests {
73				compatible = "qcom,rpm-msm8226";
74				qcom,smd-channels = "rpm_requests";
75
76				rpmpd: power-controller {
77					compatible = "qcom,msm8226-rpmpd";
78					#power-domain-cells = <1>;
79					operating-points-v2 = <&rpmpd_opp_table>;
80
81					rpmpd_opp_table: opp-table {
82						compatible = "operating-points-v2";
83
84						rpmpd_opp_ret: opp1 {
85							opp-level = <1>;
86						};
87						rpmpd_opp_svs_krait: opp2 {
88							opp-level = <2>;
89						};
90						rpmpd_opp_svs_soc: opp3 {
91							opp-level = <3>;
92						};
93						rpmpd_opp_nom: opp4 {
94							opp-level = <4>;
95						};
96						rpmpd_opp_turbo: opp5 {
97							opp-level = <5>;
98						};
99						rpmpd_opp_super_turbo: opp6 {
100							opp-level = <6>;
101						};
102					};
103				};
104			};
105		};
106	};
107
108	smem {
109		compatible = "qcom,smem";
110
111		memory-region = <&smem_region>;
112		qcom,rpm-msg-ram = <&rpm_msg_ram>;
113
114		hwlocks = <&tcsr_mutex 3>;
115	};
116
117	smp2p-adsp {
118		compatible = "qcom,smp2p";
119		qcom,smem = <443>, <429>;
120
121		interrupt-parent = <&intc>;
122		interrupts = <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>;
123
124		qcom,ipc = <&apcs 8 10>;
125
126		qcom,local-pid = <0>;
127		qcom,remote-pid = <2>;
128
129		adsp_smp2p_out: master-kernel {
130			qcom,entry-name = "master-kernel";
131			#qcom,smem-state-cells = <1>;
132		};
133
134		adsp_smp2p_in: slave-kernel {
135			qcom,entry-name = "slave-kernel";
136
137			interrupt-controller;
138			#interrupt-cells = <2>;
139		};
140	};
141
142	soc: soc {
143		compatible = "simple-bus";
144		#address-cells = <1>;
145		#size-cells = <1>;
146		ranges;
147
148		intc: interrupt-controller@f9000000 {
149			compatible = "qcom,msm-qgic2";
150			reg = <0xf9000000 0x1000>,
151			      <0xf9002000 0x1000>;
152			interrupt-controller;
153			#interrupt-cells = <3>;
154		};
155
156		apcs: syscon@f9011000 {
157			compatible = "syscon";
158			reg = <0xf9011000 0x1000>;
159		};
160
161		sdhc_1: mmc@f9824900 {
162			compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
163			reg = <0xf9824900 0x11c>, <0xf9824000 0x800>;
164			reg-names = "hc", "core";
165			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
166				     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
167			interrupt-names = "hc_irq", "pwr_irq";
168			clocks = <&gcc GCC_SDCC1_AHB_CLK>,
169				 <&gcc GCC_SDCC1_APPS_CLK>,
170				 <&xo_board>;
171			clock-names = "iface", "core", "xo";
172			pinctrl-names = "default";
173			pinctrl-0 = <&sdhc1_default_state>;
174			status = "disabled";
175		};
176
177		sdhc_2: mmc@f98a4900 {
178			compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
179			reg = <0xf98a4900 0x11c>, <0xf98a4000 0x800>;
180			reg-names = "hc", "core";
181			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
182				     <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
183			interrupt-names = "hc_irq", "pwr_irq";
184			clocks = <&gcc GCC_SDCC2_AHB_CLK>,
185				 <&gcc GCC_SDCC2_APPS_CLK>,
186				 <&xo_board>;
187			clock-names = "iface", "core", "xo";
188			pinctrl-names = "default";
189			pinctrl-0 = <&sdhc2_default_state>;
190			status = "disabled";
191		};
192
193		sdhc_3: mmc@f9864900 {
194			compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
195			reg = <0xf9864900 0x11c>, <0xf9864000 0x800>;
196			reg-names = "hc", "core";
197			interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
198				     <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
199			interrupt-names = "hc_irq", "pwr_irq";
200			clocks = <&gcc GCC_SDCC3_AHB_CLK>,
201				 <&gcc GCC_SDCC3_APPS_CLK>,
202				 <&xo_board>;
203			clock-names = "iface", "core", "xo";
204			pinctrl-names = "default";
205			pinctrl-0 = <&sdhc3_default_state>;
206			status = "disabled";
207		};
208
209		blsp1_uart1: serial@f991d000 {
210			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
211			reg = <0xf991d000 0x1000>;
212			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
213			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
214			clock-names = "core", "iface";
215			status = "disabled";
216		};
217
218		blsp1_uart3: serial@f991f000 {
219			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
220			reg = <0xf991f000 0x1000>;
221			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
222			clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
223			clock-names = "core", "iface";
224			status = "disabled";
225		};
226
227		blsp1_uart4: serial@f9920000 {
228			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
229			reg = <0xf9920000 0x1000>;
230			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
231			clocks = <&gcc GCC_BLSP1_UART4_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
232			clock-names = "core", "iface";
233			status = "disabled";
234		};
235
236		blsp1_i2c1: i2c@f9923000 {
237			status = "disabled";
238			compatible = "qcom,i2c-qup-v2.1.1";
239			reg = <0xf9923000 0x1000>;
240			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
241			clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
242			clock-names = "core", "iface";
243			pinctrl-names = "default";
244			pinctrl-0 = <&blsp1_i2c1_pins>;
245			#address-cells = <1>;
246			#size-cells = <0>;
247		};
248
249		blsp1_i2c2: i2c@f9924000 {
250			status = "disabled";
251			compatible = "qcom,i2c-qup-v2.1.1";
252			reg = <0xf9924000 0x1000>;
253			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
254			clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
255			clock-names = "core", "iface";
256			pinctrl-names = "default";
257			pinctrl-0 = <&blsp1_i2c2_pins>;
258			#address-cells = <1>;
259			#size-cells = <0>;
260		};
261
262		blsp1_i2c3: i2c@f9925000 {
263			status = "disabled";
264			compatible = "qcom,i2c-qup-v2.1.1";
265			reg = <0xf9925000 0x1000>;
266			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
267			clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
268			clock-names = "core", "iface";
269			pinctrl-names = "default";
270			pinctrl-0 = <&blsp1_i2c3_pins>;
271			#address-cells = <1>;
272			#size-cells = <0>;
273		};
274
275		blsp1_i2c4: i2c@f9926000 {
276			status = "disabled";
277			compatible = "qcom,i2c-qup-v2.1.1";
278			reg = <0xf9926000 0x1000>;
279			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
280			clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
281			clock-names = "core", "iface";
282			pinctrl-names = "default";
283			pinctrl-0 = <&blsp1_i2c4_pins>;
284			#address-cells = <1>;
285			#size-cells = <0>;
286		};
287
288		blsp1_i2c5: i2c@f9927000 {
289			status = "disabled";
290			compatible = "qcom,i2c-qup-v2.1.1";
291			reg = <0xf9927000 0x1000>;
292			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
293			clocks = <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
294			clock-names = "core", "iface";
295			pinctrl-names = "default";
296			pinctrl-0 = <&blsp1_i2c5_pins>;
297			#address-cells = <1>;
298			#size-cells = <0>;
299		};
300
301		usb: usb@f9a55000 {
302			compatible = "qcom,ci-hdrc";
303			reg = <0xf9a55000 0x200>,
304			      <0xf9a55200 0x200>;
305			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
306			clocks = <&gcc GCC_USB_HS_AHB_CLK>,
307				 <&gcc GCC_USB_HS_SYSTEM_CLK>;
308			clock-names = "iface", "core";
309			assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
310			assigned-clock-rates = <75000000>;
311			resets = <&gcc GCC_USB_HS_BCR>;
312			reset-names = "core";
313			phy_type = "ulpi";
314			dr_mode = "otg";
315			hnp-disable;
316			srp-disable;
317			adp-disable;
318			ahb-burst-config = <0>;
319			phy-names = "usb-phy";
320			phys = <&usb_hs_phy>;
321			status = "disabled";
322			#reset-cells = <1>;
323
324			ulpi {
325				usb_hs_phy: phy {
326					compatible = "qcom,usb-hs-phy-msm8226",
327						     "qcom,usb-hs-phy";
328					#phy-cells = <0>;
329					clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
330					clock-names = "ref", "sleep";
331					resets = <&gcc GCC_USB2A_PHY_BCR>, <&usb 0>;
332					reset-names = "phy", "por";
333					qcom,init-seq = /bits/ 8 <0x0 0x44
334						0x1 0x68 0x2 0x24 0x3 0x13>;
335				};
336			};
337		};
338
339		gcc: clock-controller@fc400000 {
340			compatible = "qcom,gcc-msm8226";
341			reg = <0xfc400000 0x4000>;
342			#clock-cells = <1>;
343			#reset-cells = <1>;
344			#power-domain-cells = <1>;
345		};
346
347		tlmm: pinctrl@fd510000 {
348			compatible = "qcom,msm8226-pinctrl";
349			reg = <0xfd510000 0x4000>;
350			gpio-controller;
351			#gpio-cells = <2>;
352			gpio-ranges = <&tlmm 0 0 117>;
353			interrupt-controller;
354			#interrupt-cells = <2>;
355			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
356
357			blsp1_i2c1_pins: blsp1-i2c1 {
358				pins = "gpio2", "gpio3";
359				function = "blsp_i2c1";
360				drive-strength = <2>;
361				bias-disable;
362			};
363
364			blsp1_i2c2_pins: blsp1-i2c2 {
365				pins = "gpio6", "gpio7";
366				function = "blsp_i2c2";
367				drive-strength = <2>;
368				bias-disable;
369			};
370
371			blsp1_i2c3_pins: blsp1-i2c3 {
372				pins = "gpio10", "gpio11";
373				function = "blsp_i2c3";
374				drive-strength = <2>;
375				bias-disable;
376			};
377
378			blsp1_i2c4_pins: blsp1-i2c4 {
379				pins = "gpio14", "gpio15";
380				function = "blsp_i2c4";
381				drive-strength = <2>;
382				bias-disable;
383			};
384
385			blsp1_i2c5_pins: blsp1-i2c5 {
386				pins = "gpio18", "gpio19";
387				function = "blsp_i2c5";
388				drive-strength = <2>;
389				bias-disable;
390			};
391
392			sdhc1_default_state: sdhc1-default-state {
393				clk {
394					pins = "sdc1_clk";
395					drive-strength = <10>;
396					bias-disable;
397				};
398
399				cmd-data {
400					pins = "sdc1_cmd", "sdc1_data";
401					drive-strength = <10>;
402					bias-pull-up;
403				};
404			};
405
406			sdhc2_default_state: sdhc2-default-state {
407				clk {
408					pins = "sdc2_clk";
409					drive-strength = <10>;
410					bias-disable;
411				};
412
413				cmd-data {
414					pins = "sdc2_cmd", "sdc2_data";
415					drive-strength = <10>;
416					bias-pull-up;
417				};
418			};
419
420			sdhc3_default_state: sdhc3-default-state {
421				clk {
422					pins = "gpio44";
423					function = "sdc3";
424					drive-strength = <8>;
425					bias-disable;
426				};
427
428				cmd {
429					pins = "gpio43";
430					function = "sdc3";
431					drive-strength = <8>;
432					bias-pull-up;
433				};
434
435				data {
436					pins = "gpio39", "gpio40", "gpio41", "gpio42";
437					function = "sdc3";
438					drive-strength = <8>;
439					bias-pull-up;
440				};
441			};
442		};
443
444		restart@fc4ab000 {
445			compatible = "qcom,pshold";
446			reg = <0xfc4ab000 0x4>;
447		};
448
449		spmi_bus: spmi@fc4cf000 {
450			compatible = "qcom,spmi-pmic-arb";
451			reg-names = "core", "intr", "cnfg";
452			reg = <0xfc4cf000 0x1000>,
453			      <0xfc4cb000 0x1000>,
454			      <0xfc4ca000 0x1000>;
455			interrupt-names = "periph_irq";
456			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
457			qcom,ee = <0>;
458			qcom,channel = <0>;
459			#address-cells = <2>;
460			#size-cells = <0>;
461			interrupt-controller;
462			#interrupt-cells = <4>;
463		};
464
465		rng@f9bff000 {
466			compatible = "qcom,prng";
467			reg = <0xf9bff000 0x200>;
468			clocks = <&gcc GCC_PRNG_AHB_CLK>;
469			clock-names = "core";
470		};
471
472		timer@f9020000 {
473			compatible = "arm,armv7-timer-mem";
474			reg = <0xf9020000 0x1000>;
475			#address-cells = <1>;
476			#size-cells = <1>;
477			ranges;
478
479			frame@f9021000 {
480				frame-number = <0>;
481				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
482					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
483				reg = <0xf9021000 0x1000>,
484				      <0xf9022000 0x1000>;
485			};
486
487			frame@f9023000 {
488				frame-number = <1>;
489				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
490				reg = <0xf9023000 0x1000>;
491				status = "disabled";
492			};
493
494			frame@f9024000 {
495				frame-number = <2>;
496				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
497				reg = <0xf9024000 0x1000>;
498				status = "disabled";
499			};
500
501			frame@f9025000 {
502				frame-number = <3>;
503				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
504				reg = <0xf9025000 0x1000>;
505				status = "disabled";
506			};
507
508			frame@f9026000 {
509				frame-number = <4>;
510				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
511				reg = <0xf9026000 0x1000>;
512				status = "disabled";
513			};
514
515			frame@f9027000 {
516				frame-number = <5>;
517				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
518				reg = <0xf9027000 0x1000>;
519				status = "disabled";
520			};
521
522			frame@f9028000 {
523				frame-number = <6>;
524				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
525				reg = <0xf9028000 0x1000>;
526				status = "disabled";
527			};
528		};
529
530		rpm_msg_ram: memory@fc428000 {
531			compatible = "qcom,rpm-msg-ram";
532			reg = <0xfc428000 0x4000>;
533		};
534
535		tcsr_mutex: hwlock@fd484000 {
536			compatible = "qcom,msm8226-tcsr-mutex", "qcom,tcsr-mutex";
537			reg = <0xfd484000 0x1000>;
538			#hwlock-cells = <1>;
539		};
540
541		adsp: remoteproc@fe200000 {
542			compatible = "qcom,msm8226-adsp-pil";
543			reg = <0xfe200000 0x100>;
544
545			interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
546					      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
547					      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
548					      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
549					      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
550			interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
551
552			power-domains = <&rpmpd MSM8226_VDDCX>;
553			power-domain-names = "cx";
554
555			clocks = <&xo_board>;
556			clock-names = "xo";
557
558			memory-region = <&adsp_region>;
559
560			qcom,smem-states = <&adsp_smp2p_out 0>;
561			qcom,smem-state-names = "stop";
562
563			status = "disabled";
564
565			smd-edge {
566				interrupts = <GIC_SPI 156 IRQ_TYPE_EDGE_RISING>;
567
568				qcom,ipc = <&apcs 8 8>;
569				qcom,smd-edge = <1>;
570
571				label = "lpass";
572			};
573		};
574	};
575
576	timer {
577		compatible = "arm,armv7-timer";
578		interrupts = <GIC_PPI 2
579				(GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
580			     <GIC_PPI 3
581				(GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
582			     <GIC_PPI 4
583				(GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
584			     <GIC_PPI 1
585				(GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>;
586	};
587};
588