• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
4 */
5
6#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
7#include "sm8250.dtsi"
8#include "pm8150.dtsi"
9#include "pm8150b.dtsi"
10#include "pm8150l.dtsi"
11#include "pm8009.dtsi"
12
13/delete-node/ &adsp_mem;
14/delete-node/ &spss_mem;
15/delete-node/ &cdsp_secure_heap;
16
17/ {
18	qcom,msm-id = <356 0x20001>; /* SM8250 v2.1 */
19	qcom,board-id = <0x10008 0>;
20
21	chosen {
22		#address-cells = <2>;
23		#size-cells = <2>;
24		ranges;
25
26		framebuffer: framebuffer@9c000000 {
27			compatible = "simple-framebuffer";
28			reg = <0 0x9c000000 0 0x2300000>;
29			/* pdx203 BL initializes in 2.5k mode, not 4k */
30			width = <1096>;
31			height = <2560>;
32			stride = <(1096 * 4)>;
33			format = "a8r8g8b8";
34			/*
35			 * That's a lot of clocks, but it's necessary due
36			 * to unused clk cleanup & no panel driver yet..
37			 */
38			clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
39				 <&gcc GCC_DISP_HF_AXI_CLK>,
40				 <&gcc GCC_DISP_SF_AXI_CLK>,
41				 <&dispcc DISP_CC_MDSS_VSYNC_CLK>,
42				 <&dispcc DISP_CC_MDSS_MDP_CLK>,
43				 <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
44				 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
45				 <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
46				 <&dispcc DISP_CC_MDSS_ESC0_CLK>;
47			power-domains = <&dispcc MDSS_GDSC>;
48		};
49	};
50
51	gpio_keys: gpio-keys {
52		compatible = "gpio-keys";
53
54		pinctrl-0 = <&focus_n &snapshot_n &vol_down_n>;
55		pinctrl-names = "default";
56
57		key-camera-focus {
58			label = "Camera Focus";
59			linux,code = <KEY_CAMERA_FOCUS>;
60			gpios = <&pm8150b_gpios 2 GPIO_ACTIVE_LOW>;
61			debounce-interval = <15>;
62			linux,can-disable;
63			wakeup-source;
64		};
65
66		key-camera-snapshot {
67			label = "Camera Snapshot";
68			linux,code = <KEY_CAMERA>;
69			gpios = <&pm8150b_gpios 1 GPIO_ACTIVE_LOW>;
70			debounce-interval = <15>;
71			linux,can-disable;
72			wakeup-source;
73		};
74
75		vol-down {
76			label = "Volume Down";
77			linux,code = <KEY_VOLUMEDOWN>;
78			gpios = <&pm8150_gpios 1 GPIO_ACTIVE_LOW>;
79			debounce-interval = <15>;
80			linux,can-disable;
81			gpio-key,wakeup;
82		};
83	};
84
85	vph_pwr: vph-pwr-regulator {
86		compatible = "regulator-fixed";
87		regulator-name = "vph_pwr";
88		regulator-min-microvolt = <3700000>;
89		regulator-max-microvolt = <3700000>;
90	};
91
92	/* S6c is really ebi.lvl but it's there for supply map completeness sake. */
93	vreg_s6c_0p88: smpc6-regulator {
94		compatible = "regulator-fixed";
95		regulator-name = "vreg_s6c_0p88";
96
97		regulator-min-microvolt = <880000>;
98		regulator-max-microvolt = <880000>;
99		regulator-always-on;
100		vin-supply = <&vph_pwr>;
101	};
102
103	reserved-memory {
104		adsp_mem: memory@8a100000 {
105			reg = <0x0 0x8a100000 0x0 0x2500000>;
106			no-map;
107		};
108
109		spss_mem: memory@8c600000 {
110			reg = <0x0 0x8c600000 0x0 0x100000>;
111			no-map;
112		};
113
114		cdsp_secure_heap: memory@8c700000 {
115			reg = <0x0 0x8c700000 0x0 0x4600000>;
116			no-map;
117		};
118
119		cont_splash_mem: memory@9c000000 {
120			reg = <0x0 0x9c000000 0x0 0x2300000>;
121			no-map;
122		};
123
124		ramoops@ffc00000 {
125			compatible = "ramoops";
126			reg = <0x0 0xffc00000 0x0 0x100000>;
127			record-size = <0x1000>;
128			console-size = <0x40000>;
129			pmsg-size = <0x20000>;
130			ecc-size = <16>;
131			no-map;
132		};
133	};
134};
135
136&adsp {
137	status = "okay";
138};
139
140&apps_rsc {
141	pm8150-rpmh-regulators {
142		compatible = "qcom,pm8150-rpmh-regulators";
143		qcom,pmic-id = "a";
144
145		vdd-s1-supply = <&vph_pwr>;
146		vdd-s2-supply = <&vph_pwr>;
147		vdd-s3-supply = <&vph_pwr>;
148		vdd-s4-supply = <&vph_pwr>;
149		vdd-s5-supply = <&vph_pwr>;
150		vdd-s6-supply = <&vph_pwr>;
151		vdd-s7-supply = <&vph_pwr>;
152		vdd-s8-supply = <&vph_pwr>;
153		vdd-s9-supply = <&vph_pwr>;
154		vdd-s10-supply = <&vph_pwr>;
155		vdd-l1-l8-l11-supply = <&vreg_s6c_0p88>;
156		vdd-l2-l10-supply = <&vreg_bob>;
157		vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p6>;
158		vdd-l6-l9-supply = <&vreg_s8c_1p2>;
159		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>;
160		vdd-l13-l16-l17-supply = <&vreg_bob>;
161
162		/* (S1+S2+S3) - cx.lvl (ARC) */
163
164		vreg_s4a_1p8: smps4 {
165			regulator-name = "vreg_s4a_1p8";
166			regulator-min-microvolt = <1800000>;
167			regulator-max-microvolt = <1920000>;
168			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
169		};
170
171		vreg_s5a_1p9: smps5 {
172			regulator-name = "vreg_s5a_1p9";
173			regulator-min-microvolt = <1824000>;
174			regulator-max-microvolt = <2040000>;
175			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
176		};
177
178		vreg_s6a_0p6: smps6 {
179			regulator-name = "vreg_s6a_0p6";
180			regulator-min-microvolt = <600000>;
181			regulator-max-microvolt = <1128000>;
182			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
183		};
184
185		vreg_l2a_3p1: ldo2 {
186			regulator-name = "vreg_l2a_3p1";
187			regulator-min-microvolt = <3072000>;
188			regulator-max-microvolt = <3072000>;
189			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
190		};
191
192		vreg_l3a_0p9: ldo3 {
193			regulator-name = "vreg_l3a_0p9";
194			regulator-min-microvolt = <928000>;
195			regulator-max-microvolt = <932000>;
196			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
197		};
198
199		/* L4 - lmx.lvl (ARC) */
200
201		vreg_l5a_0p88: ldo5 {
202			regulator-name = "vreg_l5a_0p88";
203			regulator-min-microvolt = <880000>;
204			regulator-max-microvolt = <880000>;
205			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
206		};
207
208		vreg_l6a_1p2: ldo6 {
209			regulator-name = "vreg_l6a_1p2";
210			regulator-min-microvolt = <1200000>;
211			regulator-max-microvolt = <1200000>;
212			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
213		};
214
215		/* L7 is unused. */
216
217		vreg_l9a_1p2: ldo9 {
218			regulator-name = "vreg_l9a_1p2";
219			regulator-min-microvolt = <1200000>;
220			regulator-max-microvolt = <1200000>;
221			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
222		};
223
224		/* L10 is unused, L11 - lcx.lvl (ARC) */
225
226		vreg_l12a_1p8: ldo12 {
227			regulator-name = "vreg_l12a_1p8";
228			regulator-min-microvolt = <1800000>;
229			regulator-max-microvolt = <1800000>;
230			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
231		};
232
233		/* L13 is unused. */
234
235		vreg_l14a_1p8: ldo14 {
236			regulator-name = "vreg_l14a_1p8";
237			regulator-min-microvolt = <1800000>;
238			regulator-max-microvolt = <1880000>;
239			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
240		};
241
242		/* L15 & L16 are unused. */
243
244		vreg_l17a_3p0: ldo17 {
245			regulator-name = "vreg_l17a_3p0";
246			regulator-min-microvolt = <2496000>;
247			regulator-max-microvolt = <3008000>;
248			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
249		};
250
251		vreg_l18a_0p9: ldo18 {
252			regulator-name = "vreg_l18a_0p9";
253			regulator-min-microvolt = <800000>;
254			regulator-max-microvolt = <920000>;
255			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
256		};
257	};
258
259	/*
260	 * Remaining regulators that are not yet supported:
261	 * OLEDB: 4925000-8100000
262	 * ab: 4600000-6100000
263	 * ibb: 800000-5400000
264	 */
265	pm8150l-rpmh-regulators {
266		compatible = "qcom,pm8150l-rpmh-regulators";
267		qcom,pmic-id = "c";
268
269		vdd-s1-supply = <&vph_pwr>;
270		vdd-s2-supply = <&vph_pwr>;
271		vdd-s3-supply = <&vph_pwr>;
272		vdd-s4-supply = <&vph_pwr>;
273		vdd-s5-supply = <&vph_pwr>;
274		vdd-s6-supply = <&vph_pwr>;
275		vdd-s7-supply = <&vph_pwr>;
276		vdd-s8-supply = <&vph_pwr>;
277		vdd-l1-l8-supply = <&vreg_s4a_1p8>;
278		vdd-l2-l3-supply = <&vreg_s8c_1p2>;
279		vdd-l4-l5-l6-supply = <&vreg_bob>;
280		vdd-l7-l11-supply = <&vreg_bob>;
281		vdd-l9-l10-supply = <&vreg_bob>;
282		vdd-bob-supply = <&vph_pwr>;
283
284		vreg_bob: bob {
285			regulator-name = "vreg_bob";
286			regulator-min-microvolt = <3350000>;
287			regulator-max-microvolt = <3960000>;
288			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
289		};
290
291		/*
292		 * S1-S6 are ARCs:
293		 * (S1+S2) - gfx.lvl,
294		 * S3 - mx.lvl,
295		 * (S4+S5) - mmcx.lvl,
296		 * S6 - ebi.lvl
297		 */
298
299		vreg_s7c_0p35: smps7 {
300			regulator-name = "vreg_s7c_0p35";
301			regulator-min-microvolt = <348000>;
302			regulator-max-microvolt = <1000000>;
303			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
304		};
305
306		vreg_s8c_1p2: smps8 {
307			regulator-name = "vreg_s8c_1p2";
308			regulator-min-microvolt = <1200000>;
309			regulator-max-microvolt = <1400000>;
310			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
311		};
312
313		vreg_l1c_1p8: ldo1 {
314			regulator-name = "vreg_l1c_1p8";
315			regulator-min-microvolt = <1800000>;
316			regulator-max-microvolt = <1800000>;
317			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
318		};
319
320		/* L2-4 are unused. */
321
322		vreg_l5c_1p8: ldo5 {
323			regulator-name = "vreg_l5c_1p8";
324			regulator-min-microvolt = <1800000>;
325			regulator-max-microvolt = <2800000>;
326			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
327		};
328
329		vreg_l6c_2p9: ldo6 {
330			regulator-name = "vreg_l6c_2p9";
331			regulator-min-microvolt = <1800000>;
332			regulator-max-microvolt = <2960000>;
333			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
334			regulator-allow-set-load;
335			regulator-allowed-modes =
336			    <RPMH_REGULATOR_MODE_LPM
337			     RPMH_REGULATOR_MODE_HPM>;
338		};
339
340		vreg_l7c_2p85: ldo7 {
341			regulator-name = "vreg_l7c_2p85";
342			regulator-min-microvolt = <2856000>;
343			regulator-max-microvolt = <3104000>;
344			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
345		};
346
347		vreg_l8c_1p8: ldo8 {
348			regulator-name = "vreg_l8c_1p8";
349			regulator-min-microvolt = <1800000>;
350			regulator-max-microvolt = <1800000>;
351			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
352		};
353
354		vreg_l9c_2p9: ldo9 {
355			regulator-name = "vreg_l9c_2p9";
356			regulator-min-microvolt = <2704000>;
357			regulator-max-microvolt = <2960000>;
358			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
359			regulator-allow-set-load;
360			regulator-allowed-modes =
361			    <RPMH_REGULATOR_MODE_LPM
362			     RPMH_REGULATOR_MODE_HPM>;
363		};
364
365		vreg_l10c_3p3: ldo10 {
366			regulator-name = "vreg_l10c_3p3";
367			regulator-min-microvolt = <3296000>;
368			regulator-max-microvolt = <3296000>;
369			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
370		};
371
372		vreg_l11c_3p0: ldo11 {
373			regulator-name = "vreg_l11c_3p0";
374			regulator-min-microvolt = <3000000>;
375			regulator-max-microvolt = <3000000>;
376			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
377		};
378	};
379
380	pm8009-rpmh-regulators {
381		compatible = "qcom,pm8009-rpmh-regulators";
382		qcom,pmic-id = "f";
383
384		vdd-s1-supply = <&vph_pwr>;
385		vdd-s2-supply = <&vreg_bob>;
386		vdd-l2-supply = <&vreg_s8c_1p2>;
387		vdd-l5-l6-supply = <&vreg_bob>;
388		vdd-l7-supply = <&vreg_s4a_1p8>;
389
390		vreg_s1f_1p2: smps1 {
391			regulator-name = "vreg_s1f_1p2";
392			regulator-min-microvolt = <1200000>;
393			regulator-max-microvolt = <1200000>;
394			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
395		};
396
397		vreg_s2f_0p5: smps2 {
398			regulator-name = "vreg_s2f_0p5";
399			regulator-min-microvolt = <512000>;
400			regulator-max-microvolt = <1100000>;
401			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
402		};
403
404		/* L1 is unused. */
405
406		vreg_l2f_1p3: ldo2 {
407			regulator-name = "vreg_l2f_1p3";
408			regulator-min-microvolt = <1304000>;
409			regulator-max-microvolt = <1304000>;
410			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
411		};
412
413		/* L3 & L4 are unused. */
414
415		vreg_l5f_2p8: ldo5 {
416			regulator-name = "vreg_l5f_2p85";
417			regulator-min-microvolt = <2800000>;
418			regulator-max-microvolt = <2800000>;
419			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
420		};
421
422		vreg_l6f_2p8: ldo6 {
423			regulator-name = "vreg_l6f_2p8";
424			regulator-min-microvolt = <2800000>;
425			regulator-max-microvolt = <2800000>;
426			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
427		};
428
429		vreg_l7f_1p8: ldo7 {
430			regulator-name = "vreg_l7f_1p8";
431			regulator-min-microvolt = <1800000>;
432			regulator-max-microvolt = <1800000>;
433			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
434		};
435	};
436};
437
438&cdsp {
439	status = "okay";
440};
441
442&gpi_dma0 {
443	status = "okay";
444};
445
446&gpi_dma1 {
447	status = "okay";
448};
449
450&gpi_dma2 {
451	status = "okay";
452};
453
454&i2c1 {
455	status = "okay";
456	clock-frequency = <400000>;
457
458	/* NXP PN553 NFC @ 28 */
459};
460
461&i2c2 {
462	status = "okay";
463	clock-frequency = <1000000>;
464
465	/* Dual Cirrus Logic CS35L41 amps @ 40, 41 */
466};
467
468&i2c5 {
469	status = "okay";
470	clock-frequency = <400000>;
471
472	/* Dialog SLG51000 CMIC @ 75 */
473};
474
475&i2c9 {
476	status = "okay";
477	clock-frequency = <400000>;
478
479	/* AMS TCS3490 RGB+IR color sensor @ 72 */
480};
481
482&i2c13 {
483	status = "okay";
484	clock-frequency = <400000>;
485
486	touchscreen@48 {
487		compatible = "samsung,s6sy761";
488		reg = <0x48>;
489		interrupt-parent = <&tlmm>;
490		interrupts = <39 0x2008>;
491		/* It's "vddio" downstream but it works anyway! */
492		vdd-supply = <&vreg_l1c_1p8>;
493		avdd-supply = <&vreg_l10c_3p3>;
494
495		pinctrl-names = "default";
496		pinctrl-0 = <&ts_int_default>;
497	};
498};
499
500&i2c15 {
501	status = "okay";
502	clock-frequency = <400000>;
503
504	/* Qcom SMB1390 @ 10 */
505	/* Silicon Labs SI4704 FM Radio Receiver @ 11 */
506	/* Qcom SMB1390_slave @ 18 */
507	/* HALO HL6111R Qi charger @ 25 */
508	/* Richwave RTC6226 FM Radio Receiver @ 64 */
509};
510
511&pcie0 {
512	status = "okay";
513};
514
515&pcie0_phy {
516	status = "okay";
517
518	vdda-phy-supply = <&vreg_l5a_0p88>;
519	vdda-pll-supply = <&vreg_l9a_1p2>;
520};
521
522&pcie2 {
523	status = "okay";
524
525	pinctrl-0 = <&pcie2_default_state &mdm2ap_default &ap2mdm_default>;
526};
527
528&pcie2_phy {
529	status = "okay";
530
531	vdda-phy-supply = <&vreg_l5a_0p88>;
532	vdda-pll-supply = <&vreg_l9a_1p2>;
533};
534
535&pm8150_gpios {
536	vol_down_n: vol-down-n-state {
537		pins = "gpio1";
538		function = "normal";
539		power-source = <0>;
540		bias-pull-up;
541		input-enable;
542	};
543};
544
545&pm8150b_gpios {
546	snapshot_n: snapshot-n-state {
547		pins = "gpio1";
548		function = "normal";
549		power-source = <0>;
550		bias-pull-up;
551		input-enable;
552	};
553
554	focus_n: focus-n-state {
555		pins = "gpio2";
556		function = "normal";
557		power-source = <0>;
558		bias-pull-up;
559		input-enable;
560	};
561};
562
563&pon_pwrkey {
564	status = "okay";
565};
566
567&pon_resin {
568	status = "okay";
569
570	linux,code = <KEY_VOLUMEUP>;
571};
572
573&qupv3_id_0 {
574	status = "okay";
575};
576
577&qupv3_id_1 {
578	status = "okay";
579};
580
581&qupv3_id_2 {
582	status = "okay";
583};
584
585&sdhc_2 {
586	status = "okay";
587
588	cd-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>;
589	pinctrl-names = "default", "sleep";
590	pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
591	pinctrl-1 = <&sdc2_sleep_state &sdc2_card_det_n>;
592	vmmc-supply = <&vreg_l9c_2p9>;
593	vqmmc-supply = <&vreg_l6c_2p9>;
594	bus-width = <4>;
595	no-sdio;
596	no-emmc;
597};
598
599&slpi {
600	status = "okay";
601};
602
603&tlmm {
604	gpio-reserved-ranges = <40 4>, <52 4>;
605
606	sdc2_default_state: sdc2-default {
607		clk {
608			pins = "sdc2_clk";
609			drive-strength = <16>;
610			bias-disable;
611		};
612
613		cmd {
614			pins = "sdc2_cmd";
615			drive-strength = <16>;
616			bias-pull-up;
617		};
618
619		data {
620			pins = "sdc2_data";
621			drive-strength = <16>;
622			bias-pull-up;
623		};
624	};
625
626	mdm2ap_default: mdm2ap-default {
627		pins = "gpio1", "gpio3";
628		function = "gpio";
629		drive-strength = <8>;
630		bias-disable;
631	};
632
633	ts_int_default: ts-int-default {
634		pins = "gpio39";
635		function = "gpio";
636		drive-strength = <2>;
637		bias-disable;
638		input-enable;
639	};
640
641	ap2mdm_default: ap2mdm-default {
642		pins = "gpio56", "gpio57";
643		function = "gpio";
644		drive-strength = <16>;
645		bias-disable;
646	};
647
648	sdc2_card_det_n: sd-card-det-n {
649		pins = "gpio77";
650		function = "gpio";
651		bias-pull-up;
652		drive-strength = <2>;
653	};
654};
655
656&uart12 {
657	status = "okay";
658};
659
660/* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */
661&ufs_mem_hc { status = "disabled"; };
662&ufs_mem_phy { status = "disabled"; };
663
664&usb_1 {
665	status = "okay";
666};
667
668&usb_1_dwc3 {
669	dr_mode = "peripheral";
670};
671
672&usb_1_hsphy {
673	status = "okay";
674
675	vdda-pll-supply = <&vreg_l5a_0p88>;
676	vdda18-supply = <&vreg_l12a_1p8>;
677	vdda33-supply = <&vreg_l2a_3p1>;
678};
679
680&usb_1_qmpphy {
681	status = "okay";
682
683	vdda-phy-supply = <&vreg_l9a_1p2>;
684	vdda-pll-supply = <&vreg_l18a_0p9>;
685};
686