xref: /linux/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts (revision 223981db9bafb80f558162c148f261e2ff043dbe)
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2023, Luca Weiss <luca.weiss@fairphone.com>
4 */
5
6/dts-v1/;
7
8/* PM7250B is configured to use SID8/9 */
9#define PM7250B_SID 8
10#define PM7250B_SID1 9
11
12#include <dt-bindings/leds/common.h>
13#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
14#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
15#include "sc7280.dtsi"
16#include "pm7250b.dtsi"
17#include "pm7325.dtsi"
18#include "pm8350c.dtsi" /* PM7350C */
19#include "pmk8350.dtsi" /* PMK7325 */
20
21/delete-node/ &rmtfs_mem;
22
23/ {
24	model = "Fairphone 5";
25	compatible = "fairphone,fp5", "qcom,qcm6490";
26	chassis-type = "handset";
27
28	aliases {
29		serial0 = &uart5;
30		serial1 = &uart7;
31	};
32
33	chosen {
34		#address-cells = <2>;
35		#size-cells = <2>;
36		ranges;
37
38		framebuffer0: framebuffer@a000000 {
39			compatible = "simple-framebuffer";
40			reg = <0x0 0xe1000000 0x0 (2700 * 1224 * 4)>;
41			width = <1224>;
42			height = <2700>;
43			stride = <(1224 * 4)>;
44			format = "a8r8g8b8";
45			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
46		};
47	};
48
49	gpio-keys {
50		compatible = "gpio-keys";
51
52		pinctrl-0 = <&volume_down_default>, <&hall_sensor_default>;
53		pinctrl-names = "default";
54
55		key-volume-up {
56			label = "Volume up";
57			gpios = <&pm7325_gpios 6 GPIO_ACTIVE_LOW>;
58			linux,code = <KEY_VOLUMEUP>;
59		};
60
61		/* Powered by the always-on vreg_l8c */
62		event-hall-sensor {
63			label = "Hall Effect Sensor";
64			gpios = <&tlmm 155 GPIO_ACTIVE_LOW>;
65			linux,input-type = <EV_SW>;
66			linux,code = <SW_LID>;
67			linux,can-disable;
68			wakeup-source;
69		};
70	};
71
72	reserved-memory {
73		cont_splash_mem: cont-splash@e1000000 {
74			reg = <0x0 0xe1000000 0x0 0x2300000>;
75			no-map;
76		};
77
78		adsp_mem: adsp@86700000 {
79			reg = <0x0 0x86700000 0x0 0x2800000>;
80			no-map;
81		};
82
83		cdsp_mem: cdsp@88f00000 {
84			reg = <0x0 0x88f00000 0x0 0x1e00000>;
85			no-map;
86		};
87
88		mpss_mem: mpss@8b800000 {
89			reg = <0x0 0x8b800000 0x0 0xf600000>;
90			no-map;
91		};
92
93		wpss_mem: wpss@9ae00000 {
94			reg = <0x0 0x9ae00000 0x0 0x1900000>;
95			no-map;
96		};
97
98		rmtfs_mem: memory@f8500000 {
99			compatible = "qcom,rmtfs-mem";
100			reg = <0x0 0xf8500000 0x0 0x600000>;
101			no-map;
102
103			qcom,client-id = <1>;
104			qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>, <QCOM_SCM_VMID_NAV>;
105		};
106	};
107
108	ois_avdd0_1p8: regulator-ois-avdd0-1p8 {
109		compatible = "regulator-fixed";
110		regulator-name = "OIS_AVDD0_1P8";
111		regulator-min-microvolt = <1800000>;
112		regulator-max-microvolt = <1800000>;
113		gpio = <&tlmm 157 GPIO_ACTIVE_HIGH>;
114		enable-active-high;
115		vin-supply = <&vreg_bob>;
116	};
117
118	ois_dvdd_1p1: regulator-ois-dvdd-1p1 {
119		compatible = "regulator-fixed";
120		regulator-name = "OIS_DVDD_1P1";
121		regulator-min-microvolt = <1100000>;
122		regulator-max-microvolt = <1100000>;
123		gpio = <&tlmm 97 GPIO_ACTIVE_HIGH>;
124		enable-active-high;
125		vin-supply = <&vreg_s8b>;
126	};
127
128	afvdd_2p8: regulator-afvdd-2p8 {
129		compatible = "regulator-fixed";
130		regulator-name = "AFVDD_2P8";
131		regulator-min-microvolt = <2800000>;
132		regulator-max-microvolt = <2800000>;
133		gpio = <&tlmm 68 GPIO_ACTIVE_HIGH>;
134		enable-active-high;
135		vin-supply = <&vreg_bob>;
136	};
137};
138
139&apps_rsc {
140	regulators-0 {
141		compatible = "qcom,pm7325-rpmh-regulators";
142		qcom,pmic-id = "b";
143
144		vreg_s1b: smps1 {
145			regulator-min-microvolt = <1840000>;
146			regulator-max-microvolt = <2040000>;
147		};
148
149		vreg_s7b: smps7 {
150			regulator-min-microvolt = <535000>;
151			regulator-max-microvolt = <1120000>;
152		};
153
154		vreg_s8b: smps8 {
155			regulator-min-microvolt = <1200000>;
156			regulator-max-microvolt = <1500000>;
157			regulator-initial-mode = <RPMH_REGULATOR_MODE_RET>;
158		};
159
160		vreg_l1b: ldo1 {
161			regulator-min-microvolt = <825000>;
162			regulator-max-microvolt = <925000>;
163			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
164		};
165
166		vreg_l2b: ldo2 {
167			regulator-min-microvolt = <2700000>;
168			regulator-max-microvolt = <3544000>;
169			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
170		};
171
172		vreg_l3b: ldo3 {
173			regulator-min-microvolt = <312000>;
174			regulator-max-microvolt = <910000>;
175			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
176		};
177
178		vreg_l6b: ldo6 {
179			regulator-min-microvolt = <1140000>;
180			regulator-max-microvolt = <1260000>;
181			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
182		};
183
184		vreg_l7b: ldo7 {
185			regulator-min-microvolt = <2400000>;
186			regulator-max-microvolt = <3544000>;
187			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
188		};
189
190		vreg_l8b: ldo8 {
191			regulator-min-microvolt = <870000>;
192			regulator-max-microvolt = <970000>;
193			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
194		};
195
196		vreg_l9b: ldo9 {
197			regulator-min-microvolt = <1200000>;
198			regulator-max-microvolt = <1304000>;
199			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
200		};
201
202		vreg_l11b: ldo11 {
203			regulator-min-microvolt = <1504000>;
204			regulator-max-microvolt = <2000000>;
205			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
206		};
207
208		vreg_l12b: ldo12 {
209			regulator-min-microvolt = <751000>;
210			regulator-max-microvolt = <824000>;
211			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
212		};
213
214		vreg_l13b: ldo13 {
215			regulator-min-microvolt = <530000>;
216			regulator-max-microvolt = <824000>;
217			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
218		};
219
220		vreg_l14b: ldo14 {
221			regulator-min-microvolt = <1080000>;
222			regulator-max-microvolt = <1304000>;
223			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
224		};
225
226		vreg_l15b: ldo15 {
227			regulator-min-microvolt = <765000>;
228			regulator-max-microvolt = <1020000>;
229			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
230		};
231
232		vreg_l16b: ldo16 {
233			regulator-min-microvolt = <1100000>;
234			regulator-max-microvolt = <1300000>;
235			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
236		};
237
238		vreg_l17b: ldo17 {
239			regulator-min-microvolt = <1700000>;
240			regulator-max-microvolt = <1900000>;
241			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
242		};
243
244		vreg_l18b: ldo18 {
245			regulator-min-microvolt = <1800000>;
246			regulator-max-microvolt = <2000000>;
247			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
248		};
249
250		vreg_l19b: ldo19 {
251			regulator-min-microvolt = <1800000>;
252			regulator-max-microvolt = <2000000>;
253			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
254		};
255	};
256
257	regulators-1 {
258		compatible = "qcom,pm8350c-rpmh-regulators";
259		qcom,pmic-id = "c";
260
261		vreg_s1c: smps1 {
262			regulator-min-microvolt = <2190000>;
263			regulator-max-microvolt = <2210000>;
264			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
265		};
266
267		vreg_s9c: smps9 {
268			regulator-min-microvolt = <1010000>;
269			regulator-max-microvolt = <1170000>;
270			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
271		};
272
273		vreg_l1c: ldo1 {
274			regulator-min-microvolt = <1800000>;
275			regulator-max-microvolt = <1980000>;
276			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
277		};
278
279		vreg_l2c: ldo2 {
280			regulator-min-microvolt = <1800000>;
281			regulator-max-microvolt = <1950000>;
282			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
283		};
284
285		vreg_l3c: ldo3 {
286			regulator-min-microvolt = <3000000>;
287			regulator-max-microvolt = <3400000>;
288			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
289		};
290
291		vreg_l4c: ldo4 {
292			regulator-min-microvolt = <1620000>;
293			regulator-max-microvolt = <3300000>;
294			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
295		};
296
297		vreg_l5c: ldo5 {
298			regulator-min-microvolt = <1620000>;
299			regulator-max-microvolt = <3300000>;
300			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
301		};
302
303		vreg_l6c: ldo6 {
304			regulator-min-microvolt = <1650000>;
305			regulator-max-microvolt = <3544000>;
306			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
307		};
308
309		vreg_l7c: ldo7 {
310			regulator-min-microvolt = <3000000>;
311			regulator-max-microvolt = <3544000>;
312			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
313		};
314
315		vreg_l8c: ldo8 {
316			regulator-min-microvolt = <1620000>;
317			regulator-max-microvolt = <2000000>;
318			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
319			/* Hall sensor VDD */
320			regulator-always-on;
321		};
322
323		vreg_l9c: ldo9 {
324			regulator-min-microvolt = <2700000>;
325			regulator-max-microvolt = <3544000>;
326			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
327		};
328
329		vreg_l10c: ldo10 {
330			regulator-min-microvolt = <720000>;
331			regulator-max-microvolt = <1050000>;
332			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
333		};
334
335		vreg_l11c: ldo11 {
336			regulator-min-microvolt = <2800000>;
337			regulator-max-microvolt = <3544000>;
338			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
339		};
340
341		vreg_l12c: ldo12 {
342			regulator-min-microvolt = <1650000>;
343			regulator-max-microvolt = <2000000>;
344			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
345		};
346
347		vreg_l13c: ldo13 {
348			regulator-min-microvolt = <2700000>;
349			regulator-max-microvolt = <3544000>;
350			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
351		};
352
353		vreg_bob: bob {
354			regulator-min-microvolt = <3008000>;
355			regulator-max-microvolt = <3960000>;
356			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
357		};
358	};
359};
360
361&dispcc {
362	/* Disable for now so simple-framebuffer continues working */
363	status = "disabled";
364};
365
366&gcc {
367	protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
368			   <GCC_EDP_CLKREF_EN>,
369			   <GCC_MSS_CFG_AHB_CLK>,
370			   <GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC>,
371			   <GCC_MSS_OFFLINE_AXI_CLK>,
372			   <GCC_MSS_Q6SS_BOOT_CLK_SRC>,
373			   <GCC_MSS_Q6_MEMNOC_AXI_CLK>,
374			   <GCC_MSS_SNOC_AXI_CLK>,
375			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
376			   <GCC_QSPI_CORE_CLK>,
377			   <GCC_QSPI_CORE_CLK_SRC>,
378			   <GCC_SEC_CTRL_CLK_SRC>,
379			   <GCC_WPSS_AHB_BDG_MST_CLK>,
380			   <GCC_WPSS_AHB_CLK>,
381			   <GCC_WPSS_RSCP_CLK>;
382};
383
384&gpi_dma0 {
385	status = "okay";
386};
387
388&gpi_dma1 {
389	status = "okay";
390};
391
392&i2c1 {
393	status = "okay";
394
395	/* PM8008 PMIC @ 8 and 9 */
396	/* Pixelworks @ 26 */
397	/* FSA4480 USB audio switch @ 42 */
398	/* AW86927FCR haptics @ 5a */
399};
400
401&i2c2 {
402	status = "okay";
403
404	/* AW88261FCR amplifier @ 34 */
405	/* AW88261FCR amplifier @ 35 */
406};
407
408&i2c4 {
409	status = "okay";
410
411	/* PTN36502 USB redriver @ 1a */
412};
413
414&i2c9 {
415	status = "okay";
416
417	/* ST21NFC NFC @ 28 */
418	/* VL53L3 ToF @ 29 */
419};
420
421&ipa {
422	qcom,gsi-loader = "self";
423	memory-region = <&ipa_fw_mem>;
424	firmware-name = "qcom/qcm6490/fairphone5/ipa_fws.mdt";
425	status = "okay";
426};
427
428&pm7325_gpios {
429	volume_down_default: volume-down-default-state {
430		pins = "gpio6";
431		function = PMIC_GPIO_FUNC_NORMAL;
432		power-source = <1>;
433		bias-pull-up;
434		input-enable;
435	};
436};
437
438&pm8350c_flash {
439	status = "okay";
440
441	led-0 {
442		function = LED_FUNCTION_FLASH;
443		color = <LED_COLOR_ID_WHITE>;
444		led-sources = <1>, <4>;
445		led-max-microamp = <500000>;
446		flash-max-microamp = <1500000>;
447		flash-max-timeout-us = <1280000>;
448	};
449};
450
451&pmk8350_rtc {
452	status = "okay";
453};
454
455&pon_pwrkey {
456	status = "okay";
457};
458
459&pon_resin {
460	linux,code = <KEY_VOLUMEDOWN>;
461	status = "okay";
462};
463
464&qup_spi13_cs {
465	drive-strength = <6>;
466	bias-disable;
467};
468
469&qup_spi13_data_clk {
470	drive-strength = <6>;
471	bias-disable;
472};
473
474&qup_uart5_rx {
475	drive-strength = <2>;
476	bias-disable;
477};
478
479&qup_uart5_tx {
480	drive-strength = <2>;
481	bias-disable;
482};
483
484&qupv3_id_0 {
485	status = "okay";
486};
487
488&qupv3_id_1 {
489	status = "okay";
490};
491
492&sdc2_clk {
493	drive-strength = <16>;
494	bias-disable;
495};
496
497&sdc2_cmd {
498	drive-strength = <10>;
499	bias-pull-up;
500};
501
502&sdc2_data {
503	drive-strength = <10>;
504	bias-pull-up;
505};
506
507&sdhc_2 {
508	vmmc-supply = <&vreg_l9c>;
509	vqmmc-supply = <&vreg_l6c>;
510
511	pinctrl-0 = <&sdc2_clk>, <&sdc2_cmd>, <&sdc2_data>;
512	pinctrl-1 = <&sdc2_clk_sleep>, <&sdc2_cmd_sleep>, <&sdc2_data_sleep>;
513
514	status = "okay";
515};
516
517&spi13 {
518	status = "okay";
519
520	/* Goodix touchscreen @ 0 */
521};
522
523&tlmm {
524	/*
525	 * 32-33: SMB1394 (SPMI)
526	 * 56-59: fingerprint reader (SPI)
527	 */
528	gpio-reserved-ranges = <32 2>, <56 4>;
529
530	bluetooth_enable_default: bluetooth-enable-default-state {
531		pins = "gpio85";
532		function = "gpio";
533		output-low;
534		bias-disable;
535	};
536
537	hall_sensor_default: hall-sensor-default-state {
538		pins = "gpio155";
539		function = "gpio";
540		drive-strength = <2>;
541		bias-pull-up;
542	};
543
544	qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
545		pins = "gpio28";
546		function = "gpio";
547		/*
548		 * Configure a bias-bus-hold on CTS to lower power
549		 * usage when Bluetooth is turned off. Bus hold will
550		 * maintain a low power state regardless of whether
551		 * the Bluetooth module drives the pin in either
552		 * direction or leaves the pin fully unpowered.
553		 */
554		bias-bus-hold;
555	};
556
557	qup_uart7_sleep_rts: qup-uart7-sleep-rts-state {
558		pins = "gpio29";
559		function = "gpio";
560		/*
561		 * Configure pull-down on RTS. As RTS is active low
562		 * signal, pull it low to indicate the BT SoC that it
563		 * can wakeup the system anytime from suspend state by
564		 * pulling RX low (by sending wakeup bytes).
565		 */
566		bias-pull-down;
567	};
568
569	qup_uart7_sleep_tx: qup-uart7-sleep-tx-state {
570		pins = "gpio30";
571		function = "gpio";
572		/*
573		 * Configure pull-up on TX when it isn't actively driven
574		 * to prevent BT SoC from receiving garbage during sleep.
575		 */
576		bias-pull-up;
577	};
578
579	qup_uart7_sleep_rx: qup-uart7-sleep-rx-state {
580		pins = "gpio31";
581		function = "gpio";
582		/*
583		 * Configure a pull-up on RX. This is needed to avoid
584		 * garbage data when the TX pin of the Bluetooth module
585		 * is floating which may cause spurious wakeups.
586		 */
587		bias-pull-up;
588	};
589
590	sw_ctrl_default: sw-ctrl-default-state {
591		pins = "gpio86";
592		function = "gpio";
593		bias-pull-down;
594	};
595};
596
597&uart5 {
598	compatible = "qcom,geni-debug-uart";
599	status = "okay";
600};
601
602&uart7 {
603	/delete-property/interrupts;
604	interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
605			      <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
606
607	pinctrl-1 = <&qup_uart7_sleep_cts>, <&qup_uart7_sleep_rts>, <&qup_uart7_sleep_tx>, <&qup_uart7_sleep_rx>;
608	pinctrl-names = "default", "sleep";
609
610	status = "okay";
611
612	bluetooth: bluetooth {
613		compatible = "qcom,wcn6750-bt";
614
615		pinctrl-0 = <&bluetooth_enable_default>, <&sw_ctrl_default>;
616		pinctrl-names = "default";
617
618		enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;
619		swctrl-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>;
620
621		vddio-supply = <&vreg_l19b>;
622		vddaon-supply = <&vreg_s7b>;
623		vddbtcxmx-supply = <&vreg_s7b>;
624		vddrfacmn-supply = <&vreg_s7b>;
625		vddrfa0p8-supply = <&vreg_s7b>;
626		vddrfa1p7-supply = <&vreg_s1b>;
627		vddrfa1p2-supply = <&vreg_s8b>;
628		vddrfa2p2-supply = <&vreg_s1c>;
629		vddasd-supply = <&vreg_l11c>;
630
631		max-speed = <3200000>;
632	};
633};
634
635&usb_1 {
636	status = "okay";
637};
638
639&usb_1_dwc3 {
640	dr_mode = "peripheral";
641};
642
643&usb_1_hsphy {
644	vdda-pll-supply = <&vreg_l10c>;
645	vdda18-supply = <&vreg_l1c>;
646	vdda33-supply = <&vreg_l2b>;
647
648	qcom,hs-crossover-voltage-microvolt = <28000>;
649	qcom,hs-output-impedance-micro-ohms = <2600000>;
650	qcom,hs-rise-fall-time-bp = <5430>;
651	qcom,hs-disconnect-bp = <1743>;
652	qcom,hs-amplitude-bp = <2430>;
653
654	qcom,pre-emphasis-amplitude-bp = <20000>;
655	qcom,pre-emphasis-duration-bp = <20000>;
656
657	qcom,squelch-detector-bp = <(-2090)>;
658
659	status = "okay";
660};
661
662&usb_1_qmpphy {
663	vdda-phy-supply = <&vreg_l6b>;
664	vdda-pll-supply = <&vreg_l1b>;
665
666	status = "okay";
667};
668