xref: /freebsd/sys/contrib/device-tree/src/arm64/qcom/sdm845-xiaomi-beryllium.dts (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1// SPDX-License-Identifier: GPL-2.0
2
3/dts-v1/;
4
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
7#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
8#include <dt-bindings/sound/qcom,q6afe.h>
9#include <dt-bindings/sound/qcom,q6asm.h>
10#include "sdm845.dtsi"
11#include "pm8998.dtsi"
12#include "pmi8998.dtsi"
13
14/*
15 * Delete following upstream (sdm845.dtsi) reserved
16 * memory mappings which are different in this device.
17 */
18/delete-node/ &tz_mem;
19/delete-node/ &adsp_mem;
20/delete-node/ &wlan_msa_mem;
21/delete-node/ &mpss_region;
22/delete-node/ &venus_mem;
23/delete-node/ &cdsp_mem;
24/delete-node/ &mba_region;
25/delete-node/ &slpi_mem;
26/delete-node/ &spss_mem;
27/delete-node/ &rmtfs_mem;
28
29/ {
30	model = "Xiaomi Pocophone F1";
31	compatible = "xiaomi,beryllium", "qcom,sdm845";
32
33	/* required for bootloader to select correct board */
34	qcom,board-id = <69 0>;
35	qcom,msm-id = <321 0x20001>;
36
37	aliases {
38		hsuart0 = &uart6;
39	};
40
41	gpio-keys {
42		compatible = "gpio-keys";
43		autorepeat;
44
45		pinctrl-names = "default";
46		pinctrl-0 = <&vol_up_pin_a>;
47
48		vol-up {
49			label = "Volume Up";
50			linux,code = <KEY_VOLUMEUP>;
51			gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
52		};
53	};
54
55	/* Reserved memory changes from downstream */
56	reserved-memory {
57		tz_mem: memory@86200000 {
58			reg = <0 0x86200000 0 0x4900000>;
59			no-map;
60		};
61
62		adsp_mem: memory@8c500000 {
63			reg = <0 0x8c500000 0 0x1e00000>;
64			no-map;
65		};
66
67		wlan_msa_mem: memory@8e300000 {
68			reg = <0 0x8e300000 0 0x100000>;
69			no-map;
70		};
71
72		mpss_region: memory@8e400000 {
73			reg = <0 0x8e400000 0 0x7800000>;
74			no-map;
75		};
76
77		venus_mem: memory@95c00000 {
78			reg = <0 0x95c00000 0 0x500000>;
79			no-map;
80		};
81
82		cdsp_mem: memory@96100000 {
83			reg = <0 0x96100000 0 0x800000>;
84			no-map;
85		};
86
87		mba_region: memory@96900000 {
88			reg = <0 0x96900000 0 0x200000>;
89			no-map;
90		};
91
92		slpi_mem: memory@96b00000 {
93			reg = <0 0x96b00000 0 0x1400000>;
94			no-map;
95		};
96
97		spss_mem: memory@97f00000 {
98			reg = <0 0x97f00000 0 0x100000>;
99			no-map;
100		};
101
102		rmtfs_mem: memory@f6301000 {
103			compatible = "qcom,rmtfs-mem";
104			reg = <0 0xf6301000 0 0x200000>;
105			no-map;
106
107			qcom,client-id = <1>;
108			qcom,vmid = <15>;
109		};
110	};
111
112	vreg_s4a_1p8: vreg-s4a-1p8 {
113		compatible = "regulator-fixed";
114		regulator-name = "vreg_s4a_1p8";
115
116		regulator-min-microvolt = <1800000>;
117		regulator-max-microvolt = <1800000>;
118		regulator-always-on;
119	};
120};
121
122&adsp_pas {
123	status = "okay";
124	firmware-name = "qcom/sdm845/adsp.mdt";
125};
126
127&apps_rsc {
128	pm8998-rpmh-regulators {
129		compatible = "qcom,pm8998-rpmh-regulators";
130		qcom,pmic-id = "a";
131
132		vreg_l1a_0p875: ldo1 {
133			regulator-min-microvolt = <880000>;
134			regulator-max-microvolt = <880000>;
135			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
136		};
137
138		vreg_l5a_0p8: ldo5 {
139			regulator-min-microvolt = <800000>;
140			regulator-max-microvolt = <800000>;
141			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
142		};
143
144		vreg_l7a_1p8: ldo7 {
145			regulator-min-microvolt = <1800000>;
146			regulator-max-microvolt = <1800000>;
147			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
148		};
149
150		vreg_l12a_1p8: ldo12 {
151			regulator-min-microvolt = <1800000>;
152			regulator-max-microvolt = <1800000>;
153			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
154		};
155
156		vreg_l13a_2p95: ldo13 {
157			regulator-min-microvolt = <1800000>;
158			regulator-max-microvolt = <2960000>;
159			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
160		};
161
162		vreg_l14a_1p8: ldo14 {
163			regulator-min-microvolt = <1800000>;
164			regulator-max-microvolt = <1800000>;
165			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
166			regulator-boot-on;
167			regulator-always-on;
168		};
169
170		vreg_l17a_1p3: ldo17 {
171			regulator-min-microvolt = <1304000>;
172			regulator-max-microvolt = <1304000>;
173			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
174		};
175
176		vreg_l20a_2p95: ldo20 {
177			regulator-min-microvolt = <2960000>;
178			regulator-max-microvolt = <2968000>;
179			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
180		};
181
182		vreg_l21a_2p95: ldo21 {
183			regulator-min-microvolt = <2960000>;
184			regulator-max-microvolt = <2968000>;
185			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
186		};
187
188		vreg_l24a_3p075: ldo24 {
189			regulator-min-microvolt = <3088000>;
190			regulator-max-microvolt = <3088000>;
191			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
192		};
193
194		vreg_l25a_3p3: ldo25 {
195			regulator-min-microvolt = <3300000>;
196			regulator-max-microvolt = <3312000>;
197			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
198		};
199
200		vreg_l26a_1p2: ldo26 {
201			regulator-min-microvolt = <1200000>;
202			regulator-max-microvolt = <1200000>;
203			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
204			regulator-boot-on;
205		};
206	};
207};
208
209&cdsp_pas {
210	status = "okay";
211	firmware-name = "qcom/sdm845/cdsp.mdt";
212};
213
214&dsi0 {
215	status = "okay";
216	vdda-supply = <&vreg_l26a_1p2>;
217
218	#address-cells = <1>;
219	#size-cells = <0>;
220
221	panel@0 {
222		compatible = "tianma,fhd-video";
223		reg = <0>;
224		vddi0-supply = <&vreg_l14a_1p8>;
225		vddpos-supply = <&lab>;
226		vddneg-supply = <&ibb>;
227
228		#address-cells = <1>;
229		#size-cells = <0>;
230
231		reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
232
233		port {
234			tianma_nt36672a_in_0: endpoint {
235				remote-endpoint = <&dsi0_out>;
236			};
237		};
238	};
239};
240
241&dsi0_out {
242	remote-endpoint = <&tianma_nt36672a_in_0>;
243	data-lanes = <0 1 2 3>;
244};
245
246&dsi0_phy {
247	status = "okay";
248	vdds-supply = <&vreg_l1a_0p875>;
249};
250
251&gcc {
252	protected-clocks = <GCC_QSPI_CORE_CLK>,
253			   <GCC_QSPI_CORE_CLK_SRC>,
254			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
255			   <GCC_LPASS_Q6_AXI_CLK>,
256			   <GCC_LPASS_SWAY_CLK>;
257};
258
259&gpu {
260	zap-shader {
261		memory-region = <&gpu_mem>;
262		firmware-name = "qcom/sdm845/a630_zap.mbn";
263	};
264};
265
266&ibb {
267	regulator-min-microvolt = <4600000>;
268	regulator-max-microvolt = <6000000>;
269	regulator-over-current-protection;
270	regulator-pull-down;
271	regulator-soft-start;
272	qcom,discharge-resistor-kohms = <300>;
273};
274
275&lab {
276	regulator-min-microvolt = <4600000>;
277	regulator-max-microvolt = <6000000>;
278	regulator-over-current-protection;
279	regulator-pull-down;
280	regulator-soft-start;
281};
282
283&mdss {
284	status = "okay";
285};
286
287&mdss_mdp {
288	status = "okay";
289};
290
291&mss_pil {
292	status = "okay";
293	firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mdt";
294};
295
296&pm8998_gpio {
297	vol_up_pin_a: vol-up-active {
298		pins = "gpio6";
299		function = "normal";
300		input-enable;
301		bias-pull-up;
302		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
303	};
304};
305
306&pm8998_pon {
307	resin {
308		compatible = "qcom,pm8941-resin";
309		interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
310		debounce = <15625>;
311		bias-pull-up;
312		linux,code = <KEY_VOLUMEDOWN>;
313	};
314};
315
316/* QUAT I2S Uses 1 I2S SD Line for audio on TAS2559/60 amplifiers */
317&q6afedai {
318	qi2s@22 {
319		reg = <22>;
320		qcom,sd-lines = <0>;
321	};
322};
323
324&q6asmdai {
325	dai@0 {
326		reg = <0>;
327	};
328
329	dai@1 {
330		reg = <1>;
331	};
332
333	dai@2 {
334		reg = <2>;
335	};
336};
337
338&qupv3_id_0 {
339	status = "okay";
340};
341
342&sdhc_2 {
343	status = "okay";
344
345	pinctrl-names = "default";
346	pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
347
348	vmmc-supply = <&vreg_l21a_2p95>;
349	vqmmc-supply = <&vreg_l13a_2p95>;
350
351	bus-width = <4>;
352	cd-gpios = <&tlmm 126 GPIO_ACTIVE_HIGH>;
353};
354
355&sound {
356	compatible = "qcom,db845c-sndcard";
357	pinctrl-0 = <&quat_mi2s_active
358			&quat_mi2s_sd0_active>;
359	pinctrl-names = "default";
360	model = "Xiaomi Poco F1";
361	audio-routing =
362		"RX_BIAS", "MCLK",
363		"AMIC1", "MIC BIAS1",
364		"AMIC2", "MIC BIAS2",
365		"AMIC3", "MIC BIAS3";
366
367	mm1-dai-link {
368		link-name = "MultiMedia1";
369		cpu {
370			sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA1>;
371		};
372	};
373
374	mm2-dai-link {
375		link-name = "MultiMedia2";
376		cpu {
377			sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA2>;
378		};
379	};
380
381	mm3-dai-link {
382		link-name = "MultiMedia3";
383		cpu {
384			sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA3>;
385		};
386	};
387
388	slim-dai-link {
389		link-name = "SLIM Playback";
390		cpu {
391			sound-dai = <&q6afedai SLIMBUS_0_RX>;
392		};
393
394		platform {
395			sound-dai = <&q6routing>;
396		};
397
398		codec {
399			sound-dai =  <&wcd9340 0>;
400		};
401	};
402
403	slimcap-dai-link {
404		link-name = "SLIM Capture";
405		cpu {
406			sound-dai = <&q6afedai SLIMBUS_0_TX>;
407		};
408
409		platform {
410			sound-dai = <&q6routing>;
411		};
412
413		codec {
414			sound-dai = <&wcd9340 1>;
415		};
416	};
417};
418
419&tlmm {
420	gpio-reserved-ranges = <0 4>, <81 4>;
421
422	sdc2_default_state: sdc2-default {
423		clk {
424			pins = "sdc2_clk";
425			bias-disable;
426			drive-strength = <16>;
427		};
428
429		cmd {
430			pins = "sdc2_cmd";
431			bias-pull-up;
432			drive-strength = <10>;
433		};
434
435		data {
436			pins = "sdc2_data";
437			bias-pull-up;
438			drive-strength = <10>;
439		};
440	};
441
442	sdc2_card_det_n: sd-card-det-n {
443		pins = "gpio126";
444		function = "gpio";
445		bias-pull-up;
446	};
447
448	wcd_intr_default: wcd_intr_default {
449		pins = <54>;
450		function = "gpio";
451
452		input-enable;
453		bias-pull-down;
454		drive-strength = <2>;
455	};
456};
457
458&uart6 {
459	status = "okay";
460
461	bluetooth {
462		compatible = "qcom,wcn3990-bt";
463
464		vddio-supply = <&vreg_s4a_1p8>;
465		vddxo-supply = <&vreg_l7a_1p8>;
466		vddrf-supply = <&vreg_l17a_1p3>;
467		vddch0-supply = <&vreg_l25a_3p3>;
468		max-speed = <3200000>;
469	};
470};
471
472&ufs_mem_hc {
473	status = "okay";
474
475	reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
476
477	vcc-supply = <&vreg_l20a_2p95>;
478	vcc-max-microamp = <800000>;
479};
480
481&ufs_mem_phy {
482	status = "okay";
483
484	vdda-phy-supply = <&vreg_l1a_0p875>;
485	vdda-pll-supply = <&vreg_l26a_1p2>;
486};
487
488&usb_1 {
489	status = "okay";
490};
491
492&usb_1_dwc3 {
493	dr_mode = "peripheral";
494};
495
496&usb_1_hsphy {
497	status = "okay";
498
499	vdd-supply = <&vreg_l1a_0p875>;
500	vdda-pll-supply = <&vreg_l12a_1p8>;
501	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
502
503	qcom,imp-res-offset-value = <8>;
504	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
505	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
506	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
507};
508
509&usb_1_qmpphy {
510	status = "okay";
511
512	vdda-phy-supply = <&vreg_l26a_1p2>;
513	vdda-pll-supply = <&vreg_l1a_0p875>;
514};
515
516&wcd9340{
517	pinctrl-0 = <&wcd_intr_default>;
518	pinctrl-names = "default";
519	clock-names = "extclk";
520	clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
521	reset-gpios = <&tlmm 64 0>;
522	vdd-buck-supply = <&vreg_s4a_1p8>;
523	vdd-buck-sido-supply = <&vreg_s4a_1p8>;
524	vdd-tx-supply = <&vreg_s4a_1p8>;
525	vdd-rx-supply = <&vreg_s4a_1p8>;
526	vdd-io-supply = <&vreg_s4a_1p8>;
527	qcom,micbias1-microvolt = <2700000>;
528	qcom,micbias2-microvolt = <1800000>;
529	qcom,micbias3-microvolt = <2700000>;
530	qcom,micbias4-microvolt = <2700000>;
531};
532
533&wifi {
534	status = "okay";
535
536	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
537	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
538	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
539	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
540};
541
542/* PINCTRL - additions to nodes defined in sdm845.dtsi */
543
544&qup_uart6_default {
545	pinmux {
546		pins = "gpio45", "gpio46", "gpio47", "gpio48";
547		function = "qup6";
548	};
549
550	cts {
551		pins = "gpio45";
552		bias-disable;
553	};
554
555	rts-tx {
556		pins = "gpio46", "gpio47";
557		drive-strength = <2>;
558		bias-disable;
559	};
560
561	rx {
562		pins = "gpio48";
563		bias-pull-up;
564	};
565};
566