blob: 2ee2561b57b1d6c7b0f40c93de62df47faaf95ca [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
4 */
5
6/dts-v1/;
7
8/* PM7250B is configured to use SID2/3 */
9#define PM7250B_SID 2
10#define PM7250B_SID1 3
11
12/* PMK8350 (in reality a PMK8003) is configured to use SID6 instead of 0 */
13#define PMK8350_SID 6
14
15#include <dt-bindings/firmware/qcom,scm.h>
16#include <dt-bindings/gpio/gpio.h>
17#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
18#include <dt-bindings/input/input.h>
19#include <dt-bindings/leds/common.h>
20#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
21#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
Tom Rini6b642ac2024-10-01 12:20:28 -060022#include <dt-bindings/usb/pd.h>
Tom Rini53633a82024-02-29 12:33:36 -050023#include "sm7225.dtsi"
24#include "pm6150l.dtsi"
25#include "pm6350.dtsi"
26#include "pm7250b.dtsi"
27#include "pmk8350.dtsi"
28
29/ {
30 model = "Fairphone 4";
31 compatible = "fairphone,fp4", "qcom,sm7225";
32 chassis-type = "handset";
33
34 /* required for bootloader to select correct board */
35 qcom,msm-id = <434 0x10000>, <459 0x10000>;
36 qcom,board-id = <8 32>;
37
38 aliases {
39 serial0 = &uart9;
40 serial1 = &uart1;
41 };
42
43 chosen {
44 #address-cells = <2>;
45 #size-cells = <2>;
46 ranges;
47
48 stdout-path = "serial0:115200n8";
49
50 framebuffer0: framebuffer@a000000 {
51 compatible = "simple-framebuffer";
52 reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
53 width = <1080>;
54 height = <2340>;
55 stride = <(1080 * 4)>;
56 format = "a8r8g8b8";
57 };
58 };
59
60 gpio-keys {
61 compatible = "gpio-keys";
62 pinctrl-names = "default";
63 pinctrl-0 = <&gpio_keys_pin>;
64
65 key-volume-up {
66 label = "volume_up";
67 linux,code = <KEY_VOLUMEUP>;
68 gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
69 };
70 };
71
Tom Rini6bb92fc2024-05-20 09:54:58 -060072 /* Dummy regulator until PM6150L has LCDB VSP/VSN support */
73 lcdb_dummy: regulator-lcdb-dummy {
74 compatible = "regulator-fixed";
75 regulator-name = "lcdb_dummy";
76 regulator-min-microvolt = <5500000>;
77 regulator-max-microvolt = <5500000>;
78 };
79
Tom Rini53633a82024-02-29 12:33:36 -050080 reserved-memory {
81 /*
82 * The rmtfs memory region in downstream is 'dynamically allocated'
83 * but given the same address every time. Hard code it as this address is
84 * where the modem firmware expects it to be.
85 */
86 memory@efe01000 {
87 compatible = "qcom,rmtfs-mem";
88 reg = <0 0xefe01000 0 0x600000>;
89 no-map;
90
91 qcom,client-id = <1>;
92 qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
93 };
94 };
95
Tom Rini6b642ac2024-10-01 12:20:28 -060096 msm_therm_sensor: thermal-sensor-msm {
97 compatible = "generic-adc-thermal";
98 #thermal-sensor-cells = <0>;
99 io-channels = <&pm6150l_adc ADC5_AMUX_THM2_100K_PU>;
100 io-channel-names = "sensor-channel";
101 };
102
103 rear_cam_sensor: thermal-sensor-rear-cam {
104 compatible = "generic-adc-thermal";
105 #thermal-sensor-cells = <0>;
106 io-channels = <&pm6150l_adc ADC5_GPIO2_100K_PU>;
107 io-channel-names = "sensor-channel";
108 };
109
Tom Rini53633a82024-02-29 12:33:36 -0500110 thermal-zones {
111 chg-skin-thermal {
Tom Rini53633a82024-02-29 12:33:36 -0500112 thermal-sensors = <&pm7250b_adc_tm 0>;
113
114 trips {
115 active-config0 {
116 temperature = <125000>;
117 hysteresis = <1000>;
118 type = "passive";
119 };
120 };
121 };
122
123 conn-thermal {
Tom Rini53633a82024-02-29 12:33:36 -0500124 thermal-sensors = <&pm7250b_adc_tm 1>;
125
126 trips {
127 active-config0 {
128 temperature = <125000>;
129 hysteresis = <1000>;
130 type = "passive";
131 };
132 };
133 };
Tom Rini6b642ac2024-10-01 12:20:28 -0600134
135 pa0-thermal {
136 thermal-sensors = <&pm6150l_adc_tm 1>;
137
138 trips {
139 active-config0 {
140 temperature = <125000>;
141 hysteresis = <1000>;
142 type = "passive";
143 };
144 };
145 };
146
147 pa1-thermal {
148 thermal-sensors = <&pm6150l_adc_tm 0>;
149
150 trips {
151 active-config0 {
152 temperature = <125000>;
153 hysteresis = <1000>;
154 type = "passive";
155 };
156 };
157 };
158
159 pm8008-thermal {
160 polling-delay-passive = <100>;
161 thermal-sensors = <&pm8008>;
162
163 trips {
164 trip0 {
165 temperature = <95000>;
166 hysteresis = <0>;
167 type = "passive";
168 };
169
170 trip1 {
171 temperature = <115000>;
172 hysteresis = <0>;
173 type = "critical";
174 };
175 };
176 };
177
178 quiet-thermal {
179 thermal-sensors = <&pm6150l_adc_tm 3>;
180
181 trips {
182 active-config0 {
183 temperature = <125000>;
184 hysteresis = <1000>;
185 type = "passive";
186 };
187 };
188 };
189
190 rear-cam-thermal {
191 polling-delay-passive = <1000>;
192 polling-delay = <5000>;
193 thermal-sensors = <&rear_cam_sensor>;
194
195 trips {
196 active-config0 {
197 temperature = <125000>;
198 hysteresis = <1000>;
199 type = "passive";
200 };
201 };
202 };
203
204 rfc-flash-thermal {
205 thermal-sensors = <&pm6150l_adc_tm 2>;
206
207 trips {
208 active-config0 {
209 temperature = <125000>;
210 hysteresis = <1000>;
211 type = "passive";
212 };
213 };
214 };
215
216 sdm-skin-thermal {
217 polling-delay-passive = <1000>;
218 polling-delay = <5000>;
219 thermal-sensors = <&msm_therm_sensor>;
220
221 trips {
222 trip0 {
223 temperature = <45000>;
224 hysteresis = <0>;
225 type = "passive";
226 };
227
228 trip1 {
229 temperature = <55000>;
230 hysteresis = <0>;
231 type = "critical";
232 };
233 };
234 };
235
236 xo-thermal {
237 thermal-sensors = <&pmk8350_adc_tm 0>;
238
239 trips {
240 active-config0 {
241 temperature = <125000>;
242 hysteresis = <1000>;
243 type = "passive";
244 };
245 };
246 };
Tom Rini53633a82024-02-29 12:33:36 -0500247 };
248};
249
250&adsp {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600251 firmware-name = "qcom/sm7225/fairphone4/adsp.mbn";
Tom Rini53633a82024-02-29 12:33:36 -0500252 status = "okay";
253};
254
255&apps_rsc {
256 regulators-0 {
257 compatible = "qcom,pm6350-rpmh-regulators";
258 qcom,pmic-id = "a";
259
260 vreg_s1a: smps1 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600261 regulator-name = "vreg_s1a";
Tom Rini53633a82024-02-29 12:33:36 -0500262 regulator-min-microvolt = <1000000>;
263 regulator-max-microvolt = <1200000>;
264 };
265
266 vreg_s2a: smps2 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600267 regulator-name = "vreg_s2a";
Tom Rini53633a82024-02-29 12:33:36 -0500268 regulator-min-microvolt = <1503000>;
269 regulator-max-microvolt = <2048000>;
270 };
271
272 vreg_l2a: ldo2 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600273 regulator-name = "vreg_l2a";
Tom Rini53633a82024-02-29 12:33:36 -0500274 regulator-min-microvolt = <1503000>;
275 regulator-max-microvolt = <1980000>;
276 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
277 };
278
279 vreg_l3a: ldo3 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600280 regulator-name = "vreg_l3a";
Tom Rini53633a82024-02-29 12:33:36 -0500281 regulator-min-microvolt = <2700000>;
282 regulator-max-microvolt = <3300000>;
283 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
284 };
285
286 vreg_l4a: ldo4 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600287 regulator-name = "vreg_l4a";
Tom Rini53633a82024-02-29 12:33:36 -0500288 regulator-min-microvolt = <352000>;
289 regulator-max-microvolt = <801000>;
290 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
291 };
292
293 vreg_l5a: ldo5 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600294 regulator-name = "vreg_l5a";
Tom Rini53633a82024-02-29 12:33:36 -0500295 regulator-min-microvolt = <1503000>;
296 regulator-max-microvolt = <1980000>;
297 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
298 };
299
300 vreg_l6a: ldo6 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600301 regulator-name = "vreg_l6a";
Tom Rini53633a82024-02-29 12:33:36 -0500302 regulator-min-microvolt = <1710000>;
303 regulator-max-microvolt = <3544000>;
304 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
305 };
306
307 vreg_l7a: ldo7 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600308 regulator-name = "vreg_l7a";
Tom Rini53633a82024-02-29 12:33:36 -0500309 regulator-min-microvolt = <1620000>;
310 regulator-max-microvolt = <1980000>;
311 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
312 };
313
314 vreg_l8a: ldo8 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600315 regulator-name = "vreg_l8a";
Tom Rini53633a82024-02-29 12:33:36 -0500316 regulator-min-microvolt = <2800000>;
317 regulator-max-microvolt = <2800000>;
318 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
319 };
320
321 vreg_l9a: ldo9 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600322 regulator-name = "vreg_l9a";
Tom Rini53633a82024-02-29 12:33:36 -0500323 regulator-min-microvolt = <1650000>;
324 regulator-max-microvolt = <3401000>;
325 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
326 };
327
328 vreg_l11a: ldo11 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600329 regulator-name = "vreg_l11a";
Tom Rini53633a82024-02-29 12:33:36 -0500330 regulator-min-microvolt = <1800000>;
331 regulator-max-microvolt = <2000000>;
332 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
333 };
334
335 vreg_l12a: ldo12 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600336 regulator-name = "vreg_l12a";
Tom Rini53633a82024-02-29 12:33:36 -0500337 regulator-min-microvolt = <1620000>;
338 regulator-max-microvolt = <1980000>;
339 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
340 };
341
342 vreg_l13a: ldo13 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600343 regulator-name = "vreg_l13a";
Tom Rini53633a82024-02-29 12:33:36 -0500344 regulator-min-microvolt = <570000>;
345 regulator-max-microvolt = <650000>;
346 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
347 };
348
349 vreg_l14a: ldo14 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600350 regulator-name = "vreg_l14a";
Tom Rini53633a82024-02-29 12:33:36 -0500351 regulator-min-microvolt = <1700000>;
352 regulator-max-microvolt = <1900000>;
353 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
354 };
355
356 vreg_l15a: ldo15 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600357 regulator-name = "vreg_l15a";
Tom Rini53633a82024-02-29 12:33:36 -0500358 regulator-min-microvolt = <1100000>;
359 regulator-max-microvolt = <1305000>;
360 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
361 };
362
363 vreg_l16a: ldo16 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600364 regulator-name = "vreg_l16a";
Tom Rini53633a82024-02-29 12:33:36 -0500365 regulator-min-microvolt = <830000>;
366 regulator-max-microvolt = <921000>;
367 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
368 };
369
370 vreg_l18a: ldo18 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600371 regulator-name = "vreg_l18a";
Tom Rini53633a82024-02-29 12:33:36 -0500372 regulator-min-microvolt = <788000>;
373 regulator-max-microvolt = <1049000>;
374 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
375 };
376
377 vreg_l19a: ldo19 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600378 regulator-name = "vreg_l19a";
Tom Rini53633a82024-02-29 12:33:36 -0500379 regulator-min-microvolt = <1080000>;
380 regulator-max-microvolt = <1305000>;
381 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
382 };
383
384 vreg_l20a: ldo20 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600385 regulator-name = "vreg_l20a";
Tom Rini53633a82024-02-29 12:33:36 -0500386 regulator-min-microvolt = <530000>;
387 regulator-max-microvolt = <801000>;
388 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
389 };
390
391 vreg_l21a: ldo21 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600392 regulator-name = "vreg_l21a";
Tom Rini53633a82024-02-29 12:33:36 -0500393 regulator-min-microvolt = <751000>;
394 regulator-max-microvolt = <825000>;
395 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
396 };
397
398 vreg_l22a: ldo22 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600399 regulator-name = "vreg_l22a";
Tom Rini53633a82024-02-29 12:33:36 -0500400 regulator-min-microvolt = <1080000>;
401 regulator-max-microvolt = <1305000>;
402 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
403 };
404 };
405
406 regulators-1 {
407 compatible = "qcom,pm6150l-rpmh-regulators";
408 qcom,pmic-id = "e";
409
410 vreg_s8e: smps8 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600411 regulator-name = "vreg_s8e";
Tom Rini53633a82024-02-29 12:33:36 -0500412 regulator-min-microvolt = <313000>;
413 regulator-max-microvolt = <1395000>;
414 };
415
416 vreg_l1e: ldo1 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600417 regulator-name = "vreg_l1e";
Tom Rini53633a82024-02-29 12:33:36 -0500418 regulator-min-microvolt = <1620000>;
419 regulator-max-microvolt = <1980000>;
420 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
421 };
422
423 vreg_l2e: ldo2 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600424 regulator-name = "vreg_l2e";
Tom Rini53633a82024-02-29 12:33:36 -0500425 regulator-min-microvolt = <1170000>;
426 regulator-max-microvolt = <1305000>;
427 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
428 };
429
430 vreg_l3e: ldo3 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600431 regulator-name = "vreg_l3e";
Tom Rini53633a82024-02-29 12:33:36 -0500432 regulator-min-microvolt = <1100000>;
433 regulator-max-microvolt = <1299000>;
434 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
435 };
436
437 vreg_l4e: ldo4 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600438 regulator-name = "vreg_l4e";
Tom Rini53633a82024-02-29 12:33:36 -0500439 regulator-min-microvolt = <1620000>;
440 regulator-max-microvolt = <3300000>;
441 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
442 };
443
444 vreg_l5e: ldo5 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600445 regulator-name = "vreg_l5e";
Tom Rini53633a82024-02-29 12:33:36 -0500446 regulator-min-microvolt = <1620000>;
447 regulator-max-microvolt = <3300000>;
448 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
449 };
450
451 vreg_l6e: ldo6 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600452 regulator-name = "vreg_l6e";
Tom Rini53633a82024-02-29 12:33:36 -0500453 regulator-min-microvolt = <1700000>;
454 regulator-max-microvolt = <2950000>;
455 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
456 regulator-allow-set-load;
457 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
458 RPMH_REGULATOR_MODE_HPM>;
459 };
460
461 vreg_l7e: ldo7 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600462 regulator-name = "vreg_l7e";
Tom Rini53633a82024-02-29 12:33:36 -0500463 regulator-min-microvolt = <2700000>;
464 regulator-max-microvolt = <3544000>;
465 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
466 };
467
468 vreg_l8e: ldo8 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600469 regulator-name = "vreg_l8e";
Tom Rini53633a82024-02-29 12:33:36 -0500470 regulator-min-microvolt = <1620000>;
471 regulator-max-microvolt = <2000000>;
472 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
473 };
474
475 vreg_l9e: ldo9 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600476 regulator-name = "vreg_l9e";
Tom Rini53633a82024-02-29 12:33:36 -0500477 regulator-min-microvolt = <2700000>;
478 regulator-max-microvolt = <2960000>;
479 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
480 regulator-allow-set-load;
481 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
482 RPMH_REGULATOR_MODE_HPM>;
483 };
484
485 vreg_l10e: ldo10 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600486 regulator-name = "vreg_l10e";
Tom Rini53633a82024-02-29 12:33:36 -0500487 regulator-min-microvolt = <3000000>;
488 regulator-max-microvolt = <3401000>;
489 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
490 };
491
492 vreg_l11e: ldo11 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600493 regulator-name = "vreg_l11e";
Tom Rini53633a82024-02-29 12:33:36 -0500494 regulator-min-microvolt = <3000000>;
495 regulator-max-microvolt = <3401000>;
496 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
497 };
498
499 vreg_bob: bob {
Tom Rini6b642ac2024-10-01 12:20:28 -0600500 regulator-name = "vreg_bob";
Tom Rini53633a82024-02-29 12:33:36 -0500501 regulator-min-microvolt = <1620000>;
502 regulator-max-microvolt = <5492000>;
503 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
504 regulator-allow-bypass;
505 };
506 };
507};
508
509&cci0 {
510 status = "okay";
511};
512
513&cci0_i2c0 {
514 /* IMX582 @ 0x1a */
515};
516
517&cci0_i2c1 {
518 /* IMX582 @ 0x1a */
519};
520
521&cci1 {
522 status = "okay";
523};
524
525&cci1_i2c0 {
526 /* IMX576 @ 0x10 */
527};
528
529&cdsp {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600530 firmware-name = "qcom/sm7225/fairphone4/cdsp.mbn";
Tom Rini53633a82024-02-29 12:33:36 -0500531 status = "okay";
532};
533
534&gpi_dma0 {
535 status = "okay";
536};
537
538&gpi_dma1 {
539 status = "okay";
540};
541
Tom Rini6bb92fc2024-05-20 09:54:58 -0600542&gpu {
543 status = "okay";
544};
545
546&gpu_zap_shader {
547 firmware-name = "qcom/sm7225/fairphone4/a615_zap.mbn";
548};
549
Tom Rini53633a82024-02-29 12:33:36 -0500550&i2c0 {
551 clock-frequency = <400000>;
552 status = "okay";
553
554 /* ST21NFCD NFC @ 8 */
555 /* VL53L3 ToF @ 29 */
556 /* AW88264A amplifier @ 34 */
557 /* AW88264A amplifier @ 35 */
558};
559
560&i2c8 {
561 clock-frequency = <400000>;
562 status = "okay";
563
564 /* HX83112A touchscreen @ 48 */
565};
566
567&i2c10 {
Tom Rini6b642ac2024-10-01 12:20:28 -0600568 clock-frequency = <400000>;
569 status = "okay";
570
571 pm8008: pmic@8 {
572 compatible = "qcom,pm8008";
573 reg = <0x8>;
574
575 interrupts-extended = <&tlmm 59 IRQ_TYPE_EDGE_RISING>;
576 reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
577
578 vdd-l1-l2-supply = <&vreg_s8e>;
579 vdd-l3-l4-supply = <&vreg_bob>;
580 vdd-l5-supply = <&vreg_bob>;
581 vdd-l6-supply = <&vreg_s2a>;
582 vdd-l7-supply = <&vreg_bob>;
583
584 pinctrl-names = "default";
585 pinctrl-0 = <&pm8008_default>;
586
587 gpio-controller;
588 #gpio-cells = <2>;
589 gpio-ranges = <&pm8008 0 0 2>;
590
591 interrupt-controller;
592 #interrupt-cells = <2>;
593
594 #thermal-sensor-cells = <0>;
595
596 regulators {
597 vreg_l1p: ldo1 {
598 regulator-name = "vreg_l1p";
599 regulator-min-microvolt = <528000>;
600 regulator-max-microvolt = <1200000>;
601 };
602
603 vreg_l2p: ldo2 {
604 regulator-name = "vreg_l2p";
605 regulator-min-microvolt = <528000>;
606 regulator-max-microvolt = <1200000>;
607 };
608
609 vreg_l3p: ldo3 {
610 regulator-name = "vreg_l3p";
611 regulator-min-microvolt = <1500000>;
612 regulator-max-microvolt = <2800000>;
613 };
614
615 vreg_l4p: ldo4 {
616 regulator-name = "vreg_l4p";
617 regulator-min-microvolt = <1500000>;
618 regulator-max-microvolt = <2904000>;
619 };
620
621 vreg_l5p: ldo5 {
622 regulator-name = "vreg_l5p";
623 regulator-min-microvolt = <1500000>;
624 regulator-max-microvolt = <2900000>;
625 };
626
627 vreg_l6p: ldo6 {
628 regulator-name = "vreg_l6p";
629 regulator-min-microvolt = <1500000>;
630 regulator-max-microvolt = <1800000>;
631 };
632
633 vreg_l7p: ldo7 {
634 regulator-name = "vreg_l7p";
635 regulator-min-microvolt = <1500000>;
636 regulator-max-microvolt = <3140000>;
637 };
638 };
639 };
640
Tom Rini53633a82024-02-29 12:33:36 -0500641 /* PX8618 @ 26 */
642 /* SMB1395 PMIC @ 34 */
643 /* awinic,aw8695 @ 5a */
644};
645
646&ipa {
647 qcom,gsi-loader = "self";
648 memory-region = <&pil_ipa_fw_mem>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600649 firmware-name = "qcom/sm7225/fairphone4/ipa_fws.mbn";
650 status = "okay";
651};
652
653&mdss {
654 status = "okay";
655};
656
657&mdss_dsi0 {
658 vdda-supply = <&vreg_l22a>;
659 status = "okay";
660
661 panel@0 {
662 compatible = "djn,9a-3r063-1102b";
663 reg = <0>;
664
665 backlight = <&pm6150l_wled>;
666 reset-gpios = <&pm6150l_gpios 9 GPIO_ACTIVE_LOW>;
667
668 vdd1-supply = <&vreg_l1e>;
669 vsn-supply = <&lcdb_dummy>;
670 vsp-supply = <&lcdb_dummy>;
671
672 port {
673 panel_in: endpoint {
674 remote-endpoint = <&mdss_dsi0_out>;
675 };
676 };
677 };
678};
679
680&mdss_dsi0_out {
681 data-lanes = <0 1 2 3>;
682 remote-endpoint = <&panel_in>;
683};
684
685&mdss_dsi0_phy {
686 vdds-supply = <&vreg_l18a>;
Tom Rini53633a82024-02-29 12:33:36 -0500687 status = "okay";
688};
689
690&mpss {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600691 firmware-name = "qcom/sm7225/fairphone4/modem.mbn";
Tom Rini53633a82024-02-29 12:33:36 -0500692 status = "okay";
Tom Rini6b642ac2024-10-01 12:20:28 -0600693};
694
695&pm6150l_adc {
696 pinctrl-0 = <&pm6150l_adc_default>;
697 pinctrl-names = "default";
698
699 channel@4d {
700 reg = <ADC5_AMUX_THM1_100K_PU>;
701 label = "pa_therm1";
702 qcom,hw-settle-time = <200>;
703 qcom,pre-scaling = <1 1>;
704 qcom,ratiometric;
705 };
706
707 channel@4e {
708 reg = <ADC5_AMUX_THM2_100K_PU>;
709 label = "msm_therm";
710 qcom,hw-settle-time = <200>;
711 qcom,pre-scaling = <1 1>;
712 qcom,ratiometric;
713 };
714
715 channel@4f {
716 reg = <ADC5_AMUX_THM3_100K_PU>;
717 label = "pa_therm0";
718 qcom,hw-settle-time = <200>;
719 qcom,pre-scaling = <1 1>;
720 qcom,ratiometric;
721 };
722
723 channel@53 {
724 reg = <ADC5_GPIO2_100K_PU>;
725 label = "rear_cam_therm";
726 qcom,hw-settle-time = <200>;
727 qcom,pre-scaling = <1 1>;
728 qcom,ratiometric;
729 };
730
731 channel@54 {
732 reg = <ADC5_GPIO3_100K_PU>;
733 label = "rear_cam_flash_therm";
734 qcom,hw-settle-time = <200>;
735 qcom,pre-scaling = <1 1>;
736 qcom,ratiometric;
737 };
738
739 channel@55 {
740 reg = <ADC5_GPIO4_100K_PU>;
741 label = "quiet_therm";
742 qcom,hw-settle-time = <200>;
743 qcom,pre-scaling = <1 1>;
744 qcom,ratiometric;
745 };
746};
747
748&pm6150l_adc_tm {
749 status = "okay";
750
751 pa-therm1@0 {
752 reg = <0>;
753 io-channels = <&pm6150l_adc ADC5_AMUX_THM1_100K_PU>;
754 qcom,hw-settle-time-us = <200>;
755 qcom,ratiometric;
756 };
757
758 pa-therm0@1 {
759 reg = <1>;
760 io-channels = <&pm6150l_adc ADC5_AMUX_THM3_100K_PU>;
761 qcom,hw-settle-time-us = <200>;
762 qcom,ratiometric;
763 };
764
765 rear-cam-flash-therm@2 {
766 reg = <2>;
767 io-channels = <&pm6150l_adc ADC5_GPIO3_100K_PU>;
768 qcom,hw-settle-time-us = <200>;
769 qcom,ratiometric;
770 };
771
772 quiet-therm@3 {
773 reg = <3>;
774 io-channels = <&pm6150l_adc ADC5_GPIO4_100K_PU>;
775 qcom,hw-settle-time-us = <200>;
776 qcom,ratiometric;
777 };
Tom Rini53633a82024-02-29 12:33:36 -0500778};
779
780&pm6150l_flash {
781 status = "okay";
782
783 led-0 {
784 function = LED_FUNCTION_FLASH;
785 color = <LED_COLOR_ID_YELLOW>;
786 led-sources = <1>;
787 led-max-microamp = <180000>;
788 flash-max-microamp = <1000000>;
789 flash-max-timeout-us = <1280000>;
790 };
791
792 led-1 {
793 function = LED_FUNCTION_FLASH;
794 color = <LED_COLOR_ID_WHITE>;
795 led-sources = <2>;
796 led-max-microamp = <180000>;
797 flash-max-microamp = <1000000>;
798 flash-max-timeout-us = <1280000>;
799 };
800};
801
Tom Rini6b642ac2024-10-01 12:20:28 -0600802&pm6150l_gpios {
803 pm6150l_adc_default: adc-default-state {
804 pins = "gpio6", "gpio7", "gpio10";
805 function = PMIC_GPIO_FUNC_NORMAL;
806 bias-high-impedance;
807 };
808};
809
Tom Rini53633a82024-02-29 12:33:36 -0500810&pm6150l_wled {
811 qcom,switching-freq = <800>;
812 qcom,current-limit-microamp = <20000>;
813 qcom,num-strings = <2>;
814
815 status = "okay";
816};
817
818&pm6350_gpios {
819 gpio_keys_pin: gpio-keys-state {
820 pins = "gpio2";
821 function = PMIC_GPIO_FUNC_NORMAL;
822 bias-pull-up;
823 input-enable;
824 power-source = <0>;
825 };
826};
827
828&pm6350_resin {
829 linux,code = <KEY_VOLUMEDOWN>;
830 status = "okay";
831};
832
833&pm7250b_adc {
834 channel@4d {
835 reg = <ADC5_AMUX_THM1_100K_PU>;
836 qcom,ratiometric;
837 qcom,hw-settle-time = <200>;
838 qcom,pre-scaling = <1 1>;
839 label = "charger_skin_therm";
840 };
841
842 channel@4f {
843 reg = <ADC5_AMUX_THM3_100K_PU>;
844 qcom,ratiometric;
845 qcom,hw-settle-time = <200>;
846 qcom,pre-scaling = <1 1>;
847 label = "conn_therm";
848 };
849};
850
851&pm7250b_adc_tm {
852 status = "okay";
853
854 charger-skin-therm@0 {
855 reg = <0>;
856 io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
857 qcom,ratiometric;
858 qcom,hw-settle-time-us = <200>;
859 };
860
861 conn-therm@1 {
862 reg = <1>;
863 io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
864 qcom,ratiometric;
865 qcom,hw-settle-time-us = <200>;
Tom Rini6b642ac2024-10-01 12:20:28 -0600866 };
867};
868
869&pm7250b_typec {
870 vdd-pdphy-supply = <&vreg_l3a>;
871
872 status = "okay";
873
874 connector {
875 compatible = "usb-c-connector";
876
877 power-role = "dual";
878 data-role = "dual";
879 self-powered;
880
881 /*
882 * Disable USB Power Delivery for now, seems to need extra work
883 * to support role switching while also letting the battery
884 * charge still - without charger driver
885 */
886 typec-power-opmode = "default";
887 pd-disable;
888
889 ports {
890 #address-cells = <1>;
891 #size-cells = <0>;
892
893 port@0 {
894 reg = <0>;
895 pm7250b_hs_in: endpoint {
896 remote-endpoint = <&usb_1_dwc3_hs_out>;
897 };
898 };
899
900 port@1 {
901 reg = <1>;
902 pm7250b_ss_in: endpoint {
903 remote-endpoint = <&usb_1_qmpphy_out>;
904 };
905 };
906 };
907 };
908};
909
910&pm7250b_vbus {
911 regulator-min-microamp = <500000>;
912 regulator-max-microamp = <1500000>;
913 status = "okay";
914};
915
916&pmk8350_adc_tm {
917 status = "okay";
918
919 xo-therm@0 {
920 reg = <0>;
921 io-channels = <&pmk8350_vadc PMK8350_ADC7_AMUX_THM1_100K_PU>;
922 qcom,hw-settle-time-us = <200>;
923 qcom,ratiometric;
Tom Rini53633a82024-02-29 12:33:36 -0500924 };
925};
926
927&pmk8350_rtc {
928 status = "okay";
929};
930
931&pmk8350_vadc {
932 channel@644 {
933 reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
934 qcom,ratiometric;
935 qcom,hw-settle-time = <200>;
936 qcom,pre-scaling = <1 1>;
937 label = "xo_therm";
938 };
939};
940
941&qup_uart1_cts {
942 /*
943 * Configure a bias-bus-hold on CTS to lower power
944 * usage when Bluetooth is turned off. Bus hold will
945 * maintain a low power state regardless of whether
946 * the Bluetooth module drives the pin in either
947 * direction or leaves the pin fully unpowered.
948 */
949 bias-bus-hold;
950};
951
952&qup_uart1_rts {
953 /* We'll drive RTS, so no pull */
954 drive-strength = <2>;
955 bias-disable;
956};
957
958&qup_uart1_rx {
959 /*
960 * Configure a pull-up on RX. This is needed to avoid
961 * garbage data when the TX pin of the Bluetooth module is
962 * in tri-state (module powered off or not driving the
963 * signal yet).
964 */
965 bias-pull-up;
966};
967
968&qup_uart1_tx {
969 /* We'll drive TX, so no pull */
970 drive-strength = <2>;
971 bias-disable;
972};
973
974&qupv3_id_0 {
975 status = "okay";
976};
977
978&qupv3_id_1 {
979 status = "okay";
980};
981
982&sdc2_off_state {
983 sd-cd-pins {
984 pins = "gpio94";
985 function = "gpio";
986 drive-strength = <2>;
987 bias-disable;
988 };
989};
990
991&sdc2_on_state {
992 sd-cd-pins {
993 pins = "gpio94";
994 function = "gpio";
995 drive-strength = <2>;
996 bias-pull-up;
997 };
998};
999
1000&sdhc_2 {
1001 vmmc-supply = <&vreg_l9e>;
1002 vqmmc-supply = <&vreg_l6e>;
1003
1004 cd-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
1005
1006 status = "okay";
1007};
1008
1009&tlmm {
1010 gpio-reserved-ranges = <13 4>, <56 2>;
1011
1012 qup_uart1_sleep_cts: qup-uart1-sleep-cts-state {
1013 pins = "gpio61";
1014 function = "gpio";
1015 /*
1016 * Configure a bias-bus-hold on CTS to lower power
1017 * usage when Bluetooth is turned off. Bus hold will
1018 * maintain a low power state regardless of whether
1019 * the Bluetooth module drives the pin in either
1020 * direction or leaves the pin fully unpowered.
1021 */
1022 bias-bus-hold;
1023 };
1024
1025 qup_uart1_sleep_rts: qup-uart1-sleep-rts-state {
1026 pins = "gpio62";
1027 function = "gpio";
1028 /*
1029 * Configure pull-down on RTS. As RTS is active low
1030 * signal, pull it low to indicate the BT SoC that it
1031 * can wakeup the system anytime from suspend state by
1032 * pulling RX low (by sending wakeup bytes).
1033 */
1034 bias-pull-down;
1035 };
1036
1037 qup_uart1_sleep_rx: qup-uart1-sleep-rx-state {
1038 pins = "gpio64";
1039 function = "gpio";
1040 /*
1041 * Configure a pull-up on RX. This is needed to avoid
1042 * garbage data when the TX pin of the Bluetooth module
1043 * is floating which may cause spurious wakeups.
1044 */
1045 bias-pull-up;
1046 };
1047
1048 qup_uart1_sleep_tx: qup-uart1-sleep-tx-state {
1049 pins = "gpio63";
1050 function = "gpio";
1051 /*
1052 * Configure pull-up on TX when it isn't actively driven
1053 * to prevent BT SoC from receiving garbage during sleep.
1054 */
1055 bias-pull-up;
1056 };
Tom Rini6b642ac2024-10-01 12:20:28 -06001057
1058 pm8008_default: pm8008-default-state {
1059 int-pins {
1060 pins = "gpio59";
1061 function = "gpio";
1062 drive-strength = <2>;
1063 bias-pull-down;
1064 };
1065
1066 reset-n-pins {
1067 pins = "gpio58";
1068 function = "gpio";
1069 drive-strength = <2>;
1070 bias-disable;
1071 };
1072 };
Tom Rini53633a82024-02-29 12:33:36 -05001073};
1074
1075&uart1 {
1076 /delete-property/ interrupts;
1077 interrupts-extended = <&intc GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>,
1078 <&tlmm 64 IRQ_TYPE_EDGE_FALLING>;
1079
1080 pinctrl-names = "default", "sleep";
1081 pinctrl-1 = <&qup_uart1_sleep_cts>, <&qup_uart1_sleep_rts>, <&qup_uart1_sleep_tx>, <&qup_uart1_sleep_rx>;
1082
1083 status = "okay";
1084
1085 bluetooth {
1086 compatible = "qcom,wcn3988-bt";
1087
1088 vddio-supply = <&vreg_l11a>;
1089 vddxo-supply = <&vreg_l7a>;
1090 vddrf-supply = <&vreg_l2e>;
1091 vddch0-supply = <&vreg_l10e>;
1092 swctrl-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>;
1093
1094 max-speed = <3200000>;
1095 };
1096};
1097
1098&uart9 {
1099 status = "okay";
1100};
1101
1102&ufs_mem_hc {
1103 reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>;
1104
1105 vcc-supply = <&vreg_l7e>;
1106 vcc-max-microamp = <800000>;
1107 vccq2-supply = <&vreg_l12a>;
1108 vccq2-max-microamp = <800000>;
1109
1110 status = "okay";
1111};
1112
1113&ufs_mem_phy {
1114 vdda-phy-supply = <&vreg_l18a>;
1115 vdda-pll-supply = <&vreg_l22a>;
1116
1117 status = "okay";
1118};
1119
1120&usb_1 {
1121 status = "okay";
1122};
1123
1124&usb_1_dwc3 {
1125 maximum-speed = "super-speed";
Tom Rini6b642ac2024-10-01 12:20:28 -06001126 dr_mode = "otg";
1127};
1128
1129&usb_1_dwc3_hs_out {
1130 remote-endpoint = <&pm7250b_hs_in>;
Tom Rini53633a82024-02-29 12:33:36 -05001131};
1132
1133&usb_1_hsphy {
1134 vdd-supply = <&vreg_l18a>;
1135 vdda-pll-supply = <&vreg_l2a>;
1136 vdda-phy-dpdm-supply = <&vreg_l3a>;
1137
1138 status = "okay";
1139};
1140
1141&usb_1_qmpphy {
1142 vdda-phy-supply = <&vreg_l22a>;
1143 vdda-pll-supply = <&vreg_l16a>;
1144
1145 status = "okay";
1146};
1147
Tom Rini6b642ac2024-10-01 12:20:28 -06001148&usb_1_qmpphy_out {
1149 remote-endpoint = <&pm7250b_ss_in>;
1150};
1151
Tom Rini53633a82024-02-29 12:33:36 -05001152&wifi {
1153 vdd-0.8-cx-mx-supply = <&vreg_l4a>;
1154 vdd-1.8-xo-supply = <&vreg_l7a>;
1155 vdd-1.3-rfa-supply = <&vreg_l2e>;
1156 vdd-3.3-ch0-supply = <&vreg_l10e>;
1157 vdd-3.3-ch1-supply = <&vreg_l11e>;
1158
1159 status = "okay";
1160};