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