xref: /freebsd/sys/contrib/device-tree/src/arm64/qcom/sdm845-google-common.dtsi (revision 69ed3df4f588860308677cda76cbcce1f19a54c9)
1// SPDX-License-Identifier: GPL-2.0-only
2
3/dts-v1/;
4
5#include <dt-bindings/arm/qcom,ids.h>
6#include <dt-bindings/dma/qcom-gpi.h>
7#include <dt-bindings/input/linux-event-codes.h>
8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
10
11#include "sdm845.dtsi"
12#include "pm8998.dtsi"
13#include "pmi8998.dtsi"
14
15/delete-node/ &mpss_region;
16/delete-node/ &venus_mem;
17/delete-node/ &cdsp_mem;
18/delete-node/ &mba_region;
19/delete-node/ &slpi_mem;
20/delete-node/ &spss_mem;
21/delete-node/ &rmtfs_mem;
22
23/ {
24	chassis-type = "handset";
25	qcom,board-id = <0x00021505 0>;
26	qcom,msm-id = <QCOM_ID_SDM845 0x20001>;
27
28	aliases {
29		serial0 = &uart9;
30		serial1 = &uart6;
31	};
32
33	battery: battery {
34		compatible = "simple-battery";
35	};
36
37	chosen {
38		#address-cells = <2>;
39		#size-cells = <2>;
40		ranges;
41
42		stdout-path = "serial0:115200n8";
43
44		/* Use display framebuffer as setup by bootloader */
45		framebuffer0: framebuffer-0 {
46			compatible = "simple-framebuffer";
47			memory-region = <&cont_splash_mem>;
48
49			format = "a8r8g8b8";
50		};
51	};
52
53	reserved-memory {
54		cont_splash_mem: splash@9d400000 {
55			reg = <0 0x9d400000 0 0x02400000>;
56			no-map;
57		};
58
59		mpss_region: memory@8e000000 {
60			reg = <0 0x8e000000 0 0x9800000>;
61			no-map;
62		};
63
64		venus_mem: venus@97800000 {
65			reg = <0 0x97800000 0 0x500000>;
66			no-map;
67		};
68
69		cdsp_mem: cdsp-mem@97D00000 {
70			reg = <0 0x97D00000 0 0x800000>;
71			no-map;
72		};
73
74		mba_region: mba@98500000 {
75			reg = <0 0x98500000 0 0x200000>;
76			no-map;
77		};
78
79		slpi_mem: slpi@98700000 {
80			reg = <0 0x98700000 0 0x1400000>;
81			no-map;
82		};
83
84		spss_mem: spss@99B00000 {
85			reg = <0 0x99B00000 0 0x100000>;
86			no-map;
87		};
88
89		rmtfs_mem: rmtfs-region@f2700000 {
90			compatible = "qcom,rmtfs-mem";
91			reg = <0 0xf2700000 0 0x202000>;
92			qcom,use-guard-pages;
93			no-map;
94
95			qcom,client-id = <1>;
96			qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
97		};
98	};
99
100	gpio-keys {
101		compatible = "gpio-keys";
102		label = "Volume keys";
103		autorepeat;
104
105		pinctrl-0 = <&volume_up_gpio>;
106		pinctrl-names = "default";
107
108		key-vol-up {
109			label = "Volume Up";
110			linux,code = <KEY_VOLUMEUP>;
111			gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
112			debounce-interval = <15>;
113		};
114	};
115
116	vph_pwr: regulator-vph-pwr {
117		compatible = "regulator-fixed";
118		regulator-name = "vph_pwr";
119		regulator-min-microvolt = <3700000>;
120		regulator-max-microvolt = <3700000>;
121	};
122
123	vreg_s4a_1p8: regulator-vreg-s4a-1p8 {
124		compatible = "regulator-fixed";
125		regulator-name = "vreg_s4a_1p8";
126
127		regulator-min-microvolt = <1800000>;
128		regulator-max-microvolt = <1800000>;
129		regulator-always-on;
130		regulator-boot-on;
131
132		vin-supply = <&vph_pwr>;
133	};
134
135	wcn3990-pmu {
136		compatible = "qcom,wcn3990-pmu";
137
138		vddio-supply = <&vreg_s4a_1p8>;
139		vddxo-supply = <&vreg_l7a_1p8>;
140		vddrf-supply = <&vreg_l17a_1p3>;
141		vddch0-supply = <&vreg_l25a_3p3>;
142
143		regulators {
144			vreg_pmu_io: ldo0 {
145				regulator-name = "vreg_pmu_io";
146			};
147
148			vreg_pmu_xo: ldo1 {
149				regulator-name = "vreg_pmu_xo";
150			};
151
152			vreg_pmu_rf: ldo2 {
153				regulator-name = "vreg_pmu_rf";
154			};
155
156			vreg_pmu_ch0: ldo3 {
157				regulator-name = "vreg_pmu_ch0";
158			};
159		};
160	};
161};
162
163&adsp_pas {
164	firmware-name = "qcom/sdm845/Google/blueline/adsp.mbn";
165
166	status = "okay";
167};
168
169&apps_rsc {
170	regulators-0 {
171		compatible = "qcom,pm8998-rpmh-regulators";
172		qcom,pmic-id = "a";
173
174		vdd-s1-supply = <&vph_pwr>;
175		vdd-s2-supply = <&vph_pwr>;
176		vdd-s3-supply = <&vph_pwr>;
177		vdd-s4-supply = <&vph_pwr>;
178		vdd-s5-supply = <&vph_pwr>;
179		vdd-s6-supply = <&vph_pwr>;
180		vdd-s7-supply = <&vph_pwr>;
181		vdd-s8-supply = <&vph_pwr>;
182		vdd-s9-supply = <&vph_pwr>;
183		vdd-s10-supply = <&vph_pwr>;
184		vdd-s11-supply = <&vph_pwr>;
185		vdd-s12-supply = <&vph_pwr>;
186		vdd-s13-supply = <&vph_pwr>;
187		vdd-l1-l27-supply = <&vreg_s7a_1p025>;
188		vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
189		vdd-l3-l11-supply = <&vreg_s7a_1p025>;
190		vdd-l4-l5-supply = <&vreg_s7a_1p025>;
191		vdd-l6-supply = <&vph_pwr>;
192		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
193		vdd-l9-supply = <&vreg_bob>;
194		vdd-l10-l23-l25-supply = <&vreg_bob>;
195		vdd-l13-l19-l21-supply = <&vreg_bob>;
196		vdd-l16-l28-supply = <&vreg_bob>;
197		vdd-l18-l22-supply = <&vreg_bob>;
198		vdd-l20-l24-supply = <&vreg_bob>;
199		vdd-l26-supply = <&vreg_s3a_1p35>;
200		vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
201
202		vreg_s3a_1p35: smps3 {
203			regulator-min-microvolt = <1352000>;
204			regulator-max-microvolt = <1352000>;
205		};
206
207		vreg_s5a_2p04: smps5 {
208			regulator-min-microvolt = <1904000>;
209			regulator-max-microvolt = <2040000>;
210		};
211
212		vreg_s7a_1p025: smps7 {
213			regulator-min-microvolt = <900000>;
214			regulator-max-microvolt = <1028000>;
215		};
216
217		vdda_mipi_dsi0_pll:
218		vreg_l1a_0p875: ldo1 {
219			regulator-min-microvolt = <880000>;
220			regulator-max-microvolt = <880000>;
221			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
222			regulator-boot-on;
223		};
224
225		vreg_l5a_0p8: ldo5 {
226			regulator-min-microvolt = <800000>;
227			regulator-max-microvolt = <800000>;
228			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
229		};
230
231		vreg_l12a_1p8: ldo12 {
232			regulator-min-microvolt = <1800000>;
233			regulator-max-microvolt = <1800000>;
234			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
235		};
236
237		vreg_l7a_1p8: ldo7 {
238			regulator-min-microvolt = <1800000>;
239			regulator-max-microvolt = <1800000>;
240			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
241		};
242
243		vreg_l13a_2p95: ldo13 {
244			regulator-min-microvolt = <1800000>;
245			regulator-max-microvolt = <2960000>;
246			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
247		};
248
249		vreg_l14a_1p8: ldo14 {
250			regulator-min-microvolt = <1800000>;
251			regulator-max-microvolt = <1800000>;
252			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
253			regulator-boot-on;
254			/*
255			 * We can't properly bring the panel back if it gets turned off
256			 * so keep it's regulators always on for now.
257			 */
258			regulator-always-on;
259		};
260
261		vreg_l17a_1p3: ldo17 {
262			regulator-min-microvolt = <1304000>;
263			regulator-max-microvolt = <1304000>;
264			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
265		};
266
267		vreg_l19a_3p3: ldo19 {
268			regulator-min-microvolt = <3300000>;
269			regulator-max-microvolt = <3312000>;
270			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
271			/*
272			 * The touchscreen needs this to be 3.3v, which is apparently
273			 * quite close to the hardware limit for this LDO (3.312v)
274			 * It must be kept in high power mode to prevent TS brownouts
275			 */
276			regulator-allowed-modes = <RPMH_REGULATOR_MODE_HPM>;
277		};
278
279		vreg_l20a_2p95: ldo20 {
280			regulator-min-microvolt = <2960000>;
281			regulator-max-microvolt = <2968000>;
282			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
283		};
284
285		vreg_l21a_2p95: ldo21 {
286			regulator-min-microvolt = <2960000>;
287			regulator-max-microvolt = <2968000>;
288			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
289		};
290
291		vreg_l24a_3p075: ldo24 {
292			regulator-min-microvolt = <3088000>;
293			regulator-max-microvolt = <3088000>;
294			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
295		};
296
297		vreg_l25a_3p3: ldo25 {
298			regulator-min-microvolt = <3300000>;
299			regulator-max-microvolt = <3312000>;
300			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
301		};
302
303		vdda_mipi_dsi0_1p2:
304		vreg_l26a_1p2: ldo26 {
305			regulator-min-microvolt = <1200000>;
306			regulator-max-microvolt = <1200000>;
307			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
308			regulator-boot-on;
309		};
310
311		vreg_l28a_3p0: ldo28 {
312			regulator-min-microvolt = <2856000>;
313			regulator-max-microvolt = <3008000>;
314			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
315			regulator-boot-on;
316			/*
317			 * We can't properly bring the panel back if it gets turned off
318			 * so keep it's regulators always on for now.
319			 */
320			regulator-always-on;
321		};
322	};
323
324	regulators-1 {
325		compatible = "qcom,pmi8998-rpmh-regulators";
326		qcom,pmic-id = "b";
327
328		vdd-bob-supply = <&vph_pwr>;
329
330		vreg_bob: bob {
331			regulator-min-microvolt = <3312000>;
332			regulator-max-microvolt = <3600000>;
333			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
334			regulator-allow-bypass;
335		};
336	};
337
338	regulators-2 {
339		compatible = "qcom,pm8005-rpmh-regulators";
340		qcom,pmic-id = "c";
341
342		vdd-s1-supply = <&vph_pwr>;
343		vdd-s2-supply = <&vph_pwr>;
344		vdd-s3-supply = <&vph_pwr>;
345		vdd-s4-supply = <&vph_pwr>;
346
347		vreg_s3c_0p6: smps3 {
348			regulator-min-microvolt = <600000>;
349			regulator-max-microvolt = <600000>;
350		};
351	};
352};
353
354&cci {
355	status = "okay";
356};
357
358&cci_i2c1 {
359	/* actuator @0c */
360
361	/* front camera, imx355 @1a */
362
363	/* eeprom @50, at24 driver says 8K */
364};
365
366&cdsp_pas {
367	firmware-name = "qcom/sdm845/Google/blueline/cdsp.mbn";
368
369	status = "okay";
370};
371
372&gcc {
373	protected-clocks = <GCC_QSPI_CORE_CLK>,
374			   <GCC_QSPI_CORE_CLK_SRC>,
375			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
376};
377
378&gpi_dma0 {
379	status = "okay";
380};
381
382&gpi_dma1 {
383	status = "okay";
384};
385
386&gpu {
387	status = "okay";
388};
389
390&gpu_zap_shader {
391	firmware-name = "qcom/sdm845/Google/blueline/a630_zap.mbn";
392};
393
394&i2c12 {
395	/* Bottom spkr (right) CS35L36 @ 40 */
396
397	/* Top spkr (left) CS35L36 @ 41 */
398};
399
400&ipa {
401	firmware-name = "qcom/sdm845/Google/blueline/ipa_fws.mbn";
402	memory-region = <&ipa_fw_mem>;
403
404	status = "okay";
405};
406
407&mdss {
408	status = "okay";
409};
410
411&mss_pil {
412	firmware-name = "qcom/sdm845/Google/blueline/mba.mbn",
413			"qcom/sdm845/Google/blueline/modem.mbn";
414
415	status = "okay";
416};
417
418&pm8998_gpios {
419	volume_up_gpio: vol-up-active-state {
420		pins = "gpio6";
421		function = "normal";
422		input-enable;
423		bias-pull-up;
424		qcom,drive-strength = <0>;
425	};
426};
427
428&pm8998_resin {
429	linux,code = <KEY_VOLUMEDOWN>;
430
431	status = "okay";
432};
433
434&pmi8998_charger {
435	monitored-battery = <&battery>;
436
437	status = "okay";
438};
439
440&qupv3_id_0 {
441	status = "okay";
442};
443
444&qupv3_id_1 {
445	status = "okay";
446};
447
448&qup_uart9_rx {
449	drive-strength = <2>;
450	bias-pull-up;
451};
452
453&qup_uart9_tx {
454	drive-strength = <2>;
455	bias-disable;
456};
457
458&tlmm {
459	gpio-reserved-ranges = < 0 4>, /* SPI (Intel MNH Pixel Visual Core) */
460			       <81 4>; /* SPI (most likely Fingerprint Cards FPC1075) */
461
462	touchscreen_reset: ts-reset-state {
463		pins = "gpio99";
464		function = "gpio";
465		drive-strength = <8>;
466		bias-pull-up;
467	};
468
469	touchscreen_pins: ts-pins-gpio-state {
470		pins = "gpio125";
471		function = "gpio";
472		drive-strength = <2>;
473		bias-disable;
474	};
475
476	touchscreen_i2c_pins: qup-i2c2-gpio-state {
477		pins = "gpio27", "gpio28";
478		function = "gpio";
479		drive-strength = <2>;
480		bias-disable;
481	};
482};
483
484&uart6 {
485	pinctrl-0 = <&qup_uart6_4pin>;
486
487	status = "okay";
488
489	bluetooth {
490		compatible = "qcom,wcn3990-bt";
491
492		vddio-supply = <&vreg_pmu_io>;
493		vddxo-supply = <&vreg_pmu_xo>;
494		vddrf-supply = <&vreg_pmu_rf>;
495		vddch0-supply = <&vreg_pmu_ch0>;
496
497		max-speed = <3200000>;
498	};
499};
500
501&uart9 {
502	status = "okay";
503};
504
505&ufs_mem_hc {
506	reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
507
508	vcc-supply = <&vreg_l20a_2p95>;
509	vcc-max-microamp = <800000>;
510
511	status = "okay";
512};
513
514&ufs_mem_phy {
515	vdda-phy-supply = <&vreg_l1a_0p875>;
516	vdda-pll-supply = <&vreg_l26a_1p2>;
517
518	status = "okay";
519};
520
521&usb_1 {
522	status = "okay";
523};
524
525&usb_1_dwc3 {
526	dr_mode = "peripheral";
527};
528
529&usb_1_hsphy {
530	vdd-supply = <&vreg_l1a_0p875>;
531	vdda-pll-supply = <&vreg_l12a_1p8>;
532	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
533
534	qcom,imp-res-offset-value = <8>;
535	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
536	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
537	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
538
539	status = "okay";
540};
541
542&usb_1_qmpphy {
543	vdda-phy-supply = <&vreg_l26a_1p2>;
544	vdda-pll-supply = <&vreg_l1a_0p875>;
545
546	status = "okay";
547};
548
549&venus {
550	firmware-name = "qcom/sdm845/Google/blueline/venus.mbn";
551
552	status = "okay";
553};
554
555&wifi {
556	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
557	vdd-1.8-xo-supply = <&vreg_pmu_xo>;
558	vdd-1.3-rfa-supply = <&vreg_pmu_rf>;
559	vdd-3.3-ch0-supply = <&vreg_pmu_ch0>;
560
561	qcom,snoc-host-cap-8bit-quirk;
562
563	status = "okay";
564};
565