xref: /linux/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts (revision 0cac5ce06e524755b3dac1e0a060b05992076d93)
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/iio/qcom,spmi-adc7-pm7325.h>
13#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
14#include <dt-bindings/leds/common.h>
15#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
16#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
17#include <dt-bindings/sound/qcom,q6asm.h>
18#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
19#include "kodiak.dtsi"
20#include "pm7250b.dtsi"
21#include "pm7325.dtsi"
22#include "pm8350c.dtsi" /* PM7350C */
23#include "pmk8350.dtsi" /* PMK7325 */
24
25/delete-node/ &rmtfs_mem;
26
27/ {
28	model = "Fairphone 5";
29	compatible = "fairphone,fp5", "qcom,qcm6490";
30	chassis-type = "handset";
31
32	aliases {
33		serial0 = &uart5;
34		serial1 = &uart7;
35	};
36
37	chosen {
38		#address-cells = <2>;
39		#size-cells = <2>;
40		ranges;
41
42		framebuffer0: framebuffer@a000000 {
43			compatible = "simple-framebuffer";
44			reg = <0x0 0xe1000000 0x0 (2700 * 1224 * 4)>;
45			width = <1224>;
46			height = <2700>;
47			stride = <(1224 * 4)>;
48			format = "a8r8g8b8";
49			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
50			vci-supply = <&vreg_oled_vci>;
51			dvdd-supply = <&vreg_oled_dvdd>;
52		};
53	};
54
55	gpio-keys {
56		compatible = "gpio-keys";
57
58		pinctrl-0 = <&volume_down_default>, <&hall_sensor_default>;
59		pinctrl-names = "default";
60
61		key-volume-up {
62			label = "Volume up";
63			gpios = <&pm7325_gpios 6 GPIO_ACTIVE_LOW>;
64			linux,code = <KEY_VOLUMEUP>;
65		};
66
67		/* Powered by the always-on vreg_l8c */
68		event-hall-sensor {
69			label = "Hall Effect Sensor";
70			gpios = <&tlmm 155 GPIO_ACTIVE_LOW>;
71			linux,input-type = <EV_SW>;
72			linux,code = <SW_LID>;
73			linux,can-disable;
74			wakeup-source;
75		};
76	};
77
78	pmic-glink {
79		compatible = "qcom,qcm6490-pmic-glink", "qcom,pmic-glink";
80
81		#address-cells = <1>;
82		#size-cells = <0>;
83
84		orientation-gpios = <&tlmm 140 GPIO_ACTIVE_HIGH>;
85
86		connector@0 {
87			compatible = "usb-c-connector";
88			reg = <0>;
89			power-role = "dual";
90			data-role = "dual";
91
92			ports {
93				#address-cells = <1>;
94				#size-cells = <0>;
95
96				port@0 {
97					reg = <0>;
98
99					pmic_glink_hs_in: endpoint {
100						remote-endpoint = <&usb_1_dwc3_hs>;
101					};
102				};
103
104				port@1 {
105					reg = <1>;
106
107					pmic_glink_ss_in: endpoint {
108						remote-endpoint = <&redriver_ss_out>;
109					};
110				};
111
112				port@2 {
113					reg = <2>;
114
115					pmic_glink_sbu: endpoint {
116						remote-endpoint = <&ocp96011_sbu_mux>;
117					};
118				};
119			};
120		};
121	};
122
123	vreg_afvdd_2p8: regulator-afvdd-2p8 {
124		compatible = "regulator-fixed";
125		regulator-name = "AFVDD_2P8";
126		regulator-min-microvolt = <2800000>;
127		regulator-max-microvolt = <2800000>;
128		gpio = <&tlmm 68 GPIO_ACTIVE_HIGH>;
129		enable-active-high;
130		vin-supply = <&vreg_bob>;
131	};
132
133	vreg_ois_avdd0_1p8: regulator-ois-avdd0-1p8 {
134		compatible = "regulator-fixed";
135		regulator-name = "OIS_AVDD0_1P8";
136		regulator-min-microvolt = <1800000>;
137		regulator-max-microvolt = <1800000>;
138		gpio = <&tlmm 157 GPIO_ACTIVE_HIGH>;
139		enable-active-high;
140		vin-supply = <&vreg_bob>;
141	};
142
143	vreg_ois_dvdd_1p1: regulator-ois-dvdd-1p1 {
144		compatible = "regulator-fixed";
145		regulator-name = "OIS_DVDD_1P1";
146		regulator-min-microvolt = <1100000>;
147		regulator-max-microvolt = <1100000>;
148		gpio = <&tlmm 97 GPIO_ACTIVE_HIGH>;
149		enable-active-high;
150		vin-supply = <&vreg_s8b>;
151	};
152
153	vreg_oled_dvdd: regulator-oled-dvdd {
154		compatible = "regulator-fixed";
155		regulator-name = "oled_dvdd";
156		regulator-min-microvolt = <1200000>;
157		regulator-max-microvolt = <1200000>;
158
159		gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
160		enable-active-high;
161
162		vin-supply = <&vreg_s1b>;
163
164		regulator-boot-on;
165	};
166
167	vreg_oled_vci: regulator-oled-vci {
168		compatible = "regulator-fixed";
169		regulator-name = "oled_vci";
170		regulator-min-microvolt = <3000000>;
171		regulator-max-microvolt = <3000000>;
172
173		gpio = <&pm8350c_gpios 7 GPIO_ACTIVE_HIGH>;
174		enable-active-high;
175
176		vin-supply = <&vreg_l13c>;
177
178		regulator-boot-on;
179	};
180
181	vreg_usb_redrive_1v8: regulator-usb-redrive-1v8 {
182		compatible = "regulator-fixed";
183		regulator-name = "USB_REDRIVE_1V8";
184		regulator-min-microvolt = <1800000>;
185		regulator-max-microvolt = <1800000>;
186
187		gpio = <&tlmm 61 GPIO_ACTIVE_HIGH>;
188		enable-active-high;
189
190		vin-supply = <&vreg_bob>;
191
192		regulator-boot-on;
193
194		pinctrl-0 = <&usb_redrive_1v8_en_default>;
195		pinctrl-names = "default";
196	};
197
198	vreg_vtof_ldo_2p8: regulator-vtof-ldo-2p8 {
199		compatible = "regulator-fixed";
200		regulator-name = "VTOF_LDO_2P8";
201		regulator-min-microvolt = <2800000>;
202		regulator-max-microvolt = <2800000>;
203		regulator-enable-ramp-delay = <233>;
204
205		gpio = <&tlmm 141 GPIO_ACTIVE_HIGH>;
206		enable-active-high;
207
208		vin-supply = <&vreg_bob>;
209	};
210
211	reserved-memory {
212		cont_splash_mem: cont-splash@e1000000 {
213			reg = <0x0 0xe1000000 0x0 0x2300000>;
214			no-map;
215		};
216
217		cdsp_mem: cdsp@88f00000 {
218			reg = <0x0 0x88f00000 0x0 0x1e00000>;
219			no-map;
220		};
221
222		removed_mem: removed@c0000000 {
223			reg = <0x0 0xc0000000 0x0 0x5100000>;
224			no-map;
225		};
226
227		rmtfs_mem: memory@f8500000 {
228			compatible = "qcom,rmtfs-mem";
229			reg = <0x0 0xf8500000 0x0 0x600000>;
230			no-map;
231
232			qcom,client-id = <1>;
233			qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>, <QCOM_SCM_VMID_NAV>;
234		};
235	};
236
237	thermal-zones {
238		camera-thermal {
239			polling-delay-passive = <0>;
240
241			thermal-sensors = <&pmk8350_adc_tm 2>;
242
243			trips {
244				active-config0 {
245					temperature = <125000>;
246					hysteresis = <1000>;
247					type = "passive";
248				};
249			};
250		};
251
252		chg-skin-thermal {
253			polling-delay-passive = <0>;
254
255			thermal-sensors = <&pm7250b_adc_tm 0>;
256
257			trips {
258				active-config0 {
259					temperature = <125000>;
260					hysteresis = <1000>;
261					type = "passive";
262				};
263			};
264		};
265
266		conn-thermal {
267			polling-delay-passive = <0>;
268
269			thermal-sensors = <&pm7250b_adc_tm 1>;
270
271			trips {
272				active-config0 {
273					temperature = <125000>;
274					hysteresis = <1000>;
275					type = "passive";
276				};
277			};
278		};
279
280		mem-thermal {
281			polling-delay-passive = <0>;
282
283			thermal-sensors = <&pm7250b_adc_tm 2>;
284
285			trips {
286				active-config0 {
287					temperature = <125000>;
288					hysteresis = <1000>;
289					type = "passive";
290				};
291			};
292		};
293
294		pm8008-thermal {
295			polling-delay-passive = <100>;
296			thermal-sensors = <&pm8008>;
297
298			trips {
299				trip0 {
300					temperature = <95000>;
301					hysteresis = <0>;
302					type = "passive";
303				};
304
305				trip1 {
306					temperature = <115000>;
307					hysteresis = <0>;
308					type = "critical";
309				};
310			};
311		};
312
313		quiet-thermal {
314			polling-delay-passive = <0>;
315
316			thermal-sensors = <&pmk8350_adc_tm 1>;
317
318			trips {
319				active-config0 {
320					temperature = <125000>;
321					hysteresis = <1000>;
322					type = "passive";
323				};
324			};
325		};
326
327		rear-cam-thermal {
328			polling-delay-passive = <0>;
329
330			thermal-sensors = <&pmk8350_adc_tm 4>;
331
332			trips {
333				active-config0 {
334					temperature = <125000>;
335					hysteresis = <1000>;
336					type = "passive";
337				};
338			};
339		};
340
341		sdm-skin-thermal {
342			polling-delay-passive = <0>;
343
344			thermal-sensors = <&pmk8350_adc_tm 3>;
345
346			trips {
347				active-config0 {
348					temperature = <125000>;
349					hysteresis = <1000>;
350					type = "passive";
351				};
352			};
353		};
354
355		xo-thermal {
356			polling-delay-passive = <0>;
357
358			thermal-sensors = <&pmk8350_adc_tm 0>;
359
360			trips {
361				active-config0 {
362					temperature = <125000>;
363					hysteresis = <1000>;
364					type = "passive";
365				};
366			};
367		};
368	};
369};
370
371&apps_rsc {
372	regulators-0 {
373		compatible = "qcom,pm7325-rpmh-regulators";
374		qcom,pmic-id = "b";
375
376		vreg_s1b: smps1 {
377			regulator-name = "vreg_s1b";
378			regulator-min-microvolt = <1840000>;
379			regulator-max-microvolt = <2040000>;
380		};
381
382		vreg_s7b: smps7 {
383			regulator-name = "vreg_s7b";
384			regulator-min-microvolt = <535000>;
385			regulator-max-microvolt = <1120000>;
386		};
387
388		vreg_s8b: smps8 {
389			regulator-name = "vreg_s8b";
390			regulator-min-microvolt = <1200000>;
391			regulator-max-microvolt = <1500000>;
392			regulator-initial-mode = <RPMH_REGULATOR_MODE_RET>;
393		};
394
395		vreg_l1b: ldo1 {
396			regulator-name = "vreg_l1b";
397			regulator-min-microvolt = <825000>;
398			regulator-max-microvolt = <925000>;
399			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
400		};
401
402		vreg_l2b: ldo2 {
403			regulator-name = "vreg_l2b";
404			regulator-min-microvolt = <2700000>;
405			regulator-max-microvolt = <3544000>;
406			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
407		};
408
409		vreg_l3b: ldo3 {
410			regulator-name = "vreg_l3b";
411			regulator-min-microvolt = <312000>;
412			regulator-max-microvolt = <910000>;
413			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
414		};
415
416		vreg_l6b: ldo6 {
417			regulator-name = "vreg_l6b";
418			regulator-min-microvolt = <1140000>;
419			regulator-max-microvolt = <1260000>;
420			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
421		};
422
423		vreg_l7b: ldo7 {
424			regulator-name = "vreg_l7b";
425			/* Constrained for UFS VCC, at least until UFS driver scales voltage */
426			regulator-min-microvolt = <2952000>;
427			regulator-max-microvolt = <2952000>;
428			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
429		};
430
431		vreg_l8b: ldo8 {
432			regulator-name = "vreg_l8b";
433			regulator-min-microvolt = <870000>;
434			regulator-max-microvolt = <970000>;
435			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
436		};
437
438		vreg_l9b: ldo9 {
439			regulator-name = "vreg_l9b";
440			regulator-min-microvolt = <1200000>;
441			regulator-max-microvolt = <1304000>;
442			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
443		};
444
445		vreg_l11b: ldo11 {
446			regulator-name = "vreg_l11b";
447			regulator-min-microvolt = <1504000>;
448			regulator-max-microvolt = <2000000>;
449			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
450		};
451
452		vreg_l12b: ldo12 {
453			regulator-name = "vreg_l12b";
454			regulator-min-microvolt = <751000>;
455			regulator-max-microvolt = <824000>;
456			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
457		};
458
459		vreg_l13b: ldo13 {
460			regulator-name = "vreg_l13b";
461			regulator-min-microvolt = <530000>;
462			regulator-max-microvolt = <824000>;
463			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
464		};
465
466		vreg_l14b: ldo14 {
467			regulator-name = "vreg_l14b";
468			regulator-min-microvolt = <1080000>;
469			regulator-max-microvolt = <1304000>;
470			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
471		};
472
473		vreg_l15b: ldo15 {
474			regulator-name = "vreg_l15b";
475			regulator-min-microvolt = <765000>;
476			regulator-max-microvolt = <1020000>;
477			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
478		};
479
480		vreg_l16b: ldo16 {
481			regulator-name = "vreg_l16b";
482			regulator-min-microvolt = <1100000>;
483			regulator-max-microvolt = <1300000>;
484			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
485		};
486
487		vreg_l17b: ldo17 {
488			regulator-name = "vreg_l17b";
489			regulator-min-microvolt = <1700000>;
490			regulator-max-microvolt = <1900000>;
491			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
492		};
493
494		vreg_l18b: ldo18 {
495			regulator-name = "vreg_l18b";
496			regulator-min-microvolt = <1800000>;
497			regulator-max-microvolt = <2000000>;
498			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
499		};
500
501		vreg_l19b: ldo19 {
502			regulator-name = "vreg_l19b";
503			regulator-min-microvolt = <1800000>;
504			regulator-max-microvolt = <2000000>;
505			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
506		};
507	};
508
509	regulators-1 {
510		compatible = "qcom,pm8350c-rpmh-regulators";
511		qcom,pmic-id = "c";
512
513		vreg_s1c: smps1 {
514			regulator-name = "vreg_s1c";
515			regulator-min-microvolt = <2190000>;
516			regulator-max-microvolt = <2210000>;
517			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
518		};
519
520		vreg_s9c: smps9 {
521			regulator-name = "vreg_s9c";
522			regulator-min-microvolt = <1010000>;
523			regulator-max-microvolt = <1170000>;
524			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
525		};
526
527		vreg_l1c: ldo1 {
528			regulator-name = "vreg_l1c";
529			regulator-min-microvolt = <1800000>;
530			regulator-max-microvolt = <1980000>;
531			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
532		};
533
534		vreg_l2c: ldo2 {
535			regulator-name = "vreg_l2c";
536			regulator-min-microvolt = <1800000>;
537			regulator-max-microvolt = <1950000>;
538			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
539		};
540
541		vreg_l3c: ldo3 {
542			regulator-name = "vreg_l3c";
543			regulator-min-microvolt = <3000000>;
544			regulator-max-microvolt = <3400000>;
545			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
546		};
547
548		vreg_l4c: ldo4 {
549			regulator-name = "vreg_l4c";
550			regulator-min-microvolt = <1620000>;
551			regulator-max-microvolt = <3300000>;
552			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
553		};
554
555		vreg_l5c: ldo5 {
556			regulator-name = "vreg_l5c";
557			regulator-min-microvolt = <1620000>;
558			regulator-max-microvolt = <3300000>;
559			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
560		};
561
562		vreg_l6c: ldo6 {
563			regulator-name = "vreg_l6c";
564			regulator-min-microvolt = <1650000>;
565			regulator-max-microvolt = <3544000>;
566			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
567		};
568
569		vreg_l7c: ldo7 {
570			regulator-name = "vreg_l7c";
571			regulator-min-microvolt = <3000000>;
572			regulator-max-microvolt = <3544000>;
573			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
574		};
575
576		vreg_l8c: ldo8 {
577			regulator-name = "vreg_l8c";
578			regulator-min-microvolt = <1620000>;
579			regulator-max-microvolt = <2000000>;
580			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
581			/* Hall sensor VDD */
582			regulator-always-on;
583		};
584
585		vreg_l9c: ldo9 {
586			regulator-name = "vreg_l9c";
587			regulator-min-microvolt = <2700000>;
588			regulator-max-microvolt = <3544000>;
589			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
590		};
591
592		vreg_l10c: ldo10 {
593			regulator-name = "vreg_l10c";
594			regulator-min-microvolt = <720000>;
595			regulator-max-microvolt = <1050000>;
596			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
597		};
598
599		vreg_l11c: ldo11 {
600			regulator-name = "vreg_l11c";
601			regulator-min-microvolt = <2800000>;
602			regulator-max-microvolt = <3544000>;
603			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
604		};
605
606		vreg_l12c: ldo12 {
607			regulator-name = "vreg_l12c";
608			regulator-min-microvolt = <1650000>;
609			regulator-max-microvolt = <2000000>;
610			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
611		};
612
613		vreg_l13c: ldo13 {
614			regulator-name = "vreg_l13c";
615			regulator-min-microvolt = <2700000>;
616			regulator-max-microvolt = <3544000>;
617			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
618		};
619
620		vreg_bob: bob {
621			regulator-name = "vreg_bob";
622			regulator-min-microvolt = <3008000>;
623			regulator-max-microvolt = <3960000>;
624			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
625		};
626	};
627};
628
629&cci0 {
630	status = "okay";
631};
632
633&cci0_i2c0 {
634	/* IMX800 @ 1a */
635
636	eeprom@50 {
637		compatible = "puya,p24c256c", "atmel,24c256";
638		reg = <0x50>;
639		vcc-supply = <&vreg_l6p>;
640		read-only;
641	};
642};
643
644&cci0_i2c1 {
645	camera_imx858_dw9800k: actuator@e {
646		compatible = "dongwoon,dw9800k";
647		reg = <0x0e>;
648		vdd-supply = <&vreg_afvdd_2p8>;
649
650		dongwoon,sac-mode = <1>;
651		dongwoon,vcm-prescale = <16>;
652	};
653
654	/* IMX858 @ 29 */
655
656	eeprom@54 {
657		compatible = "giantec,gt24p128f", "atmel,24c128";
658		reg = <0x54>;
659		vcc-supply = <&vreg_l6p>;
660		read-only;
661	};
662};
663
664&cci1 {
665	status = "okay";
666};
667
668&cci1_i2c1 {
669	/* S5KJN1SQ03 @ 10 */
670
671	eeprom@51 {
672		compatible = "giantec,gt24p128f", "atmel,24c128";
673		reg = <0x51>;
674		vcc-supply = <&vreg_l6p>;
675		read-only;
676	};
677};
678
679&gcc {
680	protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
681			   <GCC_EDP_CLKREF_EN>,
682			   <GCC_MSS_CFG_AHB_CLK>,
683			   <GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC>,
684			   <GCC_MSS_OFFLINE_AXI_CLK>,
685			   <GCC_MSS_Q6SS_BOOT_CLK_SRC>,
686			   <GCC_MSS_Q6_MEMNOC_AXI_CLK>,
687			   <GCC_MSS_SNOC_AXI_CLK>,
688			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
689			   <GCC_QSPI_CORE_CLK>,
690			   <GCC_QSPI_CORE_CLK_SRC>,
691			   <GCC_SEC_CTRL_CLK_SRC>,
692			   <GCC_WPSS_AHB_BDG_MST_CLK>,
693			   <GCC_WPSS_AHB_CLK>,
694			   <GCC_WPSS_RSCP_CLK>;
695};
696
697&gpi_dma0 {
698	status = "okay";
699};
700
701&gpi_dma1 {
702	status = "okay";
703};
704
705&gpu {
706	status = "okay";
707};
708
709&gpu_zap_shader {
710	firmware-name = "qcom/qcm6490/fairphone5/a660_zap.mbn";
711};
712
713&i2c1 {
714	status = "okay";
715
716	pm8008: pmic@8 {
717		compatible = "qcom,pm8008";
718		reg = <0x8>;
719
720		interrupts-extended = <&tlmm 25 IRQ_TYPE_EDGE_RISING>;
721		reset-gpios = <&pm8350c_gpios 3 GPIO_ACTIVE_LOW>;
722
723		vdd-l1-l2-supply = <&vreg_s8b>;
724		vdd-l3-l4-supply = <&vreg_bob>;
725		vdd-l5-supply = <&vreg_bob>;
726		vdd-l6-supply = <&vreg_s1b>;
727		vdd-l7-supply = <&vreg_bob>;
728
729		pinctrl-names = "default";
730		pinctrl-0 = <&pm8008_int_default>, <&pm8008_reset_n_default>;
731
732		gpio-controller;
733		#gpio-cells = <2>;
734		gpio-ranges = <&pm8008 0 0 2>;
735
736		interrupt-controller;
737		#interrupt-cells = <2>;
738
739		#thermal-sensor-cells = <0>;
740
741		regulators {
742			vreg_l1p: ldo1 {
743				regulator-name = "vreg_l1p";
744				regulator-min-microvolt = <1000000>;
745				regulator-max-microvolt = <1200000>;
746			};
747
748			vreg_l2p: ldo2 {
749				regulator-name = "vreg_l2p";
750				regulator-min-microvolt = <950000>;
751				regulator-max-microvolt = <1152000>;
752			};
753
754			vreg_l3p: ldo3 {
755				regulator-name = "vreg_l3p";
756				regulator-min-microvolt = <2700000>;
757				regulator-max-microvolt = <3000000>;
758			};
759
760			vreg_l4p: ldo4 {
761				regulator-name = "vreg_l4p";
762				regulator-min-microvolt = <2700000>;
763				regulator-max-microvolt = <2900000>;
764			};
765
766			vreg_l5p: ldo5 {
767				regulator-name = "vreg_l5p";
768				regulator-min-microvolt = <2704000>;
769				regulator-max-microvolt = <2900000>;
770			};
771
772			vreg_l6p: ldo6 {
773				regulator-name = "vreg_l6p";
774				regulator-min-microvolt = <1700000>;
775				regulator-max-microvolt = <1904000>;
776				/* Pull-up for CCI I2C busses */
777				regulator-always-on;
778			};
779
780			vreg_l7p: ldo7 {
781				regulator-name = "vreg_l7p";
782				regulator-min-microvolt = <2700000>;
783				regulator-max-microvolt = <3000000>;
784			};
785		};
786	};
787
788	/* Pixelworks @ 26 */
789
790	typec-mux@42 {
791		compatible = "ocs,ocp96011", "fcs,fsa4480";
792		reg = <0x42>;
793
794		interrupts-extended = <&tlmm 7 IRQ_TYPE_LEVEL_LOW>;
795
796		vcc-supply = <&vreg_bob>;
797
798		mode-switch;
799		orientation-switch;
800
801		port {
802			ocp96011_sbu_mux: endpoint {
803				remote-endpoint = <&pmic_glink_sbu>;
804				data-lanes = <1 0>;
805			};
806		};
807	};
808
809	vibrator@5a {
810		compatible = "awinic,aw86927";
811		reg = <0x5a>;
812
813		interrupts-extended = <&tlmm 101 IRQ_TYPE_EDGE_FALLING>;
814		reset-gpios = <&tlmm 100 GPIO_ACTIVE_LOW>;
815
816		pinctrl-0 = <&aw86927_int_default>;
817		pinctrl-names = "default";
818	};
819};
820
821&i2c2 {
822	status = "okay";
823
824	/* AW88261FCR amplifier @ 34 */
825	/* AW88261FCR amplifier @ 35 */
826};
827
828&i2c4 {
829	status = "okay";
830
831	typec-mux@1a {
832		compatible = "nxp,ptn36502";
833		reg = <0x1a>;
834
835		vdd18-supply = <&vreg_usb_redrive_1v8>;
836
837		retimer-switch;
838		orientation-switch;
839
840		ports {
841			#address-cells = <1>;
842			#size-cells = <0>;
843
844			port@0 {
845				reg = <0>;
846
847				redriver_ss_out: endpoint {
848					remote-endpoint = <&pmic_glink_ss_in>;
849				};
850			};
851
852			port@1 {
853				reg = <1>;
854
855				redriver_ss_in: endpoint {
856					remote-endpoint = <&usb_dp_qmpphy_out>;
857				};
858			};
859		};
860	};
861};
862
863&i2c9 {
864	status = "okay";
865
866	/* ST21NFC NFC @ 28 */
867	/* VL53L3 ToF @ 29 */
868};
869
870&ipa {
871	qcom,gsi-loader = "self";
872	memory-region = <&ipa_fw_mem>;
873	firmware-name = "qcom/qcm6490/fairphone5/ipa_fws.mbn";
874	status = "okay";
875};
876
877&lpass_audiocc {
878	compatible = "qcom,qcm6490-lpassaudiocc";
879	/delete-property/ power-domains;
880};
881
882&mdss {
883	status = "okay";
884};
885
886&mdss_dp {
887	status = "okay";
888};
889
890&mdss_dp_out {
891	data-lanes = <0 1>;
892};
893
894&mdss_dsi {
895	vdda-supply = <&vreg_l6b>;
896	status = "okay";
897
898	panel@0 {
899		compatible = "fairphone,fp5-rm692e5-boe", "raydium,rm692e5";
900		reg = <0>;
901
902		reset-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>;
903
904		vci-supply = <&vreg_oled_vci>;
905		vddio-supply = <&vreg_l12c>;
906		dvdd-supply = <&vreg_oled_dvdd>;
907
908		pinctrl-0 = <&disp_reset_n_active>, <&mdp_vsync>;
909		pinctrl-1 = <&disp_reset_n_suspend>, <&mdp_vsync>;
910		pinctrl-names = "default", "sleep";
911
912		port {
913			panel_in: endpoint {
914				remote-endpoint = <&mdss_dsi0_out>;
915			};
916		};
917	};
918};
919
920&mdss_dsi0_out {
921	data-lanes = <0 1 2 3>;
922	remote-endpoint = <&panel_in>;
923};
924
925&mdss_dsi_phy {
926	vdds-supply = <&vreg_l10c>;
927	status = "okay";
928};
929
930&pm7250b_adc {
931	pinctrl-0 = <&pm7250b_adc_default>;
932	pinctrl-names = "default";
933
934	channel@4d {
935		reg = <ADC5_AMUX_THM1_100K_PU>;
936		qcom,ratiometric;
937		qcom,hw-settle-time = <200>;
938		qcom,pre-scaling = <1 1>;
939		label = "charger_skin_therm";
940	};
941
942	channel@4f {
943		reg = <ADC5_AMUX_THM3_100K_PU>;
944		qcom,ratiometric;
945		qcom,hw-settle-time = <200>;
946		qcom,pre-scaling = <1 1>;
947		label = "conn_therm";
948	};
949
950	channel@53 {
951		reg = <ADC5_GPIO2_100K_PU>;
952		qcom,ratiometric;
953		qcom,hw-settle-time = <200>;
954		qcom,pre-scaling = <1 1>;
955		label = "mem_therm";
956	};
957};
958
959&pm7250b_adc_tm {
960	status = "okay";
961
962	charger-skin-therm@0 {
963		reg = <0>;
964		io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
965		qcom,ratiometric;
966		qcom,hw-settle-time-us = <200>;
967	};
968
969	conn-therm@1 {
970		reg = <1>;
971		io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
972		qcom,ratiometric;
973		qcom,hw-settle-time-us = <200>;
974	};
975
976	mem-therm@2 {
977		reg = <2>;
978		io-channels = <&pm7250b_adc ADC5_GPIO2_100K_PU>;
979		qcom,ratiometric;
980		qcom,hw-settle-time-us = <200>;
981	};
982};
983
984&pm7250b_gpios {
985	pm7250b_adc_default: adc-default-state {
986		pins = "gpio12";
987		function = PMIC_GPIO_FUNC_NORMAL;
988		bias-high-impedance;
989	};
990};
991
992&pm7325_gpios {
993	volume_down_default: volume-down-default-state {
994		pins = "gpio6";
995		function = PMIC_GPIO_FUNC_NORMAL;
996		power-source = <1>;
997		bias-pull-up;
998		input-enable;
999	};
1000};
1001
1002&pm8350c_flash {
1003	status = "okay";
1004
1005	led-0 {
1006		function = LED_FUNCTION_FLASH;
1007		color = <LED_COLOR_ID_WHITE>;
1008		led-sources = <1>, <4>;
1009		led-max-microamp = <500000>;
1010		flash-max-microamp = <1500000>;
1011		flash-max-timeout-us = <1280000>;
1012	};
1013};
1014
1015&pmk8350_adc_tm {
1016	status = "okay";
1017
1018	xo-therm@0 {
1019		reg = <0>;
1020		io-channels = <&pmk8350_vadc PMK8350_ADC7_AMUX_THM1_100K_PU>;
1021		qcom,ratiometric;
1022		qcom,hw-settle-time-us = <200>;
1023	};
1024
1025	quiet-therm@1 {
1026		reg = <1>;
1027		io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM1_100K_PU>;
1028		qcom,ratiometric;
1029		qcom,hw-settle-time-us = <200>;
1030	};
1031
1032	cam-flash-therm@2 {
1033		reg = <2>;
1034		io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM2_100K_PU>;
1035		qcom,ratiometric;
1036		qcom,hw-settle-time-us = <200>;
1037	};
1038
1039	sdm-skin-therm@3 {
1040		reg = <3>;
1041		io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM3_100K_PU>;
1042		qcom,ratiometric;
1043		qcom,hw-settle-time-us = <200>;
1044	};
1045
1046	wide-rfc-therm@4 {
1047		reg = <4>;
1048		io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM4_100K_PU>;
1049		qcom,ratiometric;
1050		qcom,hw-settle-time-us = <200>;
1051	};
1052};
1053
1054&pm8350c_gpios {
1055	pm8008_reset_n_default: pm8008-reset-n-default-state {
1056		pins = "gpio3";
1057		function = PMIC_GPIO_FUNC_NORMAL;
1058		bias-pull-down;
1059	};
1060};
1061
1062&pmk8350_rtc {
1063	status = "okay";
1064};
1065
1066&pmk8350_vadc {
1067	status = "okay";
1068
1069	channel@44 {
1070		reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
1071		qcom,ratiometric;
1072		qcom,hw-settle-time = <200>;
1073		qcom,pre-scaling = <1 1>;
1074		label = "pmk8350_xo_therm";
1075	};
1076
1077	channel@144 {
1078		reg = <PM7325_ADC7_AMUX_THM1_100K_PU>;
1079		qcom,ratiometric;
1080		qcom,hw-settle-time = <200>;
1081		qcom,pre-scaling = <1 1>;
1082		label = "pm7325_quiet_therm";
1083	};
1084
1085	channel@145 {
1086		reg = <PM7325_ADC7_AMUX_THM2_100K_PU>;
1087		qcom,ratiometric;
1088		qcom,hw-settle-time = <200>;
1089		qcom,pre-scaling = <1 1>;
1090		label = "pm7325_cam_flash_therm";
1091	};
1092
1093	channel@146 {
1094		reg = <PM7325_ADC7_AMUX_THM3_100K_PU>;
1095		qcom,ratiometric;
1096		qcom,hw-settle-time = <200>;
1097		qcom,pre-scaling = <1 1>;
1098		label = "pm7325_sdm_skin_therm";
1099	};
1100
1101	channel@147 {
1102		reg = <PM7325_ADC7_AMUX_THM4_100K_PU>;
1103		qcom,ratiometric;
1104		qcom,hw-settle-time = <200>;
1105		qcom,pre-scaling = <1 1>;
1106		label = "pm7325_wide_rfc_therm";
1107	};
1108};
1109
1110&pon_pwrkey {
1111	status = "okay";
1112};
1113
1114&pon_resin {
1115	linux,code = <KEY_VOLUMEDOWN>;
1116	status = "okay";
1117};
1118
1119&qup_spi13_cs {
1120	drive-strength = <6>;
1121	bias-disable;
1122};
1123
1124&qup_spi13_data_clk {
1125	drive-strength = <6>;
1126	bias-disable;
1127};
1128
1129&qup_uart5_rx {
1130	drive-strength = <2>;
1131	bias-disable;
1132};
1133
1134&qup_uart5_tx {
1135	drive-strength = <2>;
1136	bias-disable;
1137};
1138
1139&qupv3_id_0 {
1140	status = "okay";
1141};
1142
1143&qupv3_id_1 {
1144	status = "okay";
1145};
1146
1147&remoteproc_adsp {
1148	firmware-name = "qcom/qcm6490/fairphone5/adsp.mbn";
1149	status = "okay";
1150};
1151
1152&remoteproc_cdsp {
1153	firmware-name = "qcom/qcm6490/fairphone5/cdsp.mbn";
1154	status = "okay";
1155};
1156
1157&remoteproc_mpss {
1158	firmware-name = "qcom/qcm6490/fairphone5/modem.mbn";
1159	status = "okay";
1160};
1161
1162&remoteproc_wpss {
1163	firmware-name = "qcom/qcm6490/fairphone5/wpss.mbn";
1164	status = "okay";
1165};
1166
1167&sdc2_clk {
1168	drive-strength = <16>;
1169	bias-disable;
1170};
1171
1172&sdc2_cmd {
1173	drive-strength = <10>;
1174	bias-pull-up;
1175};
1176
1177&sdc2_data {
1178	drive-strength = <10>;
1179	bias-pull-up;
1180};
1181
1182&sdhc_2 {
1183	vmmc-supply = <&vreg_l9c>;
1184	vqmmc-supply = <&vreg_l6c>;
1185
1186	pinctrl-0 = <&sdc2_clk>, <&sdc2_cmd>, <&sdc2_data>;
1187	pinctrl-1 = <&sdc2_clk_sleep>, <&sdc2_cmd_sleep>, <&sdc2_data_sleep>;
1188
1189	status = "okay";
1190};
1191
1192&sound {
1193	compatible = "fairphone,fp5-sndcard";
1194	model = "Fairphone 5";
1195
1196	mm1-dai-link {
1197		link-name = "MultiMedia1";
1198
1199		cpu {
1200			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
1201		};
1202	};
1203
1204	displayport-rx-dai-link {
1205		link-name = "DisplayPort Playback";
1206
1207		codec {
1208			sound-dai = <&mdss_dp>;
1209		};
1210
1211		cpu {
1212			sound-dai = <&q6afedai DISPLAY_PORT_RX>;
1213		};
1214
1215		platform {
1216			sound-dai = <&q6routing>;
1217		};
1218	};
1219
1220	usb-dai-link {
1221		link-name = "USB Playback";
1222
1223		codec {
1224			sound-dai = <&q6usbdai USB_RX>;
1225		};
1226
1227		cpu {
1228			sound-dai = <&q6afedai USB_RX>;
1229		};
1230
1231		platform {
1232			sound-dai = <&q6routing>;
1233		};
1234	};
1235};
1236
1237&spi13 {
1238	status = "okay";
1239
1240	touchscreen@0 {
1241		compatible = "goodix,gt9897";
1242		reg = <0>;
1243		interrupts-extended = <&tlmm 81 IRQ_TYPE_LEVEL_LOW>;
1244		reset-gpios = <&tlmm 105 GPIO_ACTIVE_LOW>;
1245		avdd-supply = <&vreg_l3c>;
1246		vddio-supply = <&vreg_l2c>;
1247		spi-max-frequency = <1000000>;
1248		touchscreen-size-x = <1224>;
1249		touchscreen-size-y = <2700>;
1250	};
1251};
1252
1253&tlmm {
1254	/*
1255	 * 32-33: SMB1394 (SPMI)
1256	 * 56-59: fingerprint reader (SPI)
1257	 */
1258	gpio-reserved-ranges = <32 2>, <56 4>;
1259
1260	bluetooth_enable_default: bluetooth-enable-default-state {
1261		pins = "gpio85";
1262		function = "gpio";
1263		output-low;
1264		bias-disable;
1265	};
1266
1267	disp_reset_n_active: disp-reset-n-active-state {
1268		pins = "gpio44";
1269		function = "gpio";
1270		drive-strength = <8>;
1271		bias-disable;
1272	};
1273
1274	disp_reset_n_suspend: disp-reset-n-suspend-state {
1275		pins = "gpio44";
1276		function = "gpio";
1277		drive-strength = <2>;
1278		bias-pull-down;
1279	};
1280
1281	hall_sensor_default: hall-sensor-default-state {
1282		pins = "gpio155";
1283		function = "gpio";
1284		drive-strength = <2>;
1285		bias-pull-up;
1286	};
1287
1288	mdp_vsync: mdp-vsync-state {
1289		pins = "gpio80";
1290		function = "mdp_vsync";
1291		drive-strength = <2>;
1292		bias-pull-down;
1293	};
1294
1295	pm8008_int_default: pm8008-int-default-state {
1296		pins = "gpio25";
1297		function = "gpio";
1298		drive-strength = <2>;
1299		bias-disable;
1300	};
1301
1302	qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
1303		pins = "gpio28";
1304		function = "gpio";
1305		/*
1306		 * Configure a bias-bus-hold on CTS to lower power
1307		 * usage when Bluetooth is turned off. Bus hold will
1308		 * maintain a low power state regardless of whether
1309		 * the Bluetooth module drives the pin in either
1310		 * direction or leaves the pin fully unpowered.
1311		 */
1312		bias-bus-hold;
1313	};
1314
1315	qup_uart7_sleep_rts: qup-uart7-sleep-rts-state {
1316		pins = "gpio29";
1317		function = "gpio";
1318		/*
1319		 * Configure pull-down on RTS. As RTS is active low
1320		 * signal, pull it low to indicate the BT SoC that it
1321		 * can wakeup the system anytime from suspend state by
1322		 * pulling RX low (by sending wakeup bytes).
1323		 */
1324		bias-pull-down;
1325	};
1326
1327	qup_uart7_sleep_tx: qup-uart7-sleep-tx-state {
1328		pins = "gpio30";
1329		function = "gpio";
1330		/*
1331		 * Configure pull-up on TX when it isn't actively driven
1332		 * to prevent BT SoC from receiving garbage during sleep.
1333		 */
1334		bias-pull-up;
1335	};
1336
1337	qup_uart7_sleep_rx: qup-uart7-sleep-rx-state {
1338		pins = "gpio31";
1339		function = "gpio";
1340		/*
1341		 * Configure a pull-up on RX. This is needed to avoid
1342		 * garbage data when the TX pin of the Bluetooth module
1343		 * is floating which may cause spurious wakeups.
1344		 */
1345		bias-pull-up;
1346	};
1347
1348	sw_ctrl_default: sw-ctrl-default-state {
1349		pins = "gpio86";
1350		function = "gpio";
1351		bias-pull-down;
1352	};
1353
1354	usb_redrive_1v8_en_default: usb-redrive-1v8-en-default-state {
1355		pins = "gpio61";
1356		function = "gpio";
1357		drive-strength = <2>;
1358		bias-disable;
1359		output-high;
1360	};
1361
1362	aw86927_int_default: aw86927-int-default-state {
1363		pins = "gpio101";
1364		function = "gpio";
1365		drive-strength = <2>;
1366		bias-pull-up;
1367	};
1368};
1369
1370&uart5 {
1371	status = "okay";
1372};
1373
1374&uart7 {
1375	/delete-property/interrupts;
1376	interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
1377			      <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
1378
1379	pinctrl-1 = <&qup_uart7_sleep_cts>, <&qup_uart7_sleep_rts>, <&qup_uart7_sleep_tx>, <&qup_uart7_sleep_rx>;
1380	pinctrl-names = "default", "sleep";
1381
1382	status = "okay";
1383
1384	bluetooth: bluetooth {
1385		compatible = "qcom,wcn6750-bt";
1386
1387		pinctrl-0 = <&bluetooth_enable_default>, <&sw_ctrl_default>;
1388		pinctrl-names = "default";
1389
1390		enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;
1391		swctrl-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>;
1392
1393		vddio-supply = <&vreg_l19b>;
1394		vddaon-supply = <&vreg_s7b>;
1395		vddbtcxmx-supply = <&vreg_s7b>;
1396		vddrfacmn-supply = <&vreg_s7b>;
1397		vddrfa0p8-supply = <&vreg_s7b>;
1398		vddrfa1p7-supply = <&vreg_s1b>;
1399		vddrfa1p2-supply = <&vreg_s8b>;
1400		vddrfa2p2-supply = <&vreg_s1c>;
1401		vddasd-supply = <&vreg_l11c>;
1402
1403		max-speed = <3200000>;
1404	};
1405};
1406
1407&ufs_mem_hc {
1408	reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>;
1409
1410	vcc-supply = <&vreg_l7b>;
1411	vcc-max-microamp = <800000>;
1412	/*
1413	 * Technically l9b enables an eLDO (supplied by s1b) which then powers
1414	 * VCCQ2 of the UFS.
1415	 */
1416	vccq-supply = <&vreg_l9b>;
1417	vccq-max-microamp = <900000>;
1418
1419	status = "okay";
1420};
1421
1422&ufs_mem_phy {
1423	vdda-phy-supply = <&vreg_l10c>;
1424	vdda-pll-supply = <&vreg_l6b>;
1425
1426	status = "okay";
1427};
1428
1429&usb_1 {
1430	dr_mode = "otg";
1431	usb-role-switch;
1432
1433	status = "okay";
1434};
1435
1436&usb_1_dwc3_hs {
1437	remote-endpoint = <&pmic_glink_hs_in>;
1438};
1439
1440&usb_1_hsphy {
1441	vdda-pll-supply = <&vreg_l10c>;
1442	vdda18-supply = <&vreg_l1c>;
1443	vdda33-supply = <&vreg_l2b>;
1444
1445	qcom,hs-crossover-voltage-microvolt = <28000>;
1446	qcom,hs-output-impedance-micro-ohms = <2600000>;
1447	qcom,hs-rise-fall-time-bp = <5430>;
1448	qcom,hs-disconnect-bp = <1743>;
1449	qcom,hs-amplitude-bp = <2430>;
1450
1451	qcom,pre-emphasis-amplitude-bp = <20000>;
1452	qcom,pre-emphasis-duration-bp = <20000>;
1453
1454	qcom,squelch-detector-bp = <(-2090)>;
1455
1456	status = "okay";
1457};
1458
1459&usb_1_qmpphy {
1460	vdda-phy-supply = <&vreg_l6b>;
1461	vdda-pll-supply = <&vreg_l1b>;
1462
1463	status = "okay";
1464};
1465
1466&usb_dp_qmpphy_out {
1467	remote-endpoint = <&redriver_ss_in>;
1468};
1469
1470&venus {
1471	firmware-name = "qcom/qcm6490/fairphone5/venus.mbn";
1472	status = "okay";
1473};
1474
1475&wifi {
1476	qcom,calibration-variant = "Fairphone_5";
1477	status = "okay";
1478};
1479