1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2022, Konrad Dybcio <konrad.dybcio@somainline.org>
4 */
5
6#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
7#include "sm8450.dtsi"
8#include "pm8350.dtsi"
9#include "pm8350b.dtsi"
10#include "pm8350c.dtsi"
11#include "pm8450.dtsi"
12#include "pmk8350.dtsi"
13#include "pmr735a.dtsi"
14
15/delete-node/ &adsp_mem;
16/delete-node/ &rmtfs_mem;
17/delete-node/ &video_mem;
18
19/ {
20	chassis-type = "handset";
21
22	aliases {
23		serial0 = &uart7;
24	};
25
26	chosen {
27		stdout-path = "serial0:115200n8";
28	};
29
30	gpio-keys {
31		compatible = "gpio-keys";
32		label = "gpio-keys";
33
34		pinctrl-names = "default";
35		pinctrl-0 = <&focus_n &snapshot_n &vol_down_n>;
36
37		key-camera-focus {
38			label = "Camera Focus";
39			linux,code = <KEY_CAMERA_FOCUS>;
40			gpios = <&pm8350b_gpios 8 GPIO_ACTIVE_LOW>;
41			debounce-interval = <15>;
42			linux,can-disable;
43			wakeup-source;
44		};
45
46		key-camera-snapshot {
47			label = "Camera Snapshot";
48			linux,code = <KEY_CAMERA>;
49			gpios = <&pm8350b_gpios 5 GPIO_ACTIVE_LOW>;
50			debounce-interval = <15>;
51			linux,can-disable;
52			wakeup-source;
53		};
54
55		key-volume-down {
56			label = "Volume Down";
57			linux,code = <KEY_VOLUMEDOWN>;
58			gpios = <&pm8350_gpios 6 GPIO_ACTIVE_LOW>;
59			debounce-interval = <15>;
60			linux,can-disable;
61			wakeup-source;
62		};
63	};
64
65	reserved-memory {
66		adsp_mem: memory@85700000 {
67			reg = <0x0 0x85700000 0x0 0x2800000>;
68			no-map;
69		};
70
71		video_mem: memory@9fd00000 {
72			reg = <0x0 0x9fd00000 0x0 0x700000>;
73			no-map;
74		};
75
76		rmtfs_mem: memory@f3300000 {
77			compatible = "qcom,rmtfs-mem";
78			reg = <0x0 0xf3300000 0x0 0x280000>;
79			no-map;
80
81			qcom,client-id = <1>;
82			qcom,vmid = <15>;
83		};
84
85		ramoops@ffc00000 {
86			compatible = "ramoops";
87			reg = <0 0xffc00000 0 0x200000>;
88			console-size = <0x40000>;
89			record-size = <0x1000>;
90			ecc-size = <16>;
91			no-map;
92		};
93	};
94
95	/* Sadly, the voltages for these GPIO regulators are unknown. */
96	imx650_vana_vreg: imx650-vana-regulator {
97		compatible = "regulator-fixed";
98		regulator-name = "imx650_vana_vreg";
99		gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>;
100		enable-active-high;
101	};
102
103	vph_pwr: vph-pwr-regulator {
104		compatible = "regulator-fixed";
105		regulator-name = "vph_pwr";
106		regulator-min-microvolt = <3700000>;
107		regulator-max-microvolt = <3700000>;
108
109		regulator-always-on;
110		regulator-boot-on;
111	};
112};
113
114&apps_rsc {
115	pm8350-rpmh-regulators {
116		compatible = "qcom,pm8350-rpmh-regulators";
117		qcom,pmic-id = "b";
118
119		vdd-s1-supply = <&vph_pwr>;
120		vdd-s2-supply = <&vph_pwr>;
121		vdd-s3-supply = <&vph_pwr>;
122		vdd-s4-supply = <&vph_pwr>;
123		vdd-s5-supply = <&vph_pwr>;
124		vdd-s6-supply = <&vph_pwr>;
125		vdd-s7-supply = <&vph_pwr>;
126		vdd-s8-supply = <&vph_pwr>;
127		vdd-s9-supply = <&vph_pwr>;
128		vdd-s10-supply = <&vph_pwr>;
129		vdd-s11-supply = <&vph_pwr>;
130		vdd-s12-supply = <&vph_pwr>;
131
132		vdd-l1-l4-supply = <&pm8350_s11>;
133		vdd-l2-l7-supply = <&vreg_bob>;
134		vdd-l3-l5-supply = <&vreg_bob>;
135		vdd-l6-l9-l10-supply = <&pm8350_s12>;
136
137		/*
138		 * ARC regulators:
139		 * s5 - gfx.lvl
140		 * l8 - lcx.lvl
141		 */
142
143		pm8350_s10: smps10 {
144			regulator-name = "pm8350_s10";
145			regulator-min-microvolt = <1800000>;
146			regulator-max-microvolt = <1800000>;
147		};
148
149		pm8350_s11: smps11 {
150			regulator-name = "pm8350_s11";
151			regulator-min-microvolt = <848000>;
152			regulator-max-microvolt = <1104000>;
153		};
154
155		pm8350_s12: smps12 {
156			regulator-name = "pm8350_s12";
157			regulator-min-microvolt = <1224000>;
158			regulator-max-microvolt = <1400000>;
159		};
160
161		pm8350_l1: ldo1 {
162			regulator-name = "pm8350_l1";
163			regulator-min-microvolt = <912000>;
164			regulator-max-microvolt = <920000>;
165			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
166		};
167
168		pm8350_l2: ldo2 {
169			regulator-name = "pm8350_l2";
170			regulator-min-microvolt = <3072000>;
171			regulator-max-microvolt = <3072000>;
172			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
173		};
174
175		pm8350_l3: ldo3 {
176			regulator-name = "pm8350_l3";
177			regulator-min-microvolt = <904000>;
178			regulator-max-microvolt = <904000>;
179			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
180		};
181
182		pm8350_l5: ldo5 {
183			regulator-name = "pm8350_l5";
184			regulator-min-microvolt = <880000>;
185			regulator-max-microvolt = <912000>;
186			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
187		};
188
189		pm8350_l6: ldo6 {
190			regulator-name = "pm8350_l6";
191			regulator-min-microvolt = <1200000>;
192			regulator-max-microvolt = <1200000>;
193			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
194		};
195
196		pm8350_l7: ldo7 {
197			regulator-name = "pm8350_l7";
198			regulator-min-microvolt = <2504000>;
199			regulator-max-microvolt = <2504000>;
200			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
201		};
202
203		pm8350_l9: ldo9 {
204			regulator-name = "pm8350_l9";
205			regulator-min-microvolt = <1200000>;
206			regulator-max-microvolt = <1200000>;
207			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
208		};
209	};
210
211	pm8350c-rpmh-regulators {
212		compatible = "qcom,pm8350c-rpmh-regulators";
213		qcom,pmic-id = "c";
214
215		vdd-s1-supply = <&vph_pwr>;
216		vdd-s2-supply = <&vph_pwr>;
217		vdd-s3-supply = <&vph_pwr>;
218		vdd-s4-supply = <&vph_pwr>;
219		vdd-s5-supply = <&vph_pwr>;
220		vdd-s6-supply = <&vph_pwr>;
221		vdd-s7-supply = <&vph_pwr>;
222		vdd-s8-supply = <&vph_pwr>;
223		vdd-s9-supply = <&vph_pwr>;
224		vdd-s10-supply = <&vph_pwr>;
225
226		vdd-l1-l12-supply = <&vreg_bob>;
227		vdd-l2-l8-supply = <&vreg_bob>;
228		vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob>;
229		vdd-l6-l9-l11-supply = <&vreg_bob>;
230		vdd-l10-supply = <&pm8350_s12>;
231
232		vdd-bob-supply = <&vph_pwr>;
233
234		/*
235		 * ARC regulators:
236		 * s2 - mxc.lvl
237		 * s4 - mss.lvl
238		 * s6 - cx.lvl
239		 */
240
241		pm8350c_s1: smps1 {
242			regulator-name = "pm8350c_s1";
243			regulator-min-microvolt = <1800000>;
244			regulator-max-microvolt = <2024000>;
245		};
246
247		pm8350c_s10: smps10 {
248			regulator-name = "pm8350c_s10";
249			regulator-min-microvolt = <1000000>;
250			regulator-max-microvolt = <1100000>;
251		};
252
253		vreg_bob: bob {
254			regulator-name = "vreg_bob";
255			regulator-min-microvolt = <3400000>;
256			regulator-max-microvolt = <3960000>;
257			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
258		};
259
260		pm8350c_l1: ldo1 {
261			regulator-name = "pm8350c_l1";
262			regulator-min-microvolt = <1800000>;
263			regulator-max-microvolt = <1800000>;
264			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
265		};
266
267		pm8350c_l2: ldo2 {
268			regulator-name = "pm8350c_l2";
269			regulator-min-microvolt = <1800000>;
270			regulator-max-microvolt = <1800000>;
271			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
272		};
273
274		pm8350c_l3: ldo3 {
275			regulator-name = "pm8350c_l3";
276			regulator-min-microvolt = <3296000>;
277			regulator-max-microvolt = <3304000>;
278			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
279		};
280
281		pm8350c_l4: ldo4 {
282			regulator-name = "pm8350c_l4";
283			regulator-min-microvolt = <1704000>;
284			regulator-max-microvolt = <3000000>;
285			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
286		};
287
288		pm8350c_l5: ldo5 {
289			regulator-name = "pm8350c_l5";
290			regulator-min-microvolt = <1704000>;
291			regulator-max-microvolt = <3000000>;
292			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
293		};
294
295		pm8350c_l6: ldo6 {
296			regulator-name = "pm8350c_l6";
297			regulator-min-microvolt = <2960000>;
298			/* Originally max = 3008000 but SDHCI expects 2960000 */
299			regulator-max-microvolt = <2960000>;
300			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
301		};
302
303		pm8350c_l7: ldo7 {
304			regulator-name = "pm8350c_l7";
305			regulator-min-microvolt = <3008000>;
306			regulator-max-microvolt = <3008000>;
307			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
308		};
309
310		pm8350c_l8: ldo8 {
311			regulator-name = "pm8350c_l8";
312			regulator-min-microvolt = <1800000>;
313			regulator-max-microvolt = <1800000>;
314			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
315		};
316
317		pm8350c_l9: ldo9 {
318			regulator-name = "pm8350c_l9";
319			regulator-min-microvolt = <2960000>;
320			/* Originally max = 3008000 but SDHCI expects 2960000 */
321			regulator-max-microvolt = <2960000>;
322			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
323		};
324
325		pm8350c_l10: ldo10 {
326			regulator-name = "pm8350c_l10";
327			regulator-min-microvolt = <1200000>;
328			regulator-max-microvolt = <1200000>;
329			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
330		};
331
332		pm8350c_l12: ldo12 {
333			regulator-name = "pm8350c_l12";
334			regulator-min-microvolt = <1800000>;
335			regulator-max-microvolt = <1968000>;
336			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
337		};
338
339		pm8350c_l13: ldo13 {
340			regulator-name = "pm8350c_l13";
341			regulator-min-microvolt = <3000000>;
342			regulator-max-microvolt = <3000000>;
343			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
344		};
345	};
346
347	pm8450-rpmh-regulators {
348		compatible = "qcom,pm8450-rpmh-regulators";
349		qcom,pmic-id = "h";
350
351		vdd-s1-supply = <&vph_pwr>;
352		vdd-s2-supply = <&vph_pwr>;
353		vdd-s3-supply = <&vph_pwr>;
354		vdd-s4-supply = <&vph_pwr>;
355		vdd-s5-supply = <&vph_pwr>;
356		vdd-s6-supply = <&vph_pwr>;
357
358		vdd-l2-supply = <&vreg_bob>;
359		vdd-l3-supply = <&vreg_bob>;
360		vdd-l4-supply = <&vreg_bob>;
361
362		/*
363		 * ARC regulators:
364		 * S2 - ebi.lvl
365		 * S4 - mmcx.lvl
366		 * S6 - mx.lvl
367		 * L1 - lmx.lvl
368		 */
369
370		pm8450_s3: smps3 {
371			regulator-name = "pm8450_s3";
372			regulator-min-microvolt = <500000>;
373			regulator-max-microvolt = <600000>;
374		};
375
376		pm8450_l2: ldo2 {
377			regulator-name = "pm8450_l2";
378			regulator-min-microvolt = <880000>;
379			regulator-max-microvolt = <912000>;
380			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
381		};
382
383		pm8450_l3: ldo3 {
384			regulator-name = "pm8450_l3";
385			regulator-min-microvolt = <912000>;
386			regulator-max-microvolt = <912000>;
387			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
388		};
389	};
390
391	pmr735a-rpmh-regulators {
392		compatible = "qcom,pmr735a-rpmh-regulators";
393		qcom,pmic-id = "e";
394
395		vdd-s1-supply = <&vph_pwr>;
396		vdd-s2-supply = <&vph_pwr>;
397		vdd-s3-supply = <&vph_pwr>;
398
399		vdd-l1-l2-supply = <&pmr735a_s2>;
400		vdd-l3-supply = <&pmr735a_s1>;
401		vdd-l4-supply = <&pm8350c_s1>;
402		vdd-l5-l6-supply = <&pm8350c_s1>;
403		vdd-l7-bob-supply = <&vreg_bob>;
404
405		pmr735a_s1: smps1 {
406			regulator-name = "pmr735a_s1";
407			regulator-min-microvolt = <1200000>;
408			regulator-max-microvolt = <1296000>;
409		};
410
411		pmr735a_s2: smps2 {
412			regulator-name = "pmr735a_s2";
413			regulator-min-microvolt = <500000>;
414			regulator-max-microvolt = <1040000>;
415		};
416
417		pmr735a_s3: smps3 {
418			regulator-name = "pmr735a_s3";
419			regulator-min-microvolt = <435000>;
420			regulator-max-microvolt = <2352000>;
421		};
422
423		pmr735a_l1: ldo1 {
424			regulator-name = "pmr735a_l1";
425			regulator-min-microvolt = <800000>;
426			regulator-max-microvolt = <800000>;
427		};
428
429		pmr735a_l2: ldo2 {
430			regulator-name = "pmr735a_l2";
431			regulator-min-microvolt = <480000>;
432			regulator-max-microvolt = <912000>;
433		};
434
435		pmr735a_l3: ldo3 {
436			regulator-name = "pmr735a_l3";
437			regulator-min-microvolt = <1200000>;
438			regulator-max-microvolt = <1200000>;
439		};
440
441		pmr735a_l4: ldo4 {
442			regulator-name = "pmr735a_l4";
443			regulator-min-microvolt = <1776000>;
444			regulator-max-microvolt = <1776000>;
445		};
446
447		pmr735a_l5: ldo5 {
448			regulator-name = "pmr735a_l5";
449			regulator-min-microvolt = <880000>;
450			regulator-max-microvolt = <880000>;
451		};
452
453		pmr735a_l6: ldo6 {
454			regulator-name = "pmr735a_l6";
455			regulator-min-microvolt = <1200000>;
456			regulator-max-microvolt = <1200000>;
457		};
458
459		pmr735a_l7: ldo7 {
460			regulator-name = "pmr735a_l7";
461			regulator-min-microvolt = <2800000>;
462			regulator-max-microvolt = <2800000>;
463		};
464	};
465};
466
467&gpi_dma0 {
468	status = "okay";
469};
470
471&gpi_dma1 {
472	status = "okay";
473};
474
475&gpi_dma2 {
476	status = "okay";
477};
478
479&i2c4 {
480	clock-frequency = <400000>;
481	status = "okay";
482
483	touchscreen@48 {
484		compatible = "samsung,s6sy761";
485		reg = <0x48>;
486		interrupt-parent = <&tlmm>;
487		interrupts = <21 0x2008>;
488		vdd-supply = <&pm8350c_l2>;
489		avdd-supply = <&pm8350c_l3>;
490
491		pinctrl-names = "default";
492		pinctrl-0 = <&ts_reset_default &ts_int_default>;
493	};
494};
495
496&i2c5 {
497	clock-frequency = <400000>;
498	status = "okay";
499
500	/* Dialog SLG51000 CMIC @ 75 */
501};
502
503&i2c9 {
504	clock-frequency = <400000>;
505	status = "okay";
506
507	/* NXP SN1X0 NFC @ 28 */
508};
509
510&i2c13 {
511	clock-frequency = <400000>;
512	status = "okay";
513
514	/* Richwave RTC6226 FM Radio Receiver @ 64 */
515};
516
517&i2c14 {
518	clock-frequency = <1000000>;
519	status = "okay";
520
521	cs35l41_l: speaker-amp@40 {
522		compatible = "cirrus,cs35l41";
523		reg = <0x40>;
524		interrupt-parent = <&tlmm>;
525		interrupts = <182 IRQ_TYPE_LEVEL_LOW>;
526		reset-gpios = <&tlmm 183 GPIO_ACTIVE_HIGH>;
527		cirrus,boost-peak-milliamp = <4000>;
528		cirrus,boost-ind-nanohenry = <1000>;
529		cirrus,boost-cap-microfarad = <15>;
530		cirrus,gpio2-src-select = <2>;
531		cirrus,gpio2-output-enable;
532		cirrus,asp-sdout-hiz = <3>;
533		#sound-dai-cells = <1>;
534	};
535
536	cs35l41_r: speaker-amp@41 {
537		compatible = "cirrus,cs35l41";
538		reg = <0x41>;
539		interrupt-parent = <&tlmm>;
540		interrupts = <182 IRQ_TYPE_LEVEL_LOW>;
541		reset-gpios = <&tlmm 183 GPIO_ACTIVE_HIGH>;
542		cirrus,boost-peak-milliamp = <4000>;
543		cirrus,boost-ind-nanohenry = <1000>;
544		cirrus,boost-cap-microfarad = <15>;
545		cirrus,gpio2-src-select = <2>;
546		cirrus,gpio2-output-enable;
547		cirrus,asp-sdout-hiz = <3>;
548		#sound-dai-cells = <1>;
549	};
550};
551
552&i2c15 {
553	clock-frequency = <400000>;
554	status = "okay";
555
556	/* AMS TCS3490 RGB+IR color sensor @ 72 */
557};
558
559&i2c19 {
560	clock-frequency = <1000000>;
561	status = "okay";
562
563	/* Cirrus Logic CS40L25A boosted haptics driver @ 40 */
564};
565
566&pcie0 {
567	max-link-speed = <2>;
568	status = "okay";
569};
570
571&pcie0_phy {
572	vdda-phy-supply = <&pm8350_l5>;
573	vdda-pll-supply = <&pm8350_l6>;
574	status = "okay";
575};
576
577&pm8350_gpios {
578	gpio-line-names = "ASSIGN1_THERM", /* GPIO_1 */
579			  "LCD_ID",
580			  "SDR_MMW_THERM",
581			  "RF_ID",
582			  "NC",
583			  "VOL_DOWN_N",
584			  "NC",
585			  "NC",
586			  "NC",
587			  "PM8350_OPTION"; /* GPIO_10 */
588
589	vol_down_n: vol-down-n-state {
590		pins = "gpio6";
591		function = "normal";
592		power-source = <1>;
593		bias-pull-up;
594		input-enable;
595	};
596};
597
598&pm8350b_gpios {
599	snapshot_n: snapshot-n-state {
600		pins = "gpio5";
601		function = "normal";
602		power-source = <0>;
603		bias-pull-up;
604		input-enable;
605	};
606
607	focus_n: focus-n-state {
608		pins = "gpio8";
609		function = "normal";
610		power-source = <0>;
611		bias-pull-up;
612		input-enable;
613	};
614};
615
616&pm8450_gpios {
617	gpio-line-names = "FP_LDO_EN", /* GPIO_1 */
618			  "",
619			  "",
620			  "";
621};
622
623&pmk8350_gpios {
624	gpio-line-names = "NC", /* GPIO_1 */
625			  "NC",
626			  "DISP_THERM",
627			  "PMK8350_OPTION";
628};
629
630&remoteproc_adsp {
631	firmware-name = "qcom/sm8350/Sony/nagara/adsp.mbn";
632	status = "okay";
633};
634
635&remoteproc_cdsp {
636	firmware-name = "qcom/sm8350/Sony/nagara/cdsp.mbn";
637	status = "okay";
638};
639
640&remoteproc_slpi {
641	firmware-name = "qcom/sm8350/Sony/nagara/slpi.mbn";
642	status = "okay";
643};
644
645&qupv3_id_0 {
646	status = "okay";
647};
648
649&qupv3_id_1 {
650	status = "okay";
651};
652
653&qupv3_id_2 {
654	status = "okay";
655};
656
657&sdhc_2 {
658	cd-gpios = <&tlmm 92 GPIO_ACTIVE_HIGH>;
659	pinctrl-names = "default", "sleep";
660	pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
661	pinctrl-1 = <&sdc2_sleep_state &sdc2_card_det_n>;
662	vmmc-supply = <&pm8350c_l9>;
663	vqmmc-supply = <&pm8350c_l6>;
664	no-sdio;
665	no-mmc;
666	status = "okay";
667};
668
669&spi10 {
670	status = "okay";
671
672	/* NXP SN1X0 NFC Secure Element @ 0 */
673};
674
675&tlmm {
676	gpio-reserved-ranges = <28 4>;
677
678	ts_reset_default: ts-reset-default-state {
679		pins = "gpio20";
680		function = "gpio";
681		drive-strength = <2>;
682		bias-disable;
683		output-high;
684	};
685
686	ts_int_default: ts-int-default-state {
687		pins = "gpio21";
688		function = "gpio";
689		drive-strength = <2>;
690		bias-disable;
691		input-enable;
692	};
693
694	sdc2_card_det_n: sd-card-det-n-state {
695		pins = "gpio92";
696		function = "gpio";
697		drive-strength = <2>;
698		bias-pull-up;
699	};
700};
701
702&uart7 {
703	status = "okay";
704};
705
706&usb_1 {
707	status = "okay";
708};
709
710&usb_1_dwc3 {
711	dr_mode = "peripheral";
712};
713
714&usb_1_hsphy {
715	vdda-pll-supply = <&pm8350_l5>;
716	vdda18-supply = <&pm8350c_l1>;
717	vdda33-supply = <&pm8350_l2>;
718	status = "okay";
719};
720
721&usb_1_qmpphy {
722	vdda-phy-supply = <&pm8350_l6>;
723	vdda-pll-supply = <&pm8350_l1>;
724	status = "okay";
725};
726