GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / arm64 / boot / dts / qcom / sm7225-fairphone-fp4.dts
1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3  * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
4  */
5
6 /dts-v1/;
7
8 #include <dt-bindings/gpio/gpio.h>
9 #include <dt-bindings/input/input.h>
10 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
11 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
12 #include "sm7225.dtsi"
13 #include "pm6150l.dtsi"
14 #include "pm6350.dtsi"
15 #include "pm7250b.dtsi"
16
17 / {
18         model = "Fairphone 4";
19         compatible = "fairphone,fp4", "qcom,sm7225";
20         chassis-type = "handset";
21
22         /* required for bootloader to select correct board */
23         qcom,msm-id = <434 0x10000>, <459 0x10000>;
24         qcom,board-id = <8 32>;
25
26         aliases {
27                 serial0 = &uart9;
28         };
29
30         chosen {
31                 #address-cells = <2>;
32                 #size-cells = <2>;
33                 ranges;
34
35                 stdout-path = "serial0:115200n8";
36
37                 framebuffer0: framebuffer@a000000 {
38                         compatible = "simple-framebuffer";
39                         reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
40                         width = <1080>;
41                         height = <2340>;
42                         stride = <(1080 * 4)>;
43                         format = "a8r8g8b8";
44                 };
45         };
46
47         gpio-keys {
48                 compatible = "gpio-keys";
49                 pinctrl-names = "default";
50                 pinctrl-0 = <&gpio_keys_pin>;
51
52                 key-volume-up {
53                         label = "volume_up";
54                         linux,code = <KEY_VOLUMEUP>;
55                         gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
56                 };
57         };
58
59         reserved-memory {
60                 /*
61                  * The rmtfs memory region in downstream is 'dynamically allocated'
62                  * but given the same address every time. Hard code it as this address is
63                  * where the modem firmware expects it to be.
64                  */
65                 memory@efe01000 {
66                         compatible = "qcom,rmtfs-mem";
67                         reg = <0 0xefe01000 0 0x600000>;
68                         no-map;
69
70                         qcom,client-id = <1>;
71                         qcom,vmid = <15>;
72                 };
73         };
74
75         thermal-zones {
76                 chg-skin-thermal {
77                         polling-delay-passive = <0>;
78                         polling-delay = <0>;
79                         thermal-sensors = <&pm7250b_adc_tm 0>;
80
81                         trips {
82                                 active-config0 {
83                                         temperature = <125000>;
84                                         hysteresis = <1000>;
85                                         type = "passive";
86                                 };
87                         };
88                 };
89
90                 conn-thermal {
91                         polling-delay-passive = <0>;
92                         polling-delay = <0>;
93                         thermal-sensors = <&pm7250b_adc_tm 1>;
94
95                         trips {
96                                 active-config0 {
97                                         temperature = <125000>;
98                                         hysteresis = <1000>;
99                                         type = "passive";
100                                 };
101                         };
102                 };
103         };
104 };
105
106 &adsp {
107         status = "okay";
108         firmware-name = "/*(DEBLOBBED)*/";
109 };
110
111 &apps_rsc {
112         pm6350-rpmh-regulators {
113                 compatible = "qcom,pm6350-rpmh-regulators";
114                 qcom,pmic-id = "a";
115
116                 vreg_s1a: smps1 {
117                         regulator-min-microvolt = <1000000>;
118                         regulator-max-microvolt = <1200000>;
119                 };
120
121                 vreg_s2a: smps2 {
122                         regulator-min-microvolt = <1503000>;
123                         regulator-max-microvolt = <2048000>;
124                 };
125
126                 vreg_l2a: ldo2 {
127                         regulator-min-microvolt = <1503000>;
128                         regulator-max-microvolt = <1980000>;
129                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
130                 };
131
132                 vreg_l3a: ldo3 {
133                         regulator-min-microvolt = <2700000>;
134                         regulator-max-microvolt = <3300000>;
135                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
136                 };
137
138                 vreg_l4a: ldo4 {
139                         regulator-min-microvolt = <352000>;
140                         regulator-max-microvolt = <801000>;
141                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
142                 };
143
144                 vreg_l5a: ldo5 {
145                         regulator-min-microvolt = <1503000>;
146                         regulator-max-microvolt = <1980000>;
147                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
148                 };
149
150                 vreg_l6a: ldo6 {
151                         regulator-min-microvolt = <1710000>;
152                         regulator-max-microvolt = <3544000>;
153                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
154                 };
155
156                 vreg_l7a: ldo7 {
157                         regulator-min-microvolt = <1620000>;
158                         regulator-max-microvolt = <1980000>;
159                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
160                 };
161
162                 vreg_l8a: ldo8 {
163                         regulator-min-microvolt = <2800000>;
164                         regulator-max-microvolt = <2800000>;
165                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
166                 };
167
168                 vreg_l9a: ldo9 {
169                         regulator-min-microvolt = <1650000>;
170                         regulator-max-microvolt = <3401000>;
171                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
172                 };
173
174                 vreg_l11a: ldo11 {
175                         regulator-min-microvolt = <1800000>;
176                         regulator-max-microvolt = <2000000>;
177                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
178                 };
179
180                 vreg_l12a: ldo12 {
181                         regulator-min-microvolt = <1620000>;
182                         regulator-max-microvolt = <1980000>;
183                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
184                 };
185
186                 vreg_l13a: ldo13 {
187                         regulator-min-microvolt = <570000>;
188                         regulator-max-microvolt = <650000>;
189                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
190                 };
191
192                 vreg_l14a: ldo14 {
193                         regulator-min-microvolt = <1700000>;
194                         regulator-max-microvolt = <1900000>;
195                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
196                 };
197
198                 vreg_l15a: ldo15 {
199                         regulator-min-microvolt = <1100000>;
200                         regulator-max-microvolt = <1305000>;
201                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
202                 };
203
204                 vreg_l16a: ldo16 {
205                         regulator-min-microvolt = <830000>;
206                         regulator-max-microvolt = <921000>;
207                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
208                 };
209
210                 vreg_l18a: ldo18 {
211                         regulator-min-microvolt = <788000>;
212                         regulator-max-microvolt = <1049000>;
213                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
214                 };
215
216                 vreg_l19a: ldo19 {
217                         regulator-min-microvolt = <1080000>;
218                         regulator-max-microvolt = <1305000>;
219                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
220                 };
221
222                 vreg_l20a: ldo20 {
223                         regulator-min-microvolt = <530000>;
224                         regulator-max-microvolt = <801000>;
225                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
226                 };
227
228                 vreg_l21a: ldo21 {
229                         regulator-min-microvolt = <751000>;
230                         regulator-max-microvolt = <825000>;
231                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
232                 };
233
234                 vreg_l22a: ldo22 {
235                         regulator-min-microvolt = <1080000>;
236                         regulator-max-microvolt = <1305000>;
237                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
238                 };
239         };
240
241         pm6150l-rpmh-regulators {
242                 compatible = "qcom,pm6150l-rpmh-regulators";
243                 qcom,pmic-id = "e";
244
245                 vreg_s8e: smps8 {
246                         regulator-min-microvolt = <313000>;
247                         regulator-max-microvolt = <1395000>;
248                 };
249
250                 vreg_l1e: ldo1 {
251                         regulator-min-microvolt = <1620000>;
252                         regulator-max-microvolt = <1980000>;
253                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
254                 };
255
256                 vreg_l2e: ldo2 {
257                         regulator-min-microvolt = <1170000>;
258                         regulator-max-microvolt = <1305000>;
259                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
260                 };
261
262                 vreg_l3e: ldo3 {
263                         regulator-min-microvolt = <1100000>;
264                         regulator-max-microvolt = <1299000>;
265                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
266                 };
267
268                 vreg_l4e: ldo4 {
269                         regulator-min-microvolt = <1620000>;
270                         regulator-max-microvolt = <3300000>;
271                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
272                 };
273
274                 vreg_l5e: ldo5 {
275                         regulator-min-microvolt = <1620000>;
276                         regulator-max-microvolt = <3300000>;
277                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
278                 };
279
280                 vreg_l6e: ldo6 {
281                         regulator-min-microvolt = <1700000>;
282                         regulator-max-microvolt = <3544000>;
283                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
284                 };
285
286                 vreg_l7e: ldo7 {
287                         regulator-min-microvolt = <2700000>;
288                         regulator-max-microvolt = <3544000>;
289                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
290                 };
291
292                 vreg_l8e: ldo8 {
293                         regulator-min-microvolt = <1620000>;
294                         regulator-max-microvolt = <2000000>;
295                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
296                 };
297
298                 vreg_l9e: ldo9 {
299                         regulator-min-microvolt = <2700000>;
300                         regulator-max-microvolt = <3544000>;
301                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
302                 };
303
304                 vreg_l10e: ldo10 {
305                         regulator-min-microvolt = <3000000>;
306                         regulator-max-microvolt = <3401000>;
307                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
308                 };
309
310                 vreg_l11e: ldo11 {
311                         regulator-min-microvolt = <3000000>;
312                         regulator-max-microvolt = <3401000>;
313                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
314                 };
315
316                 vreg_bob: bob {
317                         regulator-min-microvolt = <1620000>;
318                         regulator-max-microvolt = <5492000>;
319                         regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
320                         regulator-allow-bypass;
321                 };
322         };
323 };
324
325 &cdsp {
326         status = "okay";
327         firmware-name = "/*(DEBLOBBED)*/";
328 };
329
330 &i2c10 {
331         status = "okay";
332         clock-frequency = <400000>;
333
334         haptics@5a {
335                 compatible = "awinic,aw8695";
336                 reg = <0x5a>;
337                 interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
338                 reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
339
340                 awinic,f0-preset = <2350>;
341                 awinic,f0-coefficient = <260>;
342                 awinic,f0-calibration-percent = <7>;
343                 awinic,drive-level = <125>;
344
345                 awinic,f0-detection-play-time = <5>;
346                 awinic,f0-detection-wait-time = <3>;
347                 awinic,f0-detection-repeat = <2>;
348                 awinic,f0-detection-trace = <15>;
349
350                 awinic,boost-debug = /bits/ 8 <0x30 0xeb 0xd4>;
351                 awinic,tset = /bits/ 8 <0x12>;
352                 awinic,r-spare = /bits/ 8 <0x68>;
353
354                 awinic,bemf-upper-threshold = <4104>;
355                 awinic,bemf-lower-threshold = <1016>;
356         };
357 };
358
359 &mpss {
360         status = "okay";
361         firmware-name = "/*(DEBLOBBED)*/";
362 };
363
364 &pm6150l_wled {
365         status = "okay";
366
367         qcom,switching-freq = <800>;
368         qcom,current-limit-microamp = <20000>;
369         qcom,num-strings = <2>;
370 };
371
372 &pm6350_gpios {
373         gpio_keys_pin: gpio-keys-state {
374                 pins = "gpio2";
375                 function = PMIC_GPIO_FUNC_NORMAL;
376                 bias-pull-up;
377                 input-enable;
378                 power-source = <0>;
379         };
380 };
381
382 &pm6350_resin {
383         status = "okay";
384         linux,code = <KEY_VOLUMEDOWN>;
385 };
386
387 &pm7250b_adc {
388         adc-chan@4d {
389                 reg = <ADC5_AMUX_THM1_100K_PU>;
390                 qcom,ratiometric;
391                 qcom,hw-settle-time = <200>;
392                 qcom,pre-scaling = <1 1>;
393                 label = "charger_skin_therm";
394         };
395
396         adc-chan@4f {
397                 reg = <ADC5_AMUX_THM3_100K_PU>;
398                 qcom,ratiometric;
399                 qcom,hw-settle-time = <200>;
400                 qcom,pre-scaling = <1 1>;
401                 label = "conn_therm";
402         };
403 };
404
405 &pm7250b_adc_tm {
406         status = "okay";
407
408         charger-skin-therm@0 {
409                 reg = <0>;
410                 io-channels = <&pm7250b_adc ADC5_AMUX_THM1_100K_PU>;
411                 qcom,ratiometric;
412                 qcom,hw-settle-time-us = <200>;
413         };
414
415         conn-therm@1 {
416                 reg = <1>;
417                 io-channels = <&pm7250b_adc ADC5_AMUX_THM3_100K_PU>;
418                 qcom,ratiometric;
419                 qcom,hw-settle-time-us = <200>;
420         };
421 };
422
423 &qupv3_id_1 {
424         status = "okay";
425 };
426
427 &tlmm {
428         gpio-reserved-ranges = <13 4>, <56 2>;
429 };
430
431 &uart9 {
432         status = "okay";
433 };
434
435 &ufs_mem_hc {
436         status = "okay";
437
438         reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>;
439
440         vcc-supply = <&vreg_l7e>;
441         vcc-max-microamp = <800000>;
442         vccq2-supply = <&vreg_l12a>;
443         vccq2-max-microamp = <800000>;
444 };
445
446 &ufs_mem_phy {
447         status = "okay";
448
449         vdda-phy-supply = <&vreg_l18a>;
450         vdda-pll-supply = <&vreg_l22a>;
451 };
452
453 &usb_1 {
454         status = "okay";
455 };
456
457 &usb_1_dwc3 {
458         maximum-speed = "super-speed";
459         dr_mode = "peripheral";
460 };
461
462 &usb_1_hsphy {
463         status = "okay";
464
465         vdd-supply = <&vreg_l18a>;
466         vdda-pll-supply = <&vreg_l2a>;
467         vdda-phy-dpdm-supply = <&vreg_l3a>;
468 };
469
470 &usb_1_qmpphy {
471         status = "okay";
472
473         vdda-phy-supply = <&vreg_l22a>;
474         vdda-pll-supply = <&vreg_l16a>;
475 };
476
477 &wifi {
478         status = "okay";
479
480         vdd-0.8-cx-mx-supply = <&vreg_l4a>;
481         vdd-1.8-xo-supply = <&vreg_l7a>;
482         vdd-1.3-rfa-supply = <&vreg_l2e>;
483         vdd-3.3-ch0-supply = <&vreg_l10e>;
484         vdd-3.3-ch1-supply = <&vreg_l11e>;
485 };