xref: /linux/arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts (revision d8d2b1f81530988abe2e2bfaceec1c5d30b9a0b4)
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2020, Xilin Wu <strongtz@yeah.net>
4 * Copyright (c) 2022, Molly Sophia <mollysophia379@gmail.com>
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/arm/qcom,ids.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
12#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
13#include <dt-bindings/input/linux-event-codes.h>
14#include <dt-bindings/sound/qcom,q6afe.h>
15#include <dt-bindings/sound/qcom,q6asm.h>
16#include "sdm845.dtsi"
17#include "sdm845-wcd9340.dtsi"
18#include "pm8998.dtsi"
19#include "pmi8998.dtsi"
20#include "pm8005.dtsi"
21
22/*
23 * Delete following upstream (sdm845.dtsi) reserved
24 * memory mappings which are different in this device.
25 */
26/delete-node/ &rmtfs_mem;
27/delete-node/ &adsp_mem;
28/delete-node/ &wlan_msa_mem;
29/delete-node/ &mpss_region;
30/delete-node/ &venus_mem;
31/delete-node/ &cdsp_mem;
32/delete-node/ &mba_region;
33/delete-node/ &slpi_mem;
34/delete-node/ &spss_mem;
35
36/ {
37	model = "Xiaomi Mi MIX 2S";
38	compatible = "xiaomi,polaris", "qcom,sdm845";
39	chassis-type = "handset";
40
41	/* required for bootloader to select correct board */
42	qcom,msm-id = <QCOM_ID_SDM845 0x20001>;
43	qcom,board-id = <0x2a 0x0>;
44
45	aliases {
46		serial0 = &uart9;
47		serial1 = &uart6;
48	};
49
50	gpio-keys {
51		compatible = "gpio-keys";
52		autorepeat;
53
54		pinctrl-names = "default";
55		pinctrl-0 = <&volume_up_gpio>;
56
57		key-vol-up {
58			label = "Volume Up";
59			linux,code = <KEY_VOLUMEUP>;
60			gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
61			debounce-interval = <15>;
62		};
63	};
64
65	reserved-memory {
66		adsp_mem: memory@8c500000 {
67			reg = <0 0x8c500000 0 0x1e00000>;
68			no-map;
69		};
70
71		wlan_msa_mem: memory@8e300000 {
72			reg = <0 0x8e300000 0 0x100000>;
73			no-map;
74		};
75
76		mpss_region: memory@8e400000 {
77			reg = <0 0x8e400000 0 0x7800000>;
78			no-map;
79		};
80
81		venus_mem: memory@95c00000 {
82			reg = <0 0x95c00000 0 0x500000>;
83			no-map;
84		};
85
86		cdsp_mem: memory@96100000 {
87			reg = <0 0x96100000 0 0x800000>;
88			no-map;
89		};
90
91		mba_region: memory@96900000 {
92			reg = <0 0x96900000 0 0x200000>;
93			no-map;
94		};
95
96		slpi_mem: memory@96b00000 {
97			reg = <0 0x96b00000 0 0x1400000>;
98			no-map;
99		};
100
101		spss_mem: memory@97f00000 {
102			reg = <0 0x97f00000 0 0x100000>;
103			no-map;
104		};
105
106		rmtfs_mem: memory@f6301000 {
107			compatible = "qcom,rmtfs-mem";
108			reg = <0 0xf6301000 0 0x200000>;
109			no-map;
110
111			qcom,client-id = <1>;
112			qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
113		};
114	};
115
116	battery: battery {
117		compatible = "simple-battery";
118
119		charge-full-design-microamp-hours = <3400000>;
120		voltage-min-design-microvolt = <3400000>;
121		voltage-max-design-microvolt = <4400000>;
122	};
123
124	vreg_tp_vddio: vreg-tp-vddio {
125		compatible = "regulator-fixed";
126		regulator-name = "vreg_tp_vddio";
127
128		regulator-min-microvolt = <1800000>;
129		regulator-max-microvolt = <1800000>;
130
131		gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>;
132		regulator-always-on;
133		regulator-boot-on;
134		enable-active-high;
135	};
136
137	vreg_s4a_1p8: vreg-s4a-1p8 {
138		compatible = "regulator-fixed";
139		regulator-name = "vreg_s4a_1p8";
140
141		regulator-min-microvolt = <1800000>;
142		regulator-max-microvolt = <1800000>;
143		regulator-always-on;
144	};
145};
146
147&apps_rsc {
148	regulators-0 {
149		compatible = "qcom,pm8998-rpmh-regulators";
150		qcom,pmic-id = "a";
151
152		vreg_s2a_1p1: smps2 {
153			regulator-min-microvolt = <1100000>;
154			regulator-max-microvolt = <1100000>;
155		};
156
157		vreg_s3a_1p35: smps3 {
158			regulator-min-microvolt = <1352000>;
159			regulator-max-microvolt = <1352000>;
160		};
161
162		vreg_s5a_2p04: smps5 {
163			regulator-min-microvolt = <1904000>;
164			regulator-max-microvolt = <2040000>;
165		};
166
167		vreg_s7a_1p025: smps7 {
168			regulator-min-microvolt = <900000>;
169			regulator-max-microvolt = <1028000>;
170		};
171
172		vdda_mipi_dsi0_pll:
173		vdda_ufs1_core:
174		vreg_l1a_0p875: ldo1 {
175			regulator-min-microvolt = <880000>;
176			regulator-max-microvolt = <880000>;
177			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
178		};
179
180		vreg_l2a_1p2: ldo2 {
181			regulator-min-microvolt = <1200000>;
182			regulator-max-microvolt = <1200000>;
183			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
184			regulator-always-on;
185		};
186
187		vreg_l3a_1p0: ldo3 {
188			regulator-min-microvolt = <1000000>;
189			regulator-max-microvolt = <1000000>;
190			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
191		};
192
193		vreg_l5a_0p8: ldo5 {
194			regulator-min-microvolt = <800000>;
195			regulator-max-microvolt = <800000>;
196			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
197		};
198
199		vreg_l6a_1p8: ldo6 {
200			regulator-min-microvolt = <1856000>;
201			regulator-max-microvolt = <1856000>;
202			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
203		};
204
205		vreg_l7a_1p8: ldo7 {
206			regulator-min-microvolt = <1800000>;
207			regulator-max-microvolt = <1800000>;
208			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
209		};
210
211		vreg_l8a_1p2: ldo8 {
212			regulator-min-microvolt = <1200000>;
213			regulator-max-microvolt = <1248000>;
214			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
215		};
216
217		vreg_l9a_1p8: ldo9 {
218			regulator-min-microvolt = <1704000>;
219			regulator-max-microvolt = <2928000>;
220			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
221		};
222
223		vreg_l10a_2p95: ldo10 {
224			regulator-min-microvolt = <1704000>;
225			regulator-max-microvolt = <2928000>;
226			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
227		};
228
229		vreg_l11a_1p05: ldo11 {
230			regulator-min-microvolt = <1000000>;
231			regulator-max-microvolt = <1048000>;
232			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
233		};
234
235		vreg_l12a_1p8: ldo12 {
236			regulator-min-microvolt = <1800000>;
237			regulator-max-microvolt = <1800000>;
238			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
239		};
240
241		vreg_l13a_2p95: ldo13 {
242			regulator-min-microvolt = <1800000>;
243			regulator-max-microvolt = <2960000>;
244			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
245		};
246
247		vreg_l14a_1p8: ldo14 {
248			regulator-min-microvolt = <1800000>;
249			regulator-max-microvolt = <1880000>;
250			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
251			regulator-always-on;
252		};
253
254		vreg_l15a_1p8: ldo15 {
255			regulator-min-microvolt = <1800000>;
256			regulator-max-microvolt = <1800000>;
257			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
258		};
259
260		vreg_l16a_2p7: ldo16 {
261			regulator-min-microvolt = <2704000>;
262			regulator-max-microvolt = <2704000>;
263			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
264		};
265
266		vreg_l17a_1p3: ldo17 {
267			regulator-min-microvolt = <1304000>;
268			regulator-max-microvolt = <1304000>;
269			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
270			regulator-always-on;
271		};
272
273		vreg_l18a_2p9: ldo18 {
274			regulator-min-microvolt = <2704000>;
275			regulator-max-microvolt = <2960000>;
276			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
277		};
278
279		vreg_l19a_3p1: ldo19 {
280			regulator-min-microvolt = <2856000>;
281			regulator-max-microvolt = <3104000>;
282			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
283		};
284
285		vreg_l20a_2p95: ldo20 {
286			regulator-min-microvolt = <2704000>;
287			regulator-max-microvolt = <2960000>;
288			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
289		};
290
291		vreg_l21a_2p95: ldo21 {
292			regulator-min-microvolt = <2704000>;
293			regulator-max-microvolt = <2960000>;
294			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
295		};
296
297		vreg_l22a_3p3: ldo22 {
298			regulator-min-microvolt = <2864000>;
299			regulator-max-microvolt = <3312000>;
300			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
301		};
302
303		vreg_l23a_3p3: ldo23 {
304			regulator-min-microvolt = <3000000>;
305			regulator-max-microvolt = <3312000>;
306			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
307		};
308
309		vreg_l24a_3p075: ldo24 {
310			regulator-min-microvolt = <3088000>;
311			regulator-max-microvolt = <3088000>;
312			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
313		};
314
315		vreg_l25a_3p3: ldo25 {
316			regulator-min-microvolt = <3000000>;
317			regulator-max-microvolt = <3312000>;
318			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
319			regulator-always-on;
320		};
321
322		vdda_mipi_dsi0_1p2:
323		vdda_ufs1_1p2:
324		vreg_l26a_1p2: ldo26 {
325			regulator-min-microvolt = <1200000>;
326			regulator-max-microvolt = <1200000>;
327			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
328		};
329
330		vreg_l28a_3p0: ldo28 {
331			regulator-min-microvolt = <2856000>;
332			regulator-max-microvolt = <3008000>;
333			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
334			regulator-always-on;
335		};
336
337		vreg_lvs1a_1p8: lvs1 {
338			regulator-min-microvolt = <1800000>;
339			regulator-max-microvolt = <1800000>;
340		};
341
342		vreg_lvs2a_1p8: lvs2 {
343			regulator-min-microvolt = <1800000>;
344			regulator-max-microvolt = <1800000>;
345		};
346	};
347
348	regulators-1 {
349		compatible = "qcom,pmi8998-rpmh-regulators";
350		qcom,pmic-id = "b";
351
352		vreg_bob: bob {
353			regulator-min-microvolt = <3312000>;
354			regulator-max-microvolt = <3600000>;
355			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
356			regulator-allow-bypass;
357		};
358	};
359
360	regulators-2 {
361		compatible = "qcom,pm8005-rpmh-regulators";
362		qcom,pmic-id = "c";
363
364		vreg_smp3c_0p6: smps3 {
365			regulator-min-microvolt = <600000>;
366			regulator-max-microvolt = <600000>;
367			regulator-always-on;
368		};
369	};
370};
371
372&cdsp_pas {
373	firmware-name = "qcom/sdm845/polaris/cdsp.mbn";
374	status = "okay";
375};
376
377&gcc {
378	protected-clocks = <GCC_QSPI_CORE_CLK>,
379				<GCC_QSPI_CORE_CLK_SRC>,
380				<GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
381				<GCC_LPASS_Q6_AXI_CLK>,
382				<GCC_LPASS_SWAY_CLK>;
383};
384
385&gpi_dma0 {
386	status = "okay";
387};
388
389&gpi_dma1 {
390	status = "okay";
391};
392
393&gpu {
394	status = "okay";
395
396	zap-shader {
397		memory-region = <&gpu_mem>;
398		firmware-name = "qcom/sdm845/polaris/a630_zap.mbn";
399	};
400};
401
402&ibb {
403	regulator-min-microvolt = <4600000>;
404	regulator-max-microvolt = <6000000>;
405	regulator-over-current-protection;
406	regulator-pull-down;
407	regulator-soft-start;
408	qcom,discharge-resistor-kohms = <300>;
409};
410
411&ipa {
412	qcom,gsi-loader = "self";
413	memory-region = <&ipa_fw_mem>;
414	firmware-name = "qcom/sdm845/polaris/ipa_fws.mbn";
415	status = "okay";
416};
417
418&i2c14 {
419	clock-frequency = <400000>;
420	status = "okay";
421
422	touchscreen@20 {
423		compatible = "syna,rmi4-i2c";
424		reg = <0x20>;
425		#address-cells = <1>;
426		#size-cells = <0>;
427		interrupts-extended = <&tlmm 125 0x2008>;
428
429		pinctrl-names = "default", "sleep";
430		pinctrl-0 = <&ts_int_default &ts_reset_default>;
431		pinctrl-1 = <&ts_int_sleep &ts_reset_sleep>;
432
433		vdd-supply = <&vreg_l28a_3p0>;
434		vio-supply = <&vreg_tp_vddio>;
435
436		syna,startup-delay-ms = <0xc8>;
437		syna,reset-delay-ms = <0xc8>;
438
439		rmi4-f01@1 {
440			syna,nosleep-mode = <0x1>;
441			reg = <0x1>;
442		};
443
444		rmi4-f12@12 {
445			reg = <0x12>;
446			syna,rezero-wait-ms = <0xc8>;
447			syna,clip-x-high = <0x438>;
448			syna,clip-y-high = <0x870>;
449			syna,sensor-type = <0x1>;
450			syna,clip-x-low = <0x0>;
451			syna,clip-y-low = <0x0>;
452		};
453	};
454};
455
456&lab {
457	regulator-min-microvolt = <4600000>;
458	regulator-max-microvolt = <6000000>;
459	regulator-soft-start;
460	regulator-pull-down;
461};
462
463&mdss {
464	status = "okay";
465};
466
467&mdss_dsi0 {
468	vdda-supply = <&vdda_mipi_dsi0_1p2>;
469	status = "okay";
470
471	display_panel: panel@0 {
472		compatible = "jdi,fhd-nt35596s";
473		#address-cells = <1>;
474		#size-cells = <0>;
475		reg = <0>;
476
477		reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
478		vddio-supply = <&vreg_l14a_1p8>;
479		backlight = <&pmi8998_wled>;
480		vddpos-supply = <&lab>;
481		vddneg-supply = <&ibb>;
482
483		pinctrl-names = "default", "sleep";
484		pinctrl-0 = <&sde_dsi_active>;
485		pinctrl-1 = <&sde_dsi_suspend>;
486
487		port {
488			panel_in: endpoint {
489				remote-endpoint = <&mdss_dsi0_out>;
490			};
491		};
492	};
493};
494
495&mdss_dsi0_out {
496	remote-endpoint = <&panel_in>;
497	data-lanes = <0 1 2 3>;
498};
499
500&mdss_dsi0_phy {
501	vdds-supply = <&vdda_mipi_dsi0_pll>;
502	status = "okay";
503};
504
505&mss_pil {
506	firmware-name = "qcom/sdm845/polaris/mba.mbn", "qcom/sdm845/polaris/modem.mbn";
507	status = "okay";
508};
509
510&pmi8998_wled {
511	qcom,current-limit-microamp = <20000>;
512	qcom,current-boost-limit = <970>;
513	qcom,ovp-millivolt = <19600>;
514	qcom,switching-freq = <600>;
515	qcom,num-strings = <4>;
516	qcom,cabc;
517
518	status = "okay";
519};
520
521&pm8998_gpios {
522	volume_up_gpio: pm8998-gpio6-state {
523		pinconf {
524			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
525			function = "normal";
526			pins = "gpio6";
527			input-enable;
528			bias-pull-up;
529		};
530	};
531};
532
533&pm8998_resin {
534	linux,code = <KEY_VOLUMEDOWN>;
535	status = "okay";
536};
537
538&q6afedai {
539	dai@22 {
540		reg = <QUATERNARY_MI2S_RX>;
541		qcom,sd-lines = <0>;
542	};
543};
544
545&q6asmdai {
546	dai@0 {
547		reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
548	};
549
550	dai@1 {
551		reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
552	};
553
554	dai@2 {
555		reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
556	};
557};
558
559&qupv3_id_0 {
560	status = "okay";
561};
562
563&qupv3_id_1 {
564	status = "okay";
565};
566
567&qup_i2c14_default {
568	drive-strength = <2>;
569	bias-disable;
570};
571
572&tlmm {
573	gpio-reserved-ranges = <0 4>, <81 4>;
574
575	ts_reset_default: ts-reset-default-state {
576		pins = "gpio99";
577		function = "gpio";
578		drive-strength = <16>;
579		output-high;
580	};
581
582	ts_int_default: ts-int-default-state {
583		pins = "gpio125";
584		function = "gpio";
585		bias-pull-down;
586		drive-strength = <16>;
587	};
588
589	ts_reset_sleep: ts-reset-sleep-state {
590		pins = "gpio99";
591		function = "gpio";
592		bias-disable;
593		drive-strength = <2>;
594	};
595
596	ts_int_sleep: ts-int-sleep-state {
597		pins = "gpio125";
598		function = "gpio";
599		bias-pull-down;
600		drive-strength = <2>;
601	};
602
603	sde_dsi_active: sde-dsi-active-state {
604		pins = "gpio6", "gpio10";
605		function = "gpio";
606		drive-strength = <8>;
607		bias-disable;
608	};
609
610	sde_dsi_suspend: sde-dsi-suspend-state {
611		pins = "gpio6", "gpio10";
612		function = "gpio";
613		drive-strength = <2>;
614		bias-pull-down;
615	};
616};
617
618&uart6 {
619	status = "okay";
620
621	pinctrl-0 = <&qup_uart6_4pin>;
622
623	bluetooth {
624		compatible = "qcom,wcn3990-bt";
625
626		/* This path is relative to the qca/ subdir under lib/firmware. */
627		firmware-name = "polaris/crnv21.bin";
628
629		vddio-supply = <&vreg_s4a_1p8>;
630		vddxo-supply = <&vreg_l7a_1p8>;
631		vddrf-supply = <&vreg_l17a_1p3>;
632		vddch0-supply = <&vreg_l25a_3p3>;
633		max-speed = <3200000>;
634	};
635};
636
637&usb_1 {
638	/* We'll use this as USB 2.0 only */
639	qcom,select-utmi-as-pipe-clk;
640	status = "okay";
641};
642
643&usb_1_dwc3 {
644	dr_mode = "peripheral";
645
646	/* Fastest mode for USB 2 */
647	maximum-speed = "high-speed";
648
649	/* Remove USB3 phy */
650	phys = <&usb_1_hsphy>;
651	phy-names = "usb2-phy";
652};
653
654&usb_1_hsphy {
655	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
656	vdda-pll-supply = <&vreg_l12a_1p8>;
657	vdd-supply = <&vreg_l1a_0p875>;
658
659	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
660	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
661	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
662	qcom,imp-res-offset-value = <8>;
663
664	status = "okay";
665};
666
667&usb_1_qmpphy {
668	vdda-pll-supply = <&vreg_l1a_0p875>;
669	vdda-phy-supply = <&vreg_l26a_1p2>;
670	status = "okay";
671};
672
673&ufs_mem_hc {
674	reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
675	vcc-supply = <&vreg_l20a_2p95>;
676	vcc-max-microamp = <800000>;
677	status = "okay";
678};
679
680&ufs_mem_phy {
681	vdda-phy-supply = <&vdda_ufs1_core>;
682	vdda-pll-supply = <&vdda_ufs1_1p2>;
683	status = "okay";
684};
685
686&venus {
687	firmware-name = "qcom/sdm845/polaris/venus.mbn";
688	status = "okay";
689};
690
691&wcd9340 {
692	reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
693	vdd-buck-sido-supply = <&vreg_s4a_1p8>;
694	vdd-buck-supply = <&vreg_s4a_1p8>;
695	vdd-tx-supply = <&vreg_s4a_1p8>;
696	vdd-rx-supply = <&vreg_s4a_1p8>;
697	vdd-io-supply = <&vreg_s4a_1p8>;
698
699	qcom,micbias1-microvolt = <2700000>;
700	qcom,micbias2-microvolt = <1800000>;
701	qcom,micbias3-microvolt = <2700000>;
702	qcom,micbias4-microvolt = <2700000>;
703};
704
705&wifi {
706	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
707	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
708	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
709	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
710	vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
711	status = "okay";
712};
713