Merge tag 'dt-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / qcom / sdm845-xiaomi-beryllium.dts
1 // SPDX-License-Identifier: GPL-2.0
2
3 /dts-v1/;
4
5 #include <dt-bindings/gpio/gpio.h>
6 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
7 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
8 #include <dt-bindings/sound/qcom,q6afe.h>
9 #include <dt-bindings/sound/qcom,q6asm.h>
10 #include "sdm845.dtsi"
11 #include "pm8998.dtsi"
12 #include "pmi8998.dtsi"
13
14 /*
15  * Delete following upstream (sdm845.dtsi) reserved
16  * memory mappings which are different in this device.
17  */
18 /delete-node/ &tz_mem;
19 /delete-node/ &adsp_mem;
20 /delete-node/ &wlan_msa_mem;
21 /delete-node/ &mpss_region;
22 /delete-node/ &venus_mem;
23 /delete-node/ &cdsp_mem;
24 /delete-node/ &mba_region;
25 /delete-node/ &slpi_mem;
26 /delete-node/ &spss_mem;
27 /delete-node/ &rmtfs_mem;
28
29 / {
30         model = "Xiaomi Pocophone F1";
31         compatible = "xiaomi,beryllium", "qcom,sdm845";
32
33         /* required for bootloader to select correct board */
34         qcom,board-id = <69 0>;
35         qcom,msm-id = <321 0x20001>;
36
37         aliases {
38                 hsuart0 = &uart6;
39         };
40
41         gpio-keys {
42                 compatible = "gpio-keys";
43                 autorepeat;
44
45                 pinctrl-names = "default";
46                 pinctrl-0 = <&vol_up_pin_a>;
47
48                 vol-up {
49                         label = "Volume Up";
50                         linux,code = <KEY_VOLUMEUP>;
51                         gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
52                 };
53         };
54
55         /* Reserved memory changes from downstream */
56         reserved-memory {
57                 tz_mem: memory@86200000 {
58                         reg = <0 0x86200000 0 0x4900000>;
59                         no-map;
60                 };
61
62                 adsp_mem: memory@8c500000 {
63                         reg = <0 0x8c500000 0 0x1e00000>;
64                         no-map;
65                 };
66
67                 wlan_msa_mem: memory@8e300000 {
68                         reg = <0 0x8e300000 0 0x100000>;
69                         no-map;
70                 };
71
72                 mpss_region: memory@8e400000 {
73                         reg = <0 0x8e400000 0 0x7800000>;
74                         no-map;
75                 };
76
77                 venus_mem: memory@95c00000 {
78                         reg = <0 0x95c00000 0 0x500000>;
79                         no-map;
80                 };
81
82                 cdsp_mem: memory@96100000 {
83                         reg = <0 0x96100000 0 0x800000>;
84                         no-map;
85                 };
86
87                 mba_region: memory@96900000 {
88                         reg = <0 0x96900000 0 0x200000>;
89                         no-map;
90                 };
91
92                 slpi_mem: memory@96b00000 {
93                         reg = <0 0x96b00000 0 0x1400000>;
94                         no-map;
95                 };
96
97                 spss_mem: memory@97f00000 {
98                         reg = <0 0x97f00000 0 0x100000>;
99                         no-map;
100                 };
101
102                 rmtfs_mem: memory@f6301000 {
103                         compatible = "qcom,rmtfs-mem";
104                         reg = <0 0xf6301000 0 0x200000>;
105                         no-map;
106
107                         qcom,client-id = <1>;
108                         qcom,vmid = <15>;
109                 };
110         };
111
112         vreg_s4a_1p8: vreg-s4a-1p8 {
113                 compatible = "regulator-fixed";
114                 regulator-name = "vreg_s4a_1p8";
115
116                 regulator-min-microvolt = <1800000>;
117                 regulator-max-microvolt = <1800000>;
118                 regulator-always-on;
119         };
120 };
121
122 &adsp_pas {
123         status = "okay";
124         firmware-name = "qcom/sdm845/adsp.mdt";
125 };
126
127 &apps_rsc {
128         pm8998-rpmh-regulators {
129                 compatible = "qcom,pm8998-rpmh-regulators";
130                 qcom,pmic-id = "a";
131
132                 vreg_l1a_0p875: ldo1 {
133                         regulator-min-microvolt = <880000>;
134                         regulator-max-microvolt = <880000>;
135                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
136                 };
137
138                 vreg_l5a_0p8: ldo5 {
139                         regulator-min-microvolt = <800000>;
140                         regulator-max-microvolt = <800000>;
141                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
142                 };
143
144                 vreg_l7a_1p8: ldo7 {
145                         regulator-min-microvolt = <1800000>;
146                         regulator-max-microvolt = <1800000>;
147                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
148                 };
149
150                 vreg_l12a_1p8: ldo12 {
151                         regulator-min-microvolt = <1800000>;
152                         regulator-max-microvolt = <1800000>;
153                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
154                 };
155
156                 vreg_l13a_2p95: ldo13 {
157                         regulator-min-microvolt = <1800000>;
158                         regulator-max-microvolt = <2960000>;
159                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
160                 };
161
162                 vreg_l14a_1p8: ldo14 {
163                         regulator-min-microvolt = <1800000>;
164                         regulator-max-microvolt = <1800000>;
165                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
166                         regulator-boot-on;
167                         regulator-always-on;
168                 };
169
170                 vreg_l17a_1p3: ldo17 {
171                         regulator-min-microvolt = <1304000>;
172                         regulator-max-microvolt = <1304000>;
173                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
174                 };
175
176                 vreg_l20a_2p95: ldo20 {
177                         regulator-min-microvolt = <2960000>;
178                         regulator-max-microvolt = <2968000>;
179                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
180                 };
181
182                 vreg_l21a_2p95: ldo21 {
183                         regulator-min-microvolt = <2960000>;
184                         regulator-max-microvolt = <2968000>;
185                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
186                 };
187
188                 vreg_l24a_3p075: ldo24 {
189                         regulator-min-microvolt = <3088000>;
190                         regulator-max-microvolt = <3088000>;
191                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
192                 };
193
194                 vreg_l25a_3p3: ldo25 {
195                         regulator-min-microvolt = <3300000>;
196                         regulator-max-microvolt = <3312000>;
197                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
198                 };
199
200                 vreg_l26a_1p2: ldo26 {
201                         regulator-min-microvolt = <1200000>;
202                         regulator-max-microvolt = <1200000>;
203                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
204                         regulator-boot-on;
205                 };
206         };
207 };
208
209 &cdsp_pas {
210         status = "okay";
211         firmware-name = "qcom/sdm845/cdsp.mdt";
212 };
213
214 &dsi0 {
215         status = "okay";
216         vdda-supply = <&vreg_l26a_1p2>;
217
218         #address-cells = <1>;
219         #size-cells = <0>;
220
221         panel@0 {
222                 compatible = "tianma,fhd-video";
223                 reg = <0>;
224                 vddi0-supply = <&vreg_l14a_1p8>;
225                 vddpos-supply = <&lab>;
226                 vddneg-supply = <&ibb>;
227
228                 #address-cells = <1>;
229                 #size-cells = <0>;
230
231                 reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
232
233                 port {
234                         tianma_nt36672a_in_0: endpoint {
235                                 remote-endpoint = <&dsi0_out>;
236                         };
237                 };
238         };
239 };
240
241 &dsi0_out {
242         remote-endpoint = <&tianma_nt36672a_in_0>;
243         data-lanes = <0 1 2 3>;
244 };
245
246 &dsi0_phy {
247         status = "okay";
248         vdds-supply = <&vreg_l1a_0p875>;
249 };
250
251 &gcc {
252         protected-clocks = <GCC_QSPI_CORE_CLK>,
253                            <GCC_QSPI_CORE_CLK_SRC>,
254                            <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
255                            <GCC_LPASS_Q6_AXI_CLK>,
256                            <GCC_LPASS_SWAY_CLK>;
257 };
258
259 &gpu {
260         zap-shader {
261                 memory-region = <&gpu_mem>;
262                 firmware-name = "qcom/sdm845/a630_zap.mbn";
263         };
264 };
265
266 &ibb {
267         regulator-min-microvolt = <4600000>;
268         regulator-max-microvolt = <6000000>;
269         regulator-over-current-protection;
270         regulator-pull-down;
271         regulator-soft-start;
272         qcom,discharge-resistor-kohms = <300>;
273 };
274
275 &lab {
276         regulator-min-microvolt = <4600000>;
277         regulator-max-microvolt = <6000000>;
278         regulator-over-current-protection;
279         regulator-pull-down;
280         regulator-soft-start;
281 };
282
283 &mdss {
284         status = "okay";
285 };
286
287 &mdss_mdp {
288         status = "okay";
289 };
290
291 &mss_pil {
292         status = "okay";
293         firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mdt";
294 };
295
296 &pm8998_gpio {
297         vol_up_pin_a: vol-up-active {
298                 pins = "gpio6";
299                 function = "normal";
300                 input-enable;
301                 bias-pull-up;
302                 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
303         };
304 };
305
306 &pm8998_pon {
307         resin {
308                 compatible = "qcom,pm8941-resin";
309                 interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
310                 debounce = <15625>;
311                 bias-pull-up;
312                 linux,code = <KEY_VOLUMEDOWN>;
313         };
314 };
315
316 /* QUAT I2S Uses 1 I2S SD Line for audio on TAS2559/60 amplifiers */
317 &q6afedai {
318         qi2s@22 {
319                 reg = <22>;
320                 qcom,sd-lines = <0>;
321         };
322 };
323
324 &q6asmdai {
325         dai@0 {
326                 reg = <0>;
327         };
328
329         dai@1 {
330                 reg = <1>;
331         };
332
333         dai@2 {
334                 reg = <2>;
335         };
336 };
337
338 &qupv3_id_0 {
339         status = "okay";
340 };
341
342 &sdhc_2 {
343         status = "okay";
344
345         pinctrl-names = "default";
346         pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
347
348         vmmc-supply = <&vreg_l21a_2p95>;
349         vqmmc-supply = <&vreg_l13a_2p95>;
350
351         bus-width = <4>;
352         cd-gpios = <&tlmm 126 GPIO_ACTIVE_HIGH>;
353 };
354
355 &sound {
356         compatible = "qcom,db845c-sndcard";
357         pinctrl-0 = <&quat_mi2s_active
358                         &quat_mi2s_sd0_active>;
359         pinctrl-names = "default";
360         model = "Xiaomi Poco F1";
361         audio-routing =
362                 "RX_BIAS", "MCLK",
363                 "AMIC1", "MIC BIAS1",
364                 "AMIC2", "MIC BIAS2",
365                 "AMIC3", "MIC BIAS3";
366
367         mm1-dai-link {
368                 link-name = "MultiMedia1";
369                 cpu {
370                         sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA1>;
371                 };
372         };
373
374         mm2-dai-link {
375                 link-name = "MultiMedia2";
376                 cpu {
377                         sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA2>;
378                 };
379         };
380
381         mm3-dai-link {
382                 link-name = "MultiMedia3";
383                 cpu {
384                         sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA3>;
385                 };
386         };
387
388         slim-dai-link {
389                 link-name = "SLIM Playback";
390                 cpu {
391                         sound-dai = <&q6afedai SLIMBUS_0_RX>;
392                 };
393
394                 platform {
395                         sound-dai = <&q6routing>;
396                 };
397
398                 codec {
399                         sound-dai =  <&wcd9340 0>;
400                 };
401         };
402
403         slimcap-dai-link {
404                 link-name = "SLIM Capture";
405                 cpu {
406                         sound-dai = <&q6afedai SLIMBUS_0_TX>;
407                 };
408
409                 platform {
410                         sound-dai = <&q6routing>;
411                 };
412
413                 codec {
414                         sound-dai = <&wcd9340 1>;
415                 };
416         };
417 };
418
419 &tlmm {
420         gpio-reserved-ranges = <0 4>, <81 4>;
421
422         sdc2_default_state: sdc2-default {
423                 clk {
424                         pins = "sdc2_clk";
425                         bias-disable;
426                         drive-strength = <16>;
427                 };
428
429                 cmd {
430                         pins = "sdc2_cmd";
431                         bias-pull-up;
432                         drive-strength = <10>;
433                 };
434
435                 data {
436                         pins = "sdc2_data";
437                         bias-pull-up;
438                         drive-strength = <10>;
439                 };
440         };
441
442         sdc2_card_det_n: sd-card-det-n {
443                 pins = "gpio126";
444                 function = "gpio";
445                 bias-pull-up;
446         };
447
448         wcd_intr_default: wcd_intr_default {
449                 pins = <54>;
450                 function = "gpio";
451
452                 input-enable;
453                 bias-pull-down;
454                 drive-strength = <2>;
455         };
456 };
457
458 &uart6 {
459         status = "okay";
460
461         bluetooth {
462                 compatible = "qcom,wcn3990-bt";
463
464                 vddio-supply = <&vreg_s4a_1p8>;
465                 vddxo-supply = <&vreg_l7a_1p8>;
466                 vddrf-supply = <&vreg_l17a_1p3>;
467                 vddch0-supply = <&vreg_l25a_3p3>;
468                 max-speed = <3200000>;
469         };
470 };
471
472 &ufs_mem_hc {
473         status = "okay";
474
475         reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
476
477         vcc-supply = <&vreg_l20a_2p95>;
478         vcc-max-microamp = <800000>;
479 };
480
481 &ufs_mem_phy {
482         status = "okay";
483
484         vdda-phy-supply = <&vreg_l1a_0p875>;
485         vdda-pll-supply = <&vreg_l26a_1p2>;
486 };
487
488 &usb_1 {
489         status = "okay";
490 };
491
492 &usb_1_dwc3 {
493         dr_mode = "peripheral";
494 };
495
496 &usb_1_hsphy {
497         status = "okay";
498
499         vdd-supply = <&vreg_l1a_0p875>;
500         vdda-pll-supply = <&vreg_l12a_1p8>;
501         vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
502
503         qcom,imp-res-offset-value = <8>;
504         qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
505         qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
506         qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
507 };
508
509 &usb_1_qmpphy {
510         status = "okay";
511
512         vdda-phy-supply = <&vreg_l26a_1p2>;
513         vdda-pll-supply = <&vreg_l1a_0p875>;
514 };
515
516 &wcd9340{
517         pinctrl-0 = <&wcd_intr_default>;
518         pinctrl-names = "default";
519         clock-names = "extclk";
520         clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
521         reset-gpios = <&tlmm 64 0>;
522         vdd-buck-supply = <&vreg_s4a_1p8>;
523         vdd-buck-sido-supply = <&vreg_s4a_1p8>;
524         vdd-tx-supply = <&vreg_s4a_1p8>;
525         vdd-rx-supply = <&vreg_s4a_1p8>;
526         vdd-io-supply = <&vreg_s4a_1p8>;
527         qcom,micbias1-microvolt = <2700000>;
528         qcom,micbias2-microvolt = <1800000>;
529         qcom,micbias3-microvolt = <2700000>;
530         qcom,micbias4-microvolt = <2700000>;
531 };
532
533 &wifi {
534         status = "okay";
535
536         vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
537         vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
538         vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
539         vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
540 };
541
542 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
543
544 &qup_uart6_default {
545         pinmux {
546                 pins = "gpio45", "gpio46", "gpio47", "gpio48";
547                 function = "qup6";
548         };
549
550         cts {
551                 pins = "gpio45";
552                 bias-disable;
553         };
554
555         rts-tx {
556                 pins = "gpio46", "gpio47";
557                 drive-strength = <2>;
558                 bias-disable;
559         };
560
561         rx {
562                 pins = "gpio48";
563                 bias-pull-up;
564         };
565 };