Merge tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg...
[linux-2.6-block.git] / arch / arm64 / boot / dts / qcom / sdm845-cheza.dtsi
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Google Cheza device tree source (common between revisions)
4  *
5  * Copyright 2018 Google LLC.
6  */
7
8 #include <dt-bindings/input/input.h>
9 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
10 #include "sdm845.dtsi"
11
12 /* PMICs depend on spmi_bus label and so must come after SoC */
13 #include "pm8005.dtsi"
14 #include "pm8998.dtsi"
15
16 / {
17         aliases {
18                 bluetooth0 = &bluetooth;
19                 serial1 = &uart6;
20                 serial0 = &uart9;
21                 wifi0 = &wifi;
22         };
23
24         chosen {
25                 stdout-path = "serial0:115200n8";
26         };
27
28         backlight: backlight {
29                 compatible = "pwm-backlight";
30                 pwms = <&cros_ec_pwm 0>;
31                 enable-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
32                 power-supply = <&ppvar_sys>;
33                 pinctrl-names = "default";
34                 pinctrl-0 = <&ap_edp_bklten>;
35         };
36
37         /* FIXED REGULATORS - parents above children */
38
39         /* This is the top level supply and variable voltage */
40         ppvar_sys: ppvar-sys-regulator {
41                 compatible = "regulator-fixed";
42                 regulator-name = "ppvar_sys";
43                 regulator-always-on;
44                 regulator-boot-on;
45         };
46
47         /* This divides ppvar_sys by 2, so voltage is variable */
48         src_vph_pwr: src-vph-pwr-regulator {
49                 compatible = "regulator-fixed";
50                 regulator-name = "src_vph_pwr";
51
52                 /* EC turns on with switchcap_on_l; always on for AP */
53                 regulator-always-on;
54                 regulator-boot-on;
55
56                 vin-supply = <&ppvar_sys>;
57         };
58
59         pp5000_a: pp5000-a-regulator {
60                 compatible = "regulator-fixed";
61                 regulator-name = "pp5000_a";
62
63                 /* EC turns on with en_pp5000_a; always on for AP */
64                 regulator-always-on;
65                 regulator-boot-on;
66                 regulator-min-microvolt = <5000000>;
67                 regulator-max-microvolt = <5000000>;
68
69                 vin-supply = <&ppvar_sys>;
70         };
71
72         src_vreg_bob: src-vreg-bob-regulator {
73                 compatible = "regulator-fixed";
74                 regulator-name = "src_vreg_bob";
75
76                 /* EC turns on with vbob_en; always on for AP */
77                 regulator-always-on;
78                 regulator-boot-on;
79                 regulator-min-microvolt = <3600000>;
80                 regulator-max-microvolt = <3600000>;
81
82                 vin-supply = <&ppvar_sys>;
83         };
84
85         pp3300_dx_edp: pp3300-dx-edp-regulator {
86                 compatible = "regulator-fixed";
87                 regulator-name = "pp3300_dx_edp";
88
89                 regulator-min-microvolt = <3300000>;
90                 regulator-max-microvolt = <3300000>;
91
92                 gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>;
93                 enable-active-high;
94                 pinctrl-names = "default";
95                 pinctrl-0 = <&en_pp3300_dx_edp>;
96         };
97
98         /*
99          * Apparently RPMh does not provide support for PM8998 S4 because it
100          * is always-on; model it as a fixed regulator.
101          */
102         src_pp1800_s4a: pm8998-smps4 {
103                 compatible = "regulator-fixed";
104                 regulator-name = "src_pp1800_s4a";
105
106                 regulator-min-microvolt = <1800000>;
107                 regulator-max-microvolt = <1800000>;
108
109                 regulator-always-on;
110                 regulator-boot-on;
111
112                 vin-supply = <&src_vph_pwr>;
113         };
114
115         /* BOARD-SPECIFIC TOP LEVEL NODES */
116
117         gpio-keys {
118                 compatible = "gpio-keys";
119                 pinctrl-names = "default";
120                 pinctrl-0 = <&pen_eject_odl>;
121
122                 switch-pen-insert {
123                         label = "Pen Insert";
124                         /* Insert = low, eject = high */
125                         gpios = <&tlmm 119 GPIO_ACTIVE_LOW>;
126                         linux,code = <SW_PEN_INSERTED>;
127                         linux,input-type = <EV_SW>;
128                         wakeup-source;
129                 };
130         };
131
132         panel: panel {
133                 compatible = "innolux,p120zdg-bf1";
134                 power-supply = <&pp3300_dx_edp>;
135                 backlight = <&backlight>;
136                 no-hpd;
137
138                 panel_in: port {
139                         panel_in_edp: endpoint {
140                                 remote-endpoint = <&sn65dsi86_out>;
141                         };
142                 };
143         };
144 };
145
146 &cpufreq_hw {
147         /delete-property/ interrupts-extended; /* reference to lmh_cluster[01] */
148 };
149
150 &psci {
151         /delete-node/ power-domain-cpu0;
152         /delete-node/ power-domain-cpu1;
153         /delete-node/ power-domain-cpu2;
154         /delete-node/ power-domain-cpu3;
155         /delete-node/ power-domain-cpu4;
156         /delete-node/ power-domain-cpu5;
157         /delete-node/ power-domain-cpu6;
158         /delete-node/ power-domain-cpu7;
159         /delete-node/ power-domain-cluster;
160 };
161
162 &cpus {
163         /delete-node/ domain-idle-states;
164 };
165
166 &cpu_idle_states {
167         LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
168                 compatible = "arm,idle-state";
169                 idle-state-name = "little-power-down";
170                 arm,psci-suspend-param = <0x40000003>;
171                 entry-latency-us = <350>;
172                 exit-latency-us = <461>;
173                 min-residency-us = <1890>;
174                 local-timer-stop;
175         };
176
177         LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 {
178                 compatible = "arm,idle-state";
179                 idle-state-name = "little-rail-power-down";
180                 arm,psci-suspend-param = <0x40000004>;
181                 entry-latency-us = <360>;
182                 exit-latency-us = <531>;
183                 min-residency-us = <3934>;
184                 local-timer-stop;
185         };
186
187         BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
188                 compatible = "arm,idle-state";
189                 idle-state-name = "big-power-down";
190                 arm,psci-suspend-param = <0x40000003>;
191                 entry-latency-us = <264>;
192                 exit-latency-us = <621>;
193                 min-residency-us = <952>;
194                 local-timer-stop;
195         };
196
197         BIG_CPU_SLEEP_1: cpu-sleep-1-1 {
198                 compatible = "arm,idle-state";
199                 idle-state-name = "big-rail-power-down";
200                 arm,psci-suspend-param = <0x40000004>;
201                 entry-latency-us = <702>;
202                 exit-latency-us = <1061>;
203                 min-residency-us = <4488>;
204                 local-timer-stop;
205         };
206
207         CLUSTER_SLEEP_0: cluster-sleep-0 {
208                 compatible = "arm,idle-state";
209                 idle-state-name = "cluster-power-down";
210                 arm,psci-suspend-param = <0x400000F4>;
211                 entry-latency-us = <3263>;
212                 exit-latency-us = <6562>;
213                 min-residency-us = <9987>;
214                 local-timer-stop;
215         };
216 };
217
218 &CPU0 {
219         /delete-property/ power-domains;
220         /delete-property/ power-domain-names;
221         cpu-idle-states = <&LITTLE_CPU_SLEEP_0
222                            &LITTLE_CPU_SLEEP_1
223                            &CLUSTER_SLEEP_0>;
224 };
225
226 &CPU1 {
227         /delete-property/ power-domains;
228         /delete-property/ power-domain-names;
229         cpu-idle-states = <&LITTLE_CPU_SLEEP_0
230                            &LITTLE_CPU_SLEEP_1
231                            &CLUSTER_SLEEP_0>;
232 };
233
234 &CPU2 {
235         /delete-property/ power-domains;
236         /delete-property/ power-domain-names;
237         cpu-idle-states = <&LITTLE_CPU_SLEEP_0
238                            &LITTLE_CPU_SLEEP_1
239                            &CLUSTER_SLEEP_0>;
240 };
241
242 &CPU3 {
243         /delete-property/ power-domains;
244         /delete-property/ power-domain-names;
245         cpu-idle-states = <&LITTLE_CPU_SLEEP_0
246                            &LITTLE_CPU_SLEEP_1
247                            &CLUSTER_SLEEP_0>;
248 };
249
250 &CPU4 {
251         /delete-property/ power-domains;
252         /delete-property/ power-domain-names;
253         cpu-idle-states = <&BIG_CPU_SLEEP_0
254                            &BIG_CPU_SLEEP_1
255                            &CLUSTER_SLEEP_0>;
256 };
257
258 &CPU5 {
259         /delete-property/ power-domains;
260         /delete-property/ power-domain-names;
261         cpu-idle-states = <&BIG_CPU_SLEEP_0
262                            &BIG_CPU_SLEEP_1
263                            &CLUSTER_SLEEP_0>;
264 };
265
266 &CPU6 {
267         /delete-property/ power-domains;
268         /delete-property/ power-domain-names;
269         cpu-idle-states = <&BIG_CPU_SLEEP_0
270                            &BIG_CPU_SLEEP_1
271                            &CLUSTER_SLEEP_0>;
272 };
273
274 &CPU7 {
275         /delete-property/ power-domains;
276         /delete-property/ power-domain-names;
277         cpu-idle-states = <&BIG_CPU_SLEEP_0
278                            &BIG_CPU_SLEEP_1
279                            &CLUSTER_SLEEP_0>;
280 };
281
282 &lmh_cluster0 {
283         status = "disabled";
284 };
285
286 &lmh_cluster1 {
287         status = "disabled";
288 };
289
290 /*
291  * Reserved memory changes
292  *
293  * Putting this all together (out of order with the rest of the file) to keep
294  * all modifications to the memory map (from sdm845.dtsi) in one place.
295  */
296
297 /*
298  * Our mpss_region is 8MB bigger than the default one and that conflicts
299  * with venus_mem and cdsp_mem.
300  *
301  * For venus_mem we'll delete and re-create at a different address.
302  *
303  * cdsp_mem isn't used on cheza right now so we won't bother re-creating it; but
304  * that also means we need to delete cdsp_pas.
305  */
306 /delete-node/ &venus_mem;
307 /delete-node/ &cdsp_mem;
308 /delete-node/ &cdsp_pas;
309 /delete-node/ &gpu_mem;
310
311 /* Increase the size from 120 MB to 128 MB */
312 &mpss_region {
313         reg = <0 0x8e000000 0 0x8000000>;
314 };
315
316 /* Increase the size from 2MB to 8MB */
317 &rmtfs_mem {
318         reg = <0 0x88f00000 0 0x800000>;
319 };
320
321 / {
322         reserved-memory {
323                 venus_mem: memory@96000000 {
324                         reg = <0 0x96000000 0 0x500000>;
325                         no-map;
326                 };
327         };
328 };
329
330 &qspi {
331         status = "okay";
332         pinctrl-names = "default", "sleep";
333         pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
334         pinctrl-1 = <&qspi_sleep>;
335
336         flash@0 {
337                 compatible = "jedec,spi-nor";
338                 reg = <0>;
339
340                 /*
341                  * In theory chip supports up to 104 MHz and controller up
342                  * to 80 MHz, but above 25 MHz wasn't reliable so we'll use
343                  * that for now.  b:117440651
344                  */
345                 spi-max-frequency = <25000000>;
346                 spi-tx-bus-width = <2>;
347                 spi-rx-bus-width = <2>;
348         };
349 };
350
351
352 &apps_rsc {
353         /delete-property/ power-domains;
354
355         regulators-0 {
356                 compatible = "qcom,pm8998-rpmh-regulators";
357                 qcom,pmic-id = "a";
358
359                 vdd-s1-supply = <&src_vph_pwr>;
360                 vdd-s2-supply = <&src_vph_pwr>;
361                 vdd-s3-supply = <&src_vph_pwr>;
362                 vdd-s4-supply = <&src_vph_pwr>;
363                 vdd-s5-supply = <&src_vph_pwr>;
364                 vdd-s6-supply = <&src_vph_pwr>;
365                 vdd-s7-supply = <&src_vph_pwr>;
366                 vdd-s8-supply = <&src_vph_pwr>;
367                 vdd-s9-supply = <&src_vph_pwr>;
368                 vdd-s10-supply = <&src_vph_pwr>;
369                 vdd-s11-supply = <&src_vph_pwr>;
370                 vdd-s12-supply = <&src_vph_pwr>;
371                 vdd-s13-supply = <&src_vph_pwr>;
372                 vdd-l1-l27-supply = <&src_pp1025_s7a>;
373                 vdd-l2-l8-l17-supply = <&src_pp1350_s3a>;
374                 vdd-l3-l11-supply = <&src_pp1025_s7a>;
375                 vdd-l4-l5-supply = <&src_pp1025_s7a>;
376                 vdd-l6-supply = <&src_vph_pwr>;
377                 vdd-l7-l12-l14-l15-supply = <&src_pp2040_s5a>;
378                 vdd-l9-supply = <&src_pp2040_s5a>;
379                 vdd-l10-l23-l25-supply = <&src_vreg_bob>;
380                 vdd-l13-l19-l21-supply = <&src_vreg_bob>;
381                 vdd-l16-l28-supply = <&src_vreg_bob>;
382                 vdd-l18-l22-supply = <&src_vreg_bob>;
383                 vdd-l20-l24-supply = <&src_vreg_bob>;
384                 vdd-l26-supply = <&src_pp1350_s3a>;
385                 vin-lvs-1-2-supply = <&src_pp1800_s4a>;
386
387                 src_pp1125_s2a: smps2 {
388                         regulator-min-microvolt = <1100000>;
389                         regulator-max-microvolt = <1100000>;
390                 };
391
392                 src_pp1350_s3a: smps3 {
393                         regulator-min-microvolt = <1352000>;
394                         regulator-max-microvolt = <1352000>;
395                 };
396
397                 src_pp2040_s5a: smps5 {
398                         regulator-min-microvolt = <1904000>;
399                         regulator-max-microvolt = <2040000>;
400                 };
401
402                 src_pp1025_s7a: smps7 {
403                         regulator-min-microvolt = <900000>;
404                         regulator-max-microvolt = <1028000>;
405                 };
406
407                 vdd_qusb_hs0:
408                 vdda_hp_pcie_core:
409                 vdda_mipi_csi0_0p9:
410                 vdda_mipi_csi1_0p9:
411                 vdda_mipi_csi2_0p9:
412                 vdda_mipi_dsi0_pll:
413                 vdda_mipi_dsi1_pll:
414                 vdda_qlink_lv:
415                 vdda_qlink_lv_ck:
416                 vdda_qrefs_0p875:
417                 vdda_pcie_core:
418                 vdda_pll_cc_ebi01:
419                 vdda_pll_cc_ebi23:
420                 vdda_sp_sensor:
421                 vdda_ufs1_core:
422                 vdda_ufs2_core:
423                 vdda_usb1_ss_core:
424                 vdda_usb2_ss_core:
425                 src_pp875_l1a: ldo1 {
426                         regulator-min-microvolt = <880000>;
427                         regulator-max-microvolt = <880000>;
428                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
429                 };
430
431                 vddpx_10:
432                 src_pp1200_l2a: ldo2 {
433                         regulator-min-microvolt = <1200000>;
434                         regulator-max-microvolt = <1200000>;
435                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
436
437                         /* TODO: why??? */
438                         regulator-always-on;
439                 };
440
441                 pp1000_l3a_sdr845: ldo3 {
442                         regulator-min-microvolt = <1000000>;
443                         regulator-max-microvolt = <1000000>;
444                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
445                 };
446
447                 vdd_wcss_cx:
448                 vdd_wcss_mx:
449                 vdda_wcss_pll:
450                 src_pp800_l5a: ldo5 {
451                         regulator-min-microvolt = <800000>;
452                         regulator-max-microvolt = <800000>;
453                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
454                 };
455
456                 vddpx_13:
457                 src_pp1800_l6a: ldo6 {
458                         regulator-min-microvolt = <1856000>;
459                         regulator-max-microvolt = <1856000>;
460                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
461                 };
462
463                 pp1800_l7a_wcn3990: ldo7 {
464                         regulator-min-microvolt = <1800000>;
465                         regulator-max-microvolt = <1800000>;
466                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
467                 };
468
469                 src_pp1200_l8a: ldo8 {
470                         regulator-min-microvolt = <1200000>;
471                         regulator-max-microvolt = <1248000>;
472                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
473                 };
474
475                 pp1800_dx_pen:
476                 src_pp1800_l9a: ldo9 {
477                         regulator-min-microvolt = <1800000>;
478                         regulator-max-microvolt = <1800000>;
479                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
480                 };
481
482                 src_pp1800_l10a: ldo10 {
483                         regulator-min-microvolt = <1800000>;
484                         regulator-max-microvolt = <1800000>;
485                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
486                 };
487
488                 pp1000_l11a_sdr845: ldo11 {
489                         regulator-min-microvolt = <1000000>;
490                         regulator-max-microvolt = <1048000>;
491                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
492                 };
493
494                 vdd_qfprom:
495                 vdd_qfprom_sp:
496                 vdda_apc1_cs_1p8:
497                 vdda_gfx_cs_1p8:
498                 vdda_qrefs_1p8:
499                 vdda_qusb_hs0_1p8:
500                 vddpx_11:
501                 src_pp1800_l12a: ldo12 {
502                         regulator-min-microvolt = <1800000>;
503                         regulator-max-microvolt = <1800000>;
504                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
505                 };
506
507                 vddpx_2:
508                 src_pp2950_l13a: ldo13 {
509                         regulator-min-microvolt = <1800000>;
510                         regulator-max-microvolt = <2960000>;
511                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
512                 };
513
514                 src_pp1800_l14a: ldo14 {
515                         regulator-min-microvolt = <1800000>;
516                         regulator-max-microvolt = <1800000>;
517                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
518                 };
519
520                 src_pp1800_l15a: ldo15 {
521                         regulator-min-microvolt = <1800000>;
522                         regulator-max-microvolt = <1800000>;
523                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
524                 };
525
526                 pp2700_l16a: ldo16 {
527                         regulator-min-microvolt = <2704000>;
528                         regulator-max-microvolt = <2704000>;
529                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
530                 };
531
532                 src_pp1300_l17a: ldo17 {
533                         regulator-min-microvolt = <1304000>;
534                         regulator-max-microvolt = <1304000>;
535                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
536                 };
537
538                 pp2700_l18a: ldo18 {
539                         regulator-min-microvolt = <2704000>;
540                         regulator-max-microvolt = <2960000>;
541                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
542                 };
543
544                 /*
545                  * NOTE: this rail should have been called
546                  * src_pp3300_l19a in the schematic
547                  */
548                 src_pp3000_l19a: ldo19 {
549                         regulator-min-microvolt = <3304000>;
550                         regulator-max-microvolt = <3304000>;
551
552                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
553                 };
554
555                 src_pp2950_l20a: ldo20 {
556                         regulator-min-microvolt = <2704000>;
557                         regulator-max-microvolt = <2960000>;
558                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
559                 };
560
561                 src_pp2950_l21a: ldo21 {
562                         regulator-min-microvolt = <2704000>;
563                         regulator-max-microvolt = <2960000>;
564                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
565                 };
566
567                 pp3300_hub:
568                 src_pp3300_l22a: ldo22 {
569                         regulator-min-microvolt = <3304000>;
570                         regulator-max-microvolt = <3304000>;
571                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
572                         /*
573                          * HACK: Should add a usb hub node and driver
574                          * to turn this on and off at suspend/resume time
575                          */
576                         regulator-boot-on;
577                         regulator-always-on;
578                 };
579
580                 pp3300_l23a_ch1_wcn3990: ldo23 {
581                         regulator-min-microvolt = <3000000>;
582                         regulator-max-microvolt = <3312000>;
583                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
584                 };
585
586                 vdda_qusb_hs0_3p1:
587                 src_pp3075_l24a: ldo24 {
588                         regulator-min-microvolt = <3088000>;
589                         regulator-max-microvolt = <3088000>;
590                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
591                 };
592
593                 pp3300_l25a_ch0_wcn3990: ldo25 {
594                         regulator-min-microvolt = <3304000>;
595                         regulator-max-microvolt = <3304000>;
596                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
597                 };
598
599                 pp1200_hub:
600                 vdda_hp_pcie_1p2:
601                 vdda_hv_ebi0:
602                 vdda_hv_ebi1:
603                 vdda_hv_ebi2:
604                 vdda_hv_ebi3:
605                 vdda_mipi_csi_1p25:
606                 vdda_mipi_dsi0_1p2:
607                 vdda_mipi_dsi1_1p2:
608                 vdda_pcie_1p2:
609                 vdda_ufs1_1p2:
610                 vdda_ufs2_1p2:
611                 vdda_usb1_ss_1p2:
612                 vdda_usb2_ss_1p2:
613                 src_pp1200_l26a: ldo26 {
614                         regulator-min-microvolt = <1200000>;
615                         regulator-max-microvolt = <1200000>;
616                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
617                 };
618
619                 pp3300_dx_pen:
620                 src_pp3300_l28a: ldo28 {
621                         regulator-min-microvolt = <3304000>;
622                         regulator-max-microvolt = <3304000>;
623                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
624                 };
625
626                 src_pp1800_lvs1: lvs1 {
627                         regulator-min-microvolt = <1800000>;
628                         regulator-max-microvolt = <1800000>;
629                 };
630
631                 src_pp1800_lvs2: lvs2 {
632                         regulator-min-microvolt = <1800000>;
633                         regulator-max-microvolt = <1800000>;
634                 };
635         };
636
637         regulators-1 {
638                 compatible = "qcom,pm8005-rpmh-regulators";
639                 qcom,pmic-id = "c";
640
641                 vdd-s1-supply = <&src_vph_pwr>;
642                 vdd-s2-supply = <&src_vph_pwr>;
643                 vdd-s3-supply = <&src_vph_pwr>;
644                 vdd-s4-supply = <&src_vph_pwr>;
645
646                 src_pp600_s3c: smps3 {
647                         regulator-min-microvolt = <600000>;
648                         regulator-max-microvolt = <600000>;
649                 };
650         };
651 };
652
653 edp_brij_i2c: &i2c3 {
654         status = "okay";
655         clock-frequency = <400000>;
656
657         sn65dsi86_bridge: bridge@2d {
658                 compatible = "ti,sn65dsi86";
659                 reg = <0x2d>;
660                 pinctrl-names = "default";
661                 pinctrl-0 = <&edp_brij_en &edp_brij_irq>;
662
663                 interrupt-parent = <&tlmm>;
664                 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
665
666                 enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>;
667
668                 vpll-supply = <&src_pp1800_s4a>;
669                 vccio-supply = <&src_pp1800_s4a>;
670                 vcca-supply = <&src_pp1200_l2a>;
671                 vcc-supply = <&src_pp1200_l2a>;
672
673                 clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
674                 clock-names = "refclk";
675
676                 no-hpd;
677
678                 ports {
679                         #address-cells = <1>;
680                         #size-cells = <0>;
681
682                         port@0 {
683                                 reg = <0>;
684                                 sn65dsi86_in: endpoint {
685                                         remote-endpoint = <&mdss_dsi0_out>;
686                                 };
687                         };
688
689                         port@1 {
690                                 reg = <1>;
691                                 sn65dsi86_out: endpoint {
692                                         remote-endpoint = <&panel_in_edp>;
693                                 };
694                         };
695                 };
696         };
697 };
698
699 ap_pen_1v8: &i2c11 {
700         status = "okay";
701         clock-frequency = <400000>;
702
703         digitizer@9 {
704                 compatible = "wacom,w9013", "hid-over-i2c";
705                 reg = <0x9>;
706                 pinctrl-names = "default";
707                 pinctrl-0 = <&pen_irq_l>, <&pen_pdct_l>, <&pen_rst_l>;
708
709                 vdd-supply = <&pp3300_dx_pen>;
710                 vddl-supply = <&pp1800_dx_pen>;
711                 post-power-on-delay-ms = <100>;
712
713                 interrupt-parent = <&tlmm>;
714                 interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
715
716                 hid-descr-addr = <0x1>;
717         };
718 };
719
720 amp_i2c: &i2c12 {
721         status = "okay";
722         clock-frequency = <400000>;
723 };
724
725 ap_ts_i2c: &i2c14 {
726         status = "okay";
727         clock-frequency = <400000>;
728
729         touchscreen@10 {
730                 compatible = "elan,ekth3500";
731                 reg = <0x10>;
732                 pinctrl-names = "default";
733                 pinctrl-0 = <&ts_int_l &ts_reset_l>;
734
735                 interrupt-parent = <&tlmm>;
736                 interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
737
738                 vcc33-supply = <&src_pp3300_l28a>;
739
740                 reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
741         };
742 };
743
744 &gmu {
745         status = "okay";
746 };
747
748 &gpu {
749         status = "okay";
750 };
751
752 &ipa {
753         qcom,gsi-loader = "modem";
754         status = "okay";
755 };
756
757 &lpasscc {
758         status = "okay";
759 };
760
761 &mdss {
762         status = "okay";
763 };
764
765 &mdss_dsi0 {
766         status = "okay";
767         vdda-supply = <&vdda_mipi_dsi0_1p2>;
768
769         ports {
770                 port@1 {
771                         endpoint {
772                                 remote-endpoint = <&sn65dsi86_in>;
773                                 data-lanes = <0 1 2 3>;
774                         };
775                 };
776         };
777 };
778
779 &mdss_dsi0_phy {
780         status = "okay";
781         vdds-supply = <&vdda_mipi_dsi0_pll>;
782 };
783
784 /*
785  * Cheza fw does not properly program the GPU aperture to allow the
786  * GPU to update the SMMU pagetables for context switches.  Work
787  * around this by dropping the "qcom,adreno-smmu" compat string.
788  */
789 &adreno_smmu {
790         compatible = "qcom,sdm845-smmu-v2", "qcom,smmu-v2";
791 };
792
793 &mss_pil {
794         status = "okay";
795
796         iommus = <&apps_smmu 0x781 0x0>,
797                  <&apps_smmu 0x724 0x3>;
798 };
799
800 &pm8998_pwrkey {
801         status = "disabled";
802 };
803
804 &qupv3_id_0 {
805         status = "okay";
806         iommus = <&apps_smmu 0x0 0x3>;
807 };
808
809 &qupv3_id_1 {
810         status = "okay";
811         iommus = <&apps_smmu 0x6c0 0x3>;
812 };
813
814 &sdhc_2 {
815         status = "okay";
816
817         pinctrl-names = "default";
818         pinctrl-0 = <&sdc2_clk &sdc2_cmd &sdc2_data &sd_cd_odl>;
819
820         vmmc-supply = <&src_pp2950_l21a>;
821         vqmmc-supply = <&vddpx_2>;
822
823         cd-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>;
824 };
825
826 &spi0 {
827         status = "okay";
828 };
829
830 &spi5 {
831         status = "okay";
832
833         tpm@0 {
834                 compatible = "google,cr50";
835                 reg = <0>;
836                 pinctrl-names = "default";
837                 pinctrl-0 = <&h1_ap_int_odl>;
838                 spi-max-frequency = <800000>;
839                 interrupt-parent = <&tlmm>;
840                 interrupts = <129 IRQ_TYPE_EDGE_RISING>;
841         };
842 };
843
844 &spi10 {
845         status = "okay";
846
847         cros_ec: ec@0 {
848                 compatible = "google,cros-ec-spi";
849                 reg = <0>;
850                 interrupt-parent = <&tlmm>;
851                 interrupts = <122 IRQ_TYPE_LEVEL_LOW>;
852                 pinctrl-names = "default";
853                 pinctrl-0 = <&ec_ap_int_l>;
854                 spi-max-frequency = <3000000>;
855                 wakeup-source;
856
857                 cros_ec_pwm: pwm {
858                         compatible = "google,cros-ec-pwm";
859                         #pwm-cells = <1>;
860                 };
861
862                 i2c_tunnel: i2c-tunnel {
863                         compatible = "google,cros-ec-i2c-tunnel";
864                         google,remote-bus = <0>;
865                         #address-cells = <1>;
866                         #size-cells = <0>;
867                 };
868         };
869 };
870
871 #include <arm/cros-ec-keyboard.dtsi>
872 #include <arm/cros-ec-sbs.dtsi>
873
874 &uart6 {
875         status = "okay";
876
877         pinctrl-0 = <&qup_uart6_4pin>;
878
879         bluetooth: bluetooth {
880                 compatible = "qcom,wcn3990-bt";
881                 vddio-supply = <&src_pp1800_s4a>;
882                 vddxo-supply = <&pp1800_l7a_wcn3990>;
883                 vddrf-supply = <&src_pp1300_l17a>;
884                 vddch0-supply = <&pp3300_l25a_ch0_wcn3990>;
885                 max-speed = <3200000>;
886         };
887 };
888
889 &uart9 {
890         status = "okay";
891 };
892
893 &ufs_mem_hc {
894         status = "okay";
895
896         reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
897
898         vcc-supply = <&src_pp2950_l20a>;
899         vcc-max-microamp = <600000>;
900 };
901
902 &ufs_mem_phy {
903         status = "okay";
904
905         vdda-phy-supply = <&vdda_ufs1_core>;
906         vdda-pll-supply = <&vdda_ufs1_1p2>;
907 };
908
909 &usb_1 {
910         status = "okay";
911
912         /* We'll use this as USB 2.0 only */
913         qcom,select-utmi-as-pipe-clk;
914 };
915
916 &usb_1_dwc3 {
917         /*
918          * The hardware design intends this port to be hooked up in peripheral
919          * mode, so we'll hardcode it here.  Some details:
920          * - SDM845 expects only a single Type C connector so it has only one
921          *   native Type C port but cheza has two Type C connectors.
922          * - The only source of DP is the single native Type C port.
923          * - On cheza we want to be able to hook DP up to _either_ of the
924          *   two Type C connectors and want to be able to achieve 4 lanes of DP.
925          * - When you configure a Type C port for 4 lanes of DP you lose USB3.
926          * - In order to make everything work, the native Type C port is always
927          *   configured as 4-lanes DP so it's always available.
928          * - The extra USB3 port on SDM845 goes to a USB 3 hub which is then
929          *   sent to the two Type C connectors.
930          * - The extra USB2 lines from the native Type C port are always
931          *   setup as "peripheral" so that we can mux them over to one connector
932          *   or the other if someone needs the connector configured as a gadget
933          *   (but they only get USB2 speeds).
934          *
935          * All the hardware muxes would allow us to hook things up in different
936          * ways to some potential benefit for static configurations (you could
937          * achieve extra USB2 bandwidth by using two different ports for the
938          * two connectors or possibly even get USB3 peripheral mode), but in
939          * each case you end up forcing to disconnect/reconnect an in-use
940          * USB session in some cases depending on what you hotplug into the
941          * other connector.  Thus hardcoding this as peripheral makes sense.
942          */
943         dr_mode = "peripheral";
944
945         /*
946          * We always need the high speed pins as 4-lanes DP in case someone
947          * hotplugs a DP peripheral.  Thus limit this port to a max of high
948          * speed.
949          */
950         maximum-speed = "high-speed";
951
952         /*
953          * We don't need the usb3-phy since we run in highspeed mode always, so
954          * re-define these properties removing the superspeed USB PHY reference.
955          */
956         phys = <&usb_1_hsphy>;
957         phy-names = "usb2-phy";
958 };
959
960 &usb_1_hsphy {
961         status = "okay";
962
963         vdd-supply = <&vdda_usb1_ss_core>;
964         vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
965         vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
966
967         qcom,imp-res-offset-value = <8>;
968         qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
969         qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
970         qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
971 };
972
973 &usb_2 {
974         status = "okay";
975 };
976
977 &usb_2_dwc3 {
978         /* We have this hooked up to a hub and we always use in host mode */
979         dr_mode = "host";
980 };
981
982 &usb_2_hsphy {
983         status = "okay";
984
985         vdd-supply = <&vdda_usb2_ss_core>;
986         vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
987         vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
988
989         qcom,imp-res-offset-value = <8>;
990         qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>;
991 };
992
993 &usb_2_qmpphy {
994         status = "okay";
995
996         vdda-phy-supply = <&vdda_usb2_ss_1p2>;
997         vdda-pll-supply = <&vdda_usb2_ss_core>;
998 };
999
1000 &wifi {
1001         status = "okay";
1002
1003         vdd-0.8-cx-mx-supply = <&src_pp800_l5a >;
1004         vdd-1.8-xo-supply = <&pp1800_l7a_wcn3990>;
1005         vdd-1.3-rfa-supply = <&src_pp1300_l17a>;
1006         vdd-3.3-ch0-supply = <&pp3300_l25a_ch0_wcn3990>;
1007 };
1008
1009 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
1010
1011 &qspi_cs0 {
1012         bias-disable;           /* External pullup */
1013 };
1014
1015 &qspi_clk {
1016         bias-disable;           /* Rely on Cr50 internal pulldown */
1017 };
1018
1019 &qspi_data0 {
1020         bias-disable;           /* Rely on Cr50 internal pulldown */
1021 };
1022
1023 &qspi_data1 {
1024         bias-pull-down;
1025 };
1026
1027 &qup_i2c3_default {
1028         drive-strength = <2>;
1029
1030         /* Has external pullup */
1031         bias-disable;
1032 };
1033
1034 &qup_i2c11_default {
1035         drive-strength = <2>;
1036
1037         /* Has external pullup */
1038         bias-disable;
1039 };
1040
1041 &qup_i2c12_default {
1042         drive-strength = <2>;
1043
1044         /* Has external pullup */
1045         bias-disable;
1046 };
1047
1048 &qup_i2c14_default {
1049         drive-strength = <2>;
1050
1051         /* Has external pullup */
1052         bias-disable;
1053 };
1054
1055 &qup_spi0_default {
1056         drive-strength = <2>;
1057         bias-disable;
1058 };
1059
1060 &qup_spi5_default {
1061         drive-strength = <2>;
1062         bias-disable;
1063 };
1064
1065 &qup_spi10_default {
1066         drive-strength = <2>;
1067         bias-disable;
1068 };
1069
1070 &qup_uart9_rx {
1071         drive-strength = <2>;
1072         bias-pull-up;
1073 };
1074
1075 &qup_uart9_tx {
1076         drive-strength = <2>;
1077         bias-disable;
1078 };
1079
1080 /* PINCTRL - board-specific pinctrl */
1081 &pm8005_gpios {
1082         gpio-line-names = "",
1083                           "",
1084                           "SLB",
1085                           "";
1086 };
1087
1088 &pm8998_adc {
1089         channel@4d {
1090                 reg = <ADC5_AMUX_THM1_100K_PU>;
1091                 label = "sdm_temp";
1092         };
1093
1094         channel@4e {
1095                 reg = <ADC5_AMUX_THM2_100K_PU>;
1096                 label = "quiet_temp";
1097         };
1098
1099         channel@4f {
1100                 reg = <ADC5_AMUX_THM3_100K_PU>;
1101                 label = "lte_temp_1";
1102         };
1103
1104         channel@50 {
1105                 reg = <ADC5_AMUX_THM4_100K_PU>;
1106                 label = "lte_temp_2";
1107         };
1108
1109         channel@51 {
1110                 reg = <ADC5_AMUX_THM5_100K_PU>;
1111                 label = "charger_temp";
1112         };
1113 };
1114
1115 &pm8998_gpios {
1116         gpio-line-names = "",
1117                           "",
1118                           "SW_CTRL",
1119                           "",
1120                           "",
1121                           "",
1122                           "",
1123                           "",
1124                           "",
1125                           "",
1126                           "",
1127                           "",
1128                           "",
1129                           "",
1130                           "",
1131                           "",
1132                           "",
1133                           "",
1134                           "",
1135                           "",
1136                           "",
1137                           "CFG_OPT1",
1138                           "WCSS_PWR_REQ",
1139                           "",
1140                           "CFG_OPT2",
1141                           "SLB";
1142 };
1143
1144 &tlmm {
1145         /*
1146          * pinctrl settings for pins that have no real owners.
1147          */
1148         pinctrl-names = "default", "sleep";
1149         pinctrl-0 = <&bios_flash_wp_r_l>,
1150                     <&ap_suspend_l_deassert>;
1151
1152         pinctrl-1 = <&bios_flash_wp_r_l>,
1153                     <&ap_suspend_l_assert>;
1154
1155         /*
1156          * Hogs prevent usermode from changing the value. A GPIO can be both
1157          * here and in the pinctrl section.
1158          */
1159         ap-suspend-l-hog {
1160                 gpio-hog;
1161                 gpios = <126 GPIO_ACTIVE_LOW>;
1162                 output-low;
1163         };
1164
1165         ap_edp_bklten: ap-edp-bklten-state {
1166                 pins = "gpio37";
1167                 function = "gpio";
1168                 drive-strength = <2>;
1169                 bias-disable;
1170         };
1171
1172         bios_flash_wp_r_l: bios-flash-wp-r-l-state {
1173                 pins = "gpio128";
1174                 function = "gpio";
1175                 bias-disable;
1176         };
1177
1178         ec_ap_int_l: ec-ap-int-l-state {
1179                pins = "gpio122";
1180                function = "gpio";
1181                bias-pull-up;
1182         };
1183
1184         edp_brij_en: edp-brij-en-state {
1185                 pins = "gpio102";
1186                 function = "gpio";
1187                 drive-strength = <2>;
1188                 bias-disable;
1189         };
1190
1191         edp_brij_irq: edp-brij-irq-state {
1192                 pins = "gpio10";
1193                 function = "gpio";
1194                 drive-strength = <2>;
1195                 bias-pull-down;
1196         };
1197
1198         en_pp3300_dx_edp: en-pp3300-dx-edp-state {
1199                 pins = "gpio43";
1200                 function = "gpio";
1201                 drive-strength = <2>;
1202                 bias-disable;
1203         };
1204
1205         h1_ap_int_odl: h1-ap-int-odl-state {
1206                 pins = "gpio129";
1207                 function = "gpio";
1208                 bias-pull-up;
1209         };
1210
1211         pen_eject_odl: pen-eject-odl-state {
1212                 pins = "gpio119";
1213                 function = "gpio";
1214                 bias-pull-up;
1215         };
1216
1217         pen_irq_l: pen-irq-l-state {
1218                 pins = "gpio24";
1219                 function = "gpio";
1220
1221                 /* Has external pullup */
1222                 bias-disable;
1223         };
1224
1225         pen_pdct_l: pen-pdct-l-state {
1226                 pins = "gpio63";
1227                 function = "gpio";
1228
1229                 /* Has external pullup */
1230                 bias-disable;
1231         };
1232
1233         pen_rst_l: pen-rst-l-state {
1234                 pins = "gpio23";
1235                 function = "gpio";
1236                 bias-disable;
1237                 drive-strength = <2>;
1238
1239                 /*
1240                  * The pen driver doesn't currently support
1241                  * driving this reset line.  By specifying
1242                  * output-high here we're relying on the fact
1243                  * that this pin has a default pulldown at boot
1244                  * (which makes sure the pen was in reset if it
1245                  * was powered) and then we set it high here to
1246                  * take it out of reset.  Better would be if the
1247                  * pen driver could control this and we could
1248                  * remove "output-high" here.
1249                  */
1250                 output-high;
1251         };
1252
1253         qspi_sleep: qspi-sleep-state {
1254                 pins = "gpio90", "gpio91", "gpio92", "gpio95";
1255
1256                 /*
1257                  * When we're not actively transferring we want pins as GPIOs
1258                  * with output disabled so that the quad SPI IP block stops
1259                  * driving them. We rely on the normal pulls configured in
1260                  * the active state and don't redefine them here. Also note
1261                  * that we don't need the reverse (output-enable) in the
1262                  * normal mode since the "output-enable" only matters for
1263                  * GPIO function.
1264                  */
1265                 function = "gpio";
1266                 output-disable;
1267         };
1268
1269         sdc2_clk: sdc2-clk-state {
1270                 pins = "sdc2_clk";
1271                 bias-disable;
1272
1273                 /*
1274                  * It seems that mmc_test reports errors if drive
1275                  * strength is not 16.
1276                  */
1277                 drive-strength = <16>;
1278         };
1279
1280         sdc2_cmd: sdc2-cmd-state {
1281                 pins = "sdc2_cmd";
1282                 bias-pull-up;
1283                 drive-strength = <16>;
1284         };
1285
1286         sdc2_data: sdc2-data-state {
1287                 pins = "sdc2_data";
1288                 bias-pull-up;
1289                 drive-strength = <16>;
1290         };
1291
1292         sd_cd_odl: sd-cd-odl-state {
1293                 pins = "gpio44";
1294                 function = "gpio";
1295                 bias-pull-up;
1296         };
1297
1298         ts_int_l: ts-int-l-state {
1299                 pins = "gpio125";
1300                 function = "gpio";
1301                 bias-pull-up;
1302         };
1303
1304         ts_reset_l: ts-reset-l-state {
1305                 pins = "gpio118";
1306                 function = "gpio";
1307                 bias-disable;
1308                 drive-strength = <2>;
1309         };
1310
1311         ap_suspend_l_assert: ap-suspend-l-assert-state {
1312                 pins = "gpio126";
1313                 function = "gpio";
1314                 bias-disable;
1315                 drive-strength = <2>;
1316                 output-low;
1317         };
1318
1319         ap_suspend_l_deassert: ap-suspend-l-deassert-state {
1320                 pins = "gpio126";
1321                 function = "gpio";
1322                 bias-disable;
1323                 drive-strength = <2>;
1324                 output-high;
1325         };
1326 };
1327
1328 &venus {
1329         status = "okay";
1330
1331         video-firmware {
1332                 iommus = <&apps_smmu 0x10b2 0x0>;
1333         };
1334 };