GNU Linux-libre 4.19.211-gnu1
[releases.git] / arch / arm64 / boot / dts / rockchip / rk3399-gru-chromebook.dtsi
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Google Gru-Chromebook shared properties
4  *
5  * Copyright 2018 Google, Inc
6  */
7
8 #include "rk3399-gru.dtsi"
9
10 / {
11         pp900_ap: pp900-ap {
12                 compatible = "regulator-fixed";
13                 regulator-name = "pp900_ap";
14
15                 /* EC turns on w/ pp900_ap_en; always on for AP */
16                 regulator-always-on;
17                 regulator-boot-on;
18                 regulator-min-microvolt = <900000>;
19                 regulator-max-microvolt = <900000>;
20
21                 vin-supply = <&ppvar_sys>;
22         };
23
24         /* EC turns on w/ pp900_usb_en */
25         pp900_usb: pp900-ap {
26         };
27
28         /* EC turns on w/ pp900_pcie_en */
29         pp900_pcie: pp900-ap {
30         };
31
32         pp3000: pp3000 {
33                 compatible = "regulator-fixed";
34                 regulator-name = "pp3000";
35                 pinctrl-names = "default";
36                 pinctrl-0 = <&pp3000_en>;
37
38                 enable-active-high;
39                 gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
40
41                 regulator-always-on;
42                 regulator-boot-on;
43                 regulator-min-microvolt = <3000000>;
44                 regulator-max-microvolt = <3000000>;
45
46                 vin-supply = <&ppvar_sys>;
47         };
48
49         ppvar_centerlogic_pwm: ppvar-centerlogic-pwm {
50                 compatible = "pwm-regulator";
51                 regulator-name = "ppvar_centerlogic_pwm";
52
53                 pwms = <&pwm3 0 3337 0>;
54                 pwm-supply = <&ppvar_sys>;
55                 pwm-dutycycle-range = <100 0>;
56                 pwm-dutycycle-unit = <100>;
57
58                 /* EC turns on w/ ppvar_centerlogic_en; always on for AP */
59                 regulator-always-on;
60                 regulator-boot-on;
61                 regulator-min-microvolt = <799434>;
62                 regulator-max-microvolt = <1049925>;
63         };
64
65         ppvar_centerlogic: ppvar-centerlogic {
66                 compatible = "vctrl-regulator";
67                 regulator-name = "ppvar_centerlogic";
68
69                 regulator-min-microvolt = <799434>;
70                 regulator-max-microvolt = <1049925>;
71
72                 ctrl-supply = <&ppvar_centerlogic_pwm>;
73                 ctrl-voltage-range = <799434 1049925>;
74
75                 regulator-settling-time-up-us = <378>;
76                 min-slew-down-rate = <225>;
77                 ovp-threshold-percent = <16>;
78         };
79
80         /* Schematics call this PPVAR even though it's fixed */
81         ppvar_logic: ppvar-logic {
82                 compatible = "regulator-fixed";
83                 regulator-name = "ppvar_logic";
84
85                 /* EC turns on w/ ppvar_logic_en; always on for AP */
86                 regulator-always-on;
87                 regulator-boot-on;
88                 regulator-min-microvolt = <900000>;
89                 regulator-max-microvolt = <900000>;
90
91                 vin-supply = <&ppvar_sys>;
92         };
93
94         pp1800_audio: pp1800-audio {
95                 compatible = "regulator-fixed";
96                 regulator-name = "pp1800_audio";
97                 pinctrl-names = "default";
98                 pinctrl-0 = <&pp1800_audio_en>;
99
100                 enable-active-high;
101                 gpio = <&gpio0 2 GPIO_ACTIVE_HIGH>;
102
103                 regulator-always-on;
104                 regulator-boot-on;
105
106                 vin-supply = <&pp1800>;
107         };
108
109         /* gpio is shared with pp3300_wifi_bt */
110         pp1800_pcie: pp1800-pcie {
111                 compatible = "regulator-fixed";
112                 regulator-name = "pp1800_pcie";
113                 pinctrl-names = "default";
114                 pinctrl-0 = <&wlan_module_pd_l>;
115
116                 enable-active-high;
117                 gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
118
119                 /*
120                  * Need to wait 1ms + ramp-up time before we can power on WiFi.
121                  * This has been approximated as 8ms total.
122                  */
123                 regulator-enable-ramp-delay = <8000>;
124
125                 vin-supply = <&pp1800>;
126         };
127
128         /* Always on; plain and simple */
129         pp3000_ap: pp3000_emmc: pp3000 {
130         };
131
132         pp1500_ap_io: pp1500-ap-io {
133                 compatible = "regulator-fixed";
134                 regulator-name = "pp1500_ap_io";
135                 pinctrl-names = "default";
136                 pinctrl-0 = <&pp1500_en>;
137
138                 enable-active-high;
139                 gpio = <&gpio0 10 GPIO_ACTIVE_HIGH>;
140
141                 regulator-always-on;
142                 regulator-boot-on;
143                 regulator-min-microvolt = <1500000>;
144                 regulator-max-microvolt = <1500000>;
145
146                 vin-supply = <&pp1800>;
147         };
148
149         pp3300_disp: pp3300-disp {
150                 compatible = "regulator-fixed";
151                 regulator-name = "pp3300_disp";
152                 pinctrl-names = "default";
153                 pinctrl-0 = <&pp3300_disp_en>;
154
155                 enable-active-high;
156                 gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
157
158                 startup-delay-us = <2000>;
159                 vin-supply = <&pp3300>;
160         };
161
162         /* EC turns on w/ pp3300_usb_en_l */
163         pp3300_usb: pp3300 {
164         };
165
166         /* gpio is shared with pp1800_pcie and pinctrl is set there */
167         pp3300_wifi_bt: pp3300-wifi-bt {
168                 compatible = "regulator-fixed";
169                 regulator-name = "pp3300_wifi_bt";
170
171                 enable-active-high;
172                 gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
173
174                 vin-supply = <&pp3300>;
175         };
176
177         /*
178          * This is a bit of a hack. The WiFi module should be reset at least
179          * 1ms after its regulators have ramped up (max rampup time is ~7ms).
180          * With some stretching of the imagination, we can call the 1.8V
181          * regulator a supply.
182          */
183         wlan_pd_n: wlan-pd-n {
184                 compatible = "regulator-fixed";
185                 regulator-name = "wlan_pd_n";
186                 pinctrl-names = "default";
187                 pinctrl-0 = <&wlan_module_reset_l>;
188
189                 enable-active-high;
190                 gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
191
192                 vin-supply = <&pp1800_pcie>;
193         };
194
195         backlight: backlight {
196                 compatible = "pwm-backlight";
197                 brightness-levels = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
198                                      17 18 19 20 21 22 23 24 25 26 27 28 29 30
199                                      31 32 33 34 35 36 37 38 39 40 41 42 43 44
200                                      45 46 47 48 49 50 51 52 53 54 55 56 57 58
201                                      59 60 61 62 63 64 65 66 67 68 69 70 71 72
202                                      73 74 75 76 77 78 79 80 81 82 83 84 85 86
203                                      87 88 89 90 91 92 93 94 95 96 97 98 99 100>;
204                 default-brightness-level = <51>;
205                 enable-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
206                 power-supply = <&pp3300_disp>;
207                 pinctrl-names = "default";
208                 pinctrl-0 = <&bl_en>;
209                 pwm-delay-us = <10000>;
210         };
211 };
212
213 &ppvar_bigcpu {
214         min-slew-down-rate = <225>;
215         ovp-threshold-percent = <16>;
216 };
217
218 &ppvar_litcpu {
219         min-slew-down-rate = <225>;
220         ovp-threshold-percent = <16>;
221 };
222
223 &ppvar_gpu {
224         min-slew-down-rate = <225>;
225         ovp-threshold-percent = <16>;
226 };
227
228 &cdn_dp {
229         extcon = <&usbc_extcon0>, <&usbc_extcon1>;
230 };
231
232 &edp {
233         status = "okay";
234
235         ports {
236                 edp_out: port@1 {
237                         reg = <1>;
238                         #address-cells = <1>;
239                         #size-cells = <0>;
240
241                         edp_out_panel: endpoint@0 {
242                                 reg = <0>;
243                                 remote-endpoint = <&panel_in_edp>;
244                         };
245                 };
246         };
247 };
248
249 ap_i2c_mic: &i2c1 {
250         status = "okay";
251
252         clock-frequency = <400000>;
253
254         /* These are relatively safe rise/fall times */
255         i2c-scl-falling-time-ns = <50>;
256         i2c-scl-rising-time-ns = <300>;
257
258         headsetcodec: rt5514@57 {
259                 compatible = "realtek,rt5514";
260                 reg = <0x57>;
261                 realtek,dmic-init-delay-ms = <20>;
262         };
263 };
264
265 ap_i2c_tp: &i2c5 {
266         status = "okay";
267
268         clock-frequency = <400000>;
269
270         /* These are relatively safe rise/fall times */
271         i2c-scl-falling-time-ns = <50>;
272         i2c-scl-rising-time-ns = <300>;
273
274         /*
275          * Note strange pullup enable.  Apparently this avoids leakage but
276          * still allows us to get nice 4.7K pullups for high speed i2c
277          * transfers.  Basically we want the pullup on whenever the ap is
278          * alive, so the "en" pin just gets set to output high.
279          */
280         pinctrl-0 = <&i2c5_xfer &ap_i2c_tp_pu_en>;
281 };
282
283 &cros_ec {
284         cros_ec_pwm: ec-pwm {
285                 compatible = "google,cros-ec-pwm";
286                 #pwm-cells = <1>;
287         };
288
289         usbc_extcon1: extcon@1 {
290                 compatible = "google,extcon-usbc-cros-ec";
291                 google,usb-port-id = <1>;
292
293                 #extcon-cells = <0>;
294         };
295 };
296
297 &sound {
298         rockchip,codec = <&max98357a &headsetcodec
299                           &codec &wacky_spi_audio &cdn_dp>;
300 };
301
302 &spi2 {
303         wacky_spi_audio: spi2@0 {
304                 compatible = "realtek,rt5514";
305                 reg = <0>;
306                 interrupt-parent = <&gpio1>;
307                 interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
308                 pinctrl-names = "default";
309                 pinctrl-0 = <&mic_int>;
310                 /* May run faster once verified. */
311                 spi-max-frequency = <10000000>;
312                 wakeup-source;
313         };
314 };
315
316 &pci_rootport {
317         mvl_wifi: wifi@0,0 {
318                 compatible = "pci1b4b,2b42";
319                 reg = <0x83010000 0x0 0x00000000 0x0 0x00100000
320                        0x83010000 0x0 0x00100000 0x0 0x00100000>;
321                 interrupt-parent = <&gpio0>;
322                 interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
323                 pinctrl-names = "default";
324                 pinctrl-0 = <&wlan_host_wake_l>;
325                 wakeup-source;
326         };
327 };
328
329 &tcphy1 {
330         status = "okay";
331         extcon = <&usbc_extcon1>;
332 };
333
334 &u2phy1 {
335         status = "okay";
336 };
337
338 &usb_host0_ehci {
339         status = "okay";
340 };
341
342 &usb_host1_ehci {
343         status = "okay";
344 };
345
346 &usb_host1_ohci {
347         status = "okay";
348 };
349
350 &usbdrd3_1 {
351         status = "okay";
352         extcon = <&usbc_extcon1>;
353 };
354
355 &usbdrd_dwc3_1 {
356         status = "okay";
357         dr_mode = "host";
358 };
359
360 &pinctrl {
361         discrete-regulators {
362                 pp1500_en: pp1500-en {
363                         rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO
364                                          &pcfg_pull_none>;
365                 };
366
367                 pp1800_audio_en: pp1800-audio-en {
368                         rockchip,pins = <RK_GPIO0 2 RK_FUNC_GPIO
369                                          &pcfg_pull_down>;
370                 };
371
372                 pp3000_en: pp3000-en {
373                         rockchip,pins = <RK_GPIO0 12 RK_FUNC_GPIO
374                                          &pcfg_pull_none>;
375                 };
376
377                 pp3300_disp_en: pp3300-disp-en {
378                         rockchip,pins = <RK_GPIO4 27 RK_FUNC_GPIO
379                                          &pcfg_pull_none>;
380                 };
381
382                 wlan_module_pd_l: wlan-module-pd-l {
383                         rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO
384                                          &pcfg_pull_down>;
385                 };
386         };
387 };
388
389 &wifi {
390         wifi_perst_l: wifi-perst-l {
391                 rockchip,pins = <2 27 RK_FUNC_GPIO &pcfg_pull_none>;
392         };
393
394         wlan_host_wake_l: wlan-host-wake-l {
395                 rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_none>;
396         };
397 };