1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2022, Alexander Martinz <amartinz@shiftphones.com>
4 * Copyright (c) 2022, Caleb Connolly <caleb@connolly.tech>
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
11#include "sdm845.dtsi"
12#include "pm8998.dtsi"
13#include "pmi8998.dtsi"
14
15/ {
16	model = "SHIFT SHIFT6mq";
17	compatible = "shift,axolotl", "qcom,sdm845";
18	qcom,msm-id = <321 0x20001>;
19	qcom,board-id = <11 0>;
20
21	aliases {
22		display0 = &framebuffer0;
23		serial0 = &uart9;
24	};
25
26	chosen {
27		#address-cells = <2>;
28		#size-cells = <2>;
29		ranges;
30
31		stdout-path = "serial0";
32
33		/* Use framebuffer setup by the bootloader. */
34		framebuffer0: framebuffer@9d400000 {
35			compatible = "simple-framebuffer";
36			reg = <0x0 0x9d400000 0x0 (1080 * 2160 * 4)>;
37			width = <1080>;
38			height = <2160>;
39			stride = <(1080 * 4)>;
40			format = "a8r8g8b8";
41		};
42	};
43
44	gpio-keys {
45		compatible = "gpio-keys";
46		autorepeat;
47
48		pinctrl-names = "default";
49		pinctrl-0 = <&volume_up_gpio>;
50
51		vol-up {
52			label = "volume_up";
53			linux,code = <KEY_VOLUMEUP>;
54			gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
55			debounce-interval = <15>;
56		};
57	};
58
59	reserved-memory {
60		framebuffer_region@9d400000 {
61			reg = <0x0 0x9d400000 0x0 (1080 * 2160 * 4)>;
62			no-map;
63		};
64
65		ramoops: ramoops@b0000000 {
66			compatible = "ramoops";
67			reg = <0 0xb0000000 0 0x00400000>;
68			record-size = <0x40000>;
69			console-size = <0x40000>;
70			ftrace-size = <0x40000>;
71			pmsg-size = <0x200000>;
72			ecc-size = <0x0>;
73		};
74	};
75
76	battery: battery {
77		compatible = "simple-battery";
78
79		charge-full-design-microamp-hours = <3850000>;
80		voltage-min-design-microvolt = <3600000>;
81		voltage-max-design-microvolt = <4400000>;
82	};
83
84	vph_pwr: vph-pwr-regulator {
85		compatible = "regulator-fixed";
86		regulator-name = "vph_pwr";
87		regulator-min-microvolt = <3700000>;
88		regulator-max-microvolt = <3700000>;
89	};
90
91	vreg_s4a_1p8: pm8998-smps4 {
92		compatible = "regulator-fixed";
93		regulator-name = "vreg_s4a_1p8";
94
95		regulator-min-microvolt = <1800000>;
96		regulator-max-microvolt = <1800000>;
97
98		regulator-always-on;
99		regulator-boot-on;
100
101		vin-supply = <&vph_pwr>;
102	};
103};
104
105&adsp_pas {
106	status = "okay";
107	firmware-name = "qcom/sdm845/axolotl/adsp.mbn";
108};
109
110&apps_rsc {
111	pm8998-rpmh-regulators {
112		compatible = "qcom,pm8998-rpmh-regulators";
113		qcom,pmic-id = "a";
114
115		vdd-s1-supply = <&vph_pwr>;
116		vdd-s2-supply = <&vph_pwr>;
117		vdd-s3-supply = <&vph_pwr>;
118		vdd-s4-supply = <&vph_pwr>;
119		vdd-s5-supply = <&vph_pwr>;
120		vdd-s6-supply = <&vph_pwr>;
121		vdd-s7-supply = <&vph_pwr>;
122		vdd-s8-supply = <&vph_pwr>;
123		vdd-s9-supply = <&vph_pwr>;
124		vdd-s10-supply = <&vph_pwr>;
125		vdd-s11-supply = <&vph_pwr>;
126		vdd-s12-supply = <&vph_pwr>;
127		vdd-s13-supply = <&vph_pwr>;
128		vdd-l1-l27-supply = <&vreg_s7a_1p025>;
129		vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
130		vdd-l3-l11-supply = <&vreg_s7a_1p025>;
131		vdd-l4-l5-supply = <&vreg_s7a_1p025>;
132		vdd-l6-supply = <&vph_pwr>;
133		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
134		vdd-l9-supply = <&vreg_bob>;
135		vdd-l10-l23-l25-supply = <&vreg_bob>;
136		vdd-l13-l19-l21-supply = <&vreg_bob>;
137		vdd-l16-l28-supply = <&vreg_bob>;
138		vdd-l18-l22-supply = <&vreg_bob>;
139		vdd-l20-l24-supply = <&vreg_bob>;
140		vdd-l26-supply = <&vreg_s3a_1p35>;
141		vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
142
143		vreg_s2a_1p125: smps2 {
144			regulator-min-microvolt = <1100000>;
145			regulator-max-microvolt = <1100000>;
146		};
147
148		vreg_s3a_1p35: smps3 {
149			regulator-min-microvolt = <1352000>;
150			regulator-max-microvolt = <1352000>;
151		};
152
153		vreg_s5a_2p04: smps5 {
154			regulator-min-microvolt = <1904000>;
155			regulator-max-microvolt = <2040000>;
156		};
157
158		vreg_s7a_1p025: smps7 {
159			regulator-min-microvolt = <900000>;
160			regulator-max-microvolt = <1028000>;
161		};
162
163		vdd_qusb_hs0:
164		vdda_hp_pcie_core:
165		vdda_mipi_csi0_0p9:
166		vdda_mipi_csi1_0p9:
167		vdda_mipi_csi2_0p9:
168		vdda_mipi_dsi0_pll:
169		vdda_mipi_dsi1_pll:
170		vdda_qlink_lv:
171		vdda_qlink_lv_ck:
172		vdda_qrefs_0p875:
173		vdda_pcie_core:
174		vdda_pll_cc_ebi01:
175		vdda_pll_cc_ebi23:
176		vdda_sp_sensor:
177		vdda_ufs1_core:
178		vdda_ufs2_core:
179		vdda_usb1_ss_core:
180		vdda_usb2_ss_core:
181		vreg_l1a_0p875: ldo1 {
182			regulator-min-microvolt = <880000>;
183			regulator-max-microvolt = <880000>;
184			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
185		};
186
187		vddpx_10:
188		vreg_l2a_1p2: ldo2 {
189			regulator-min-microvolt = <1200000>;
190			regulator-max-microvolt = <1200000>;
191			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
192			regulator-always-on;
193		};
194
195		vreg_l3a_1p0: ldo3 {
196			regulator-min-microvolt = <1000000>;
197			regulator-max-microvolt = <1000000>;
198			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
199		};
200
201		vdd_wcss_cx:
202		vdd_wcss_mx:
203		vdda_wcss_pll:
204		vreg_l5a_0p8: ldo5 {
205			regulator-min-microvolt = <800000>;
206			regulator-max-microvolt = <800000>;
207			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
208		};
209
210		vddpx_13:
211		vreg_l6a_1p8: ldo6 {
212			regulator-min-microvolt = <1856000>;
213			regulator-max-microvolt = <1856000>;
214			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
215		};
216
217		vreg_l7a_1p8: ldo7 {
218			regulator-min-microvolt = <1800000>;
219			regulator-max-microvolt = <1800000>;
220			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
221		};
222
223		vreg_l8a_1p2: ldo8 {
224			regulator-min-microvolt = <1200000>;
225			regulator-max-microvolt = <1248000>;
226			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
227		};
228
229		vreg_l9a_1p8: ldo9 {
230			regulator-min-microvolt = <1704000>;
231			regulator-max-microvolt = <2928000>;
232			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
233		};
234
235		vreg_l10a_1p8: ldo10 {
236			regulator-min-microvolt = <1704000>;
237			regulator-max-microvolt = <2928000>;
238			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
239		};
240
241		vreg_l11a_1p0: ldo11 {
242			regulator-min-microvolt = <1000000>;
243			regulator-max-microvolt = <1048000>;
244			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
245		};
246
247		vdd_qfprom:
248		vdd_qfprom_sp:
249		vdda_apc1_cs_1p8:
250		vdda_gfx_cs_1p8:
251		vdda_qrefs_1p8:
252		vdda_qusb_hs0_1p8:
253		vddpx_11:
254		vreg_l12a_1p8: ldo12 {
255			regulator-min-microvolt = <1800000>;
256			regulator-max-microvolt = <1800000>;
257			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
258		};
259
260		vddpx_2:
261		vreg_l13a_2p95: ldo13 {
262			regulator-min-microvolt = <1800000>;
263			regulator-max-microvolt = <2960000>;
264			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
265		};
266
267		vreg_l14a_1p88: ldo14 {
268			regulator-min-microvolt = <1800000>;
269			regulator-max-microvolt = <1800000>;
270			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
271		};
272
273		vreg_l15a_1p8: ldo15 {
274			regulator-min-microvolt = <1800000>;
275			regulator-max-microvolt = <1800000>;
276			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
277		};
278
279		vreg_l16a_2p7: ldo16 {
280			regulator-min-microvolt = <2704000>;
281			regulator-max-microvolt = <2704000>;
282			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
283		};
284
285		vreg_l17a_1p3: ldo17 {
286			regulator-min-microvolt = <1304000>;
287			regulator-max-microvolt = <1304000>;
288			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
289		};
290
291		vreg_l18a_2p7: ldo18 {
292			regulator-min-microvolt = <2704000>;
293			regulator-max-microvolt = <2960000>;
294			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
295		};
296
297		vreg_l19a_3p0: ldo19 {
298			regulator-min-microvolt = <2856000>;
299			regulator-max-microvolt = <3104000>;
300			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
301		};
302
303		vreg_l20a_2p95: ldo20 {
304			regulator-min-microvolt = <2704000>;
305			regulator-max-microvolt = <2960000>;
306			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
307		};
308
309		vreg_l21a_2p95: ldo21 {
310			regulator-min-microvolt = <2704000>;
311			regulator-max-microvolt = <2960000>;
312			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
313		};
314
315		vreg_l22a_2p85: ldo22 {
316			regulator-min-microvolt = <2864000>;
317			regulator-max-microvolt = <3312000>;
318			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
319		};
320
321		vreg_l23a_3p3: ldo23 {
322			regulator-min-microvolt = <3000000>;
323			regulator-max-microvolt = <3312000>;
324			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
325		};
326
327		vdda_qusb_hs0_3p1:
328		vreg_l24a_3p075: ldo24 {
329			regulator-min-microvolt = <3088000>;
330			regulator-max-microvolt = <3088000>;
331			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
332		};
333
334		vreg_l25a_3p3: ldo25 {
335			regulator-min-microvolt = <3300000>;
336			regulator-max-microvolt = <3312000>;
337			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
338		};
339
340		vdda_hp_pcie_1p2:
341		vdda_hv_ebi0:
342		vdda_hv_ebi1:
343		vdda_hv_ebi2:
344		vdda_hv_ebi3:
345		vdda_mipi_csi_1p25:
346		vdda_mipi_dsi0_1p2:
347		vdda_mipi_dsi1_1p2:
348		vdda_pcie_1p2:
349		vdda_ufs1_1p2:
350		vdda_ufs2_1p2:
351		vdda_usb1_ss_1p2:
352		vdda_usb2_ss_1p2:
353		vreg_l26a_1p2: ldo26 {
354			regulator-min-microvolt = <1200000>;
355			regulator-max-microvolt = <1200000>;
356			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
357		};
358
359		vreg_l28a_3p0: ldo28 {
360			regulator-min-microvolt = <2856000>;
361			regulator-max-microvolt = <3008000>;
362			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
363		};
364
365		vreg_lvs1a_1p8: lvs1 {
366			regulator-min-microvolt = <1800000>;
367			regulator-max-microvolt = <1800000>;
368		};
369
370		vreg_lvs2a_1p8: lvs2 {
371			regulator-min-microvolt = <1800000>;
372			regulator-max-microvolt = <1800000>;
373		};
374	};
375
376	pmi8998-rpmh-regulators {
377		compatible = "qcom,pmi8998-rpmh-regulators";
378		qcom,pmic-id = "b";
379
380		vdd-bob-supply = <&vph_pwr>;
381
382		vreg_bob: bob {
383			regulator-min-microvolt = <3312000>;
384			regulator-max-microvolt = <3600000>;
385			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
386			regulator-allow-bypass;
387		};
388	};
389
390	pm8005-rpmh-regulators {
391		compatible = "qcom,pm8005-rpmh-regulators";
392		qcom,pmic-id = "c";
393
394		vdd-s1-supply = <&vph_pwr>;
395		vdd-s2-supply = <&vph_pwr>;
396		vdd-s3-supply = <&vph_pwr>;
397		vdd-s4-supply = <&vph_pwr>;
398
399		vreg_s3c_0p6: smps3 {
400			regulator-min-microvolt = <600000>;
401			regulator-max-microvolt = <600000>;
402		};
403	};
404};
405
406&cdsp_pas {
407	status = "okay";
408	firmware-name = "qcom/sdm845/axolotl/cdsp.mbn";
409};
410
411&dsi0 {
412	status = "okay";
413	vdda-supply = <&vdda_mipi_dsi0_1p2>;
414
415	panel@0 {
416		compatible = "visionox,rm69299-shift";
417		status = "okay";
418		reg = <0>;
419		vdda-supply = <&vreg_l14a_1p88>;
420		vdd3p3-supply = <&vreg_l28a_3p0>;
421
422		#address-cells = <1>;
423		#size-cells = <0>;
424
425		reset-gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>;
426
427		pinctrl-names = "default", "sleep";
428		pinctrl-0 = <&sde_dsi_active &sde_te_active>;
429		pinctrl-1 = <&sde_dsi_suspend &sde_te_suspend>;
430
431		port {
432			panel_in_0: endpoint {
433				remote-endpoint = <&dsi0_out>;
434			};
435		};
436	};
437};
438
439&dsi0_out {
440	remote-endpoint = <&panel_in_0>;
441	data-lanes = <0 1 2 3>;
442};
443
444&dsi0_phy {
445	status = "okay";
446	vdds-supply = <&vdda_mipi_dsi0_pll>;
447};
448
449&gcc {
450	protected-clocks = <GCC_QSPI_CORE_CLK>,
451			   <GCC_QSPI_CORE_CLK_SRC>,
452			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
453			   <GCC_LPASS_Q6_AXI_CLK>,
454			   <GCC_LPASS_SWAY_CLK>;
455};
456
457&gmu {
458	status = "okay";
459};
460
461&gpu {
462	status = "okay";
463
464	zap-shader {
465		memory-region = <&gpu_mem>;
466		firmware-name = "qcom/sdm845/axolotl/a630_zap.mbn";
467	};
468};
469
470&i2c5 {
471	status="okay";
472
473	touchscreen@38 {
474		compatible = "focaltech,fts8719";
475		reg = <0x38>;
476		wakeup-source;
477		interrupt-parent = <&tlmm>;
478		interrupts = <125 0x2>;
479		vdd-supply = <&vreg_l28a_3p0>;
480		vcc-i2c-supply = <&vreg_l14a_1p88>;
481
482		pinctrl-names = "default", "suspend";
483		pinctrl-0 = <&ts_int_active &ts_reset_active>;
484		pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
485
486		reset-gpio = <&tlmm 99 GPIO_ACTIVE_HIGH>;
487		irq-gpio = <&tlmm 125 GPIO_TRANSITORY>;
488		touchscreen-size-x = <1080>;
489		touchscreen-size-y = <2160>;
490		focaltech,max-touch-number = <5>;
491	};
492};
493
494&ipa {
495	status = "okay";
496
497	memory-region = <&ipa_fw_mem>;
498	firmware-name = "qcom/sdm845/axolotl/ipa_fws.mbn";
499};
500
501&mdss {
502	status = "okay";
503};
504
505&mss_pil {
506	status = "okay";
507	firmware-name = "qcom/sdm845/axolotl/mba.mbn", "qcom/sdm845/axolotl/modem.mbn";
508};
509
510&pm8998_gpio {
511	volume_up_gpio: pm8998_gpio6 {
512		pinconf {
513			pins = "gpio6";
514			function = "normal";
515			input-enable;
516			bias-pull-up;
517			qcom,drive-strength = <0>;
518		};
519	};
520};
521
522&pm8998_pon {
523	volume_down_resin: resin {
524		compatible = "qcom,pm8941-resin";
525		interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
526		debounce = <15625>;
527		bias-pull-up;
528		linux,code = <KEY_VOLUMEDOWN>;
529	};
530};
531
532&qup_uart9_default {
533	pinconf-rx {
534		pins = "gpio5";
535		drive-strength = <2>;
536		bias-pull-up;
537	};
538
539	pinconf-tx {
540		pins = "gpio4";
541		drive-strength = <2>;
542		bias-disable;
543	};
544};
545
546&qupv3_id_0 {
547	status = "okay";
548};
549
550&qupv3_id_1 {
551	status = "okay";
552};
553
554&tlmm {
555	gpio-reserved-ranges = <0 4>, <81 4>;
556
557	sde_dsi_active: sde-dsi-active {
558		mux {
559			pins = "gpio6", "gpio11";
560			function = "gpio";
561		};
562
563		config {
564			pins = "gpio6", "gpio11";
565			drive-strength = <8>;
566			bias-disable;
567		};
568	};
569
570	sde_dsi_suspend: sde-dsi-suspend {
571		mux {
572			pins = "gpio6", "gpio11";
573			function = "gpio";
574		};
575
576		config {
577			pins = "gpio6", "gpio11";
578			drive-strength = <2>;
579			bias-pull-down;
580		};
581	};
582
583	sde_te_active: sde-te-active {
584		mux {
585			pins = "gpio10";
586			function = "mdp_vsync";
587		};
588
589		config {
590			pins = "gpio10";
591			drive-strength = <2>;
592			bias-pull-down;
593		};
594	};
595
596	sde_te_suspend: sde-te-suspend {
597		mux {
598			pins = "gpio10";
599			function = "mdp_vsync";
600		};
601
602		config {
603			pins = "gpio10";
604			drive-strength = <2>;
605			bias-pull-down;
606		};
607	};
608
609	ts_int_active: ts-int-active {
610		mux {
611			pins = "gpio125";
612			function = "gpio";
613		};
614
615		config {
616			pins = "gpio125";
617			drive-strength = <8>;
618			bias-pull-up;
619			input-enable;
620		};
621	};
622
623	ts_int_suspend: ts-int-suspend {
624		mux {
625			pins = "gpio125";
626			function = "gpio";
627		};
628
629		config {
630			pins = "gpio125";
631			drive-strength = <2>;
632			bias-pull-down;
633			input-enable;
634		};
635	};
636
637	ts_reset_active: ts-reset-active {
638		mux {
639			pins = "gpio99";
640			function = "gpio";
641		};
642
643		config {
644			pins = "gpio99";
645			drive-strength = <8>;
646			bias-pull-up;
647		};
648	};
649
650	ts_reset_suspend: ts-reset-suspend {
651		mux {
652			pins = "gpio99";
653			function = "gpio";
654		};
655
656		config {
657			pins = "gpio99";
658			drive-strength = <2>;
659			bias-pull-down;
660		};
661	};
662};
663
664&uart6 {
665	status = "okay";
666
667	bluetooth {
668		compatible = "qcom,wcn3990-bt";
669
670		vddio-supply = <&vreg_s4a_1p8>;
671		vddxo-supply = <&vreg_l7a_1p8>;
672		vddrf-supply = <&vreg_l17a_1p3>;
673		vddch0-supply = <&vreg_l25a_3p3>;
674		max-speed = <3200000>;
675	};
676};
677
678&uart9 {
679	status = "okay";
680};
681
682&ufs_mem_hc {
683	status = "okay";
684
685	reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
686
687	vcc-supply = <&vreg_l20a_2p95>;
688	vcc-max-microamp = <600000>;
689};
690
691&ufs_mem_phy {
692	status = "okay";
693
694	vdda-phy-supply = <&vdda_ufs1_core>;
695	vdda-pll-supply = <&vdda_ufs1_1p2>;
696};
697
698&usb_1 {
699	status = "okay";
700};
701
702&usb_1_dwc3 {
703	dr_mode = "peripheral";
704};
705
706&usb_1_hsphy {
707	status = "okay";
708
709	vdd-supply = <&vreg_l1a_0p875>;
710	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
711	vdda-pll-supply = <&vreg_l12a_1p8>;
712};
713
714&usb_1_qmpphy {
715	status = "okay";
716
717	vdda-phy-supply = <&vreg_l26a_1p2>;
718	vdda-pll-supply = <&vreg_l1a_0p875>;
719};
720
721&venus {
722	status = "okay";
723	firmware-name = "qcom/sdm845/axolotl/venus.mbn";
724};
725
726&wifi {
727	status = "okay";
728
729	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
730	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
731	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
732	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
733	vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
734
735	qcom,snoc-host-cap-8bit-quirk;
736};
737