GNU Linux-libre 4.19.281-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         /*
236          * eDP PHY/clk don't sync reliably at anything other than 24 MHz. Only
237          * set this here, because rk3399-gru.dtsi ensures we can generate this
238          * off GPLL=600MHz, whereas some other RK3399 boards may not.
239          */
240         assigned-clocks = <&cru PCLK_EDP>;
241         assigned-clock-rates = <24000000>;
242
243         ports {
244                 edp_out: port@1 {
245                         reg = <1>;
246                         #address-cells = <1>;
247                         #size-cells = <0>;
248
249                         edp_out_panel: endpoint@0 {
250                                 reg = <0>;
251                                 remote-endpoint = <&panel_in_edp>;
252                         };
253                 };
254         };
255 };
256
257 ap_i2c_mic: &i2c1 {
258         status = "okay";
259
260         clock-frequency = <400000>;
261
262         /* These are relatively safe rise/fall times */
263         i2c-scl-falling-time-ns = <50>;
264         i2c-scl-rising-time-ns = <300>;
265
266         headsetcodec: rt5514@57 {
267                 compatible = "realtek,rt5514";
268                 reg = <0x57>;
269                 realtek,dmic-init-delay-ms = <20>;
270         };
271 };
272
273 ap_i2c_tp: &i2c5 {
274         status = "okay";
275
276         clock-frequency = <400000>;
277
278         /* These are relatively safe rise/fall times */
279         i2c-scl-falling-time-ns = <50>;
280         i2c-scl-rising-time-ns = <300>;
281
282         /*
283          * Note strange pullup enable.  Apparently this avoids leakage but
284          * still allows us to get nice 4.7K pullups for high speed i2c
285          * transfers.  Basically we want the pullup on whenever the ap is
286          * alive, so the "en" pin just gets set to output high.
287          */
288         pinctrl-0 = <&i2c5_xfer &ap_i2c_tp_pu_en>;
289 };
290
291 &cros_ec {
292         cros_ec_pwm: ec-pwm {
293                 compatible = "google,cros-ec-pwm";
294                 #pwm-cells = <1>;
295         };
296
297         usbc_extcon1: extcon@1 {
298                 compatible = "google,extcon-usbc-cros-ec";
299                 google,usb-port-id = <1>;
300
301                 #extcon-cells = <0>;
302         };
303 };
304
305 &sound {
306         rockchip,codec = <&max98357a &headsetcodec
307                           &codec &wacky_spi_audio &cdn_dp>;
308 };
309
310 &spi2 {
311         wacky_spi_audio: spi2@0 {
312                 compatible = "realtek,rt5514";
313                 reg = <0>;
314                 interrupt-parent = <&gpio1>;
315                 interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
316                 pinctrl-names = "default";
317                 pinctrl-0 = <&mic_int>;
318                 /* May run faster once verified. */
319                 spi-max-frequency = <10000000>;
320                 wakeup-source;
321         };
322 };
323
324 &pci_rootport {
325         mvl_wifi: wifi@0,0 {
326                 compatible = "pci1b4b,2b42";
327                 reg = <0x83010000 0x0 0x00000000 0x0 0x00100000
328                        0x83010000 0x0 0x00100000 0x0 0x00100000>;
329                 interrupt-parent = <&gpio0>;
330                 interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
331                 pinctrl-names = "default";
332                 pinctrl-0 = <&wlan_host_wake_l>;
333                 wakeup-source;
334         };
335 };
336
337 &tcphy1 {
338         status = "okay";
339         extcon = <&usbc_extcon1>;
340 };
341
342 &u2phy1 {
343         status = "okay";
344 };
345
346 &usb_host0_ehci {
347         status = "okay";
348 };
349
350 &usb_host1_ehci {
351         status = "okay";
352 };
353
354 &usb_host1_ohci {
355         status = "okay";
356 };
357
358 &usbdrd3_1 {
359         status = "okay";
360         extcon = <&usbc_extcon1>;
361 };
362
363 &usbdrd_dwc3_1 {
364         status = "okay";
365         dr_mode = "host";
366 };
367
368 &pinctrl {
369         discrete-regulators {
370                 pp1500_en: pp1500-en {
371                         rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO
372                                          &pcfg_pull_none>;
373                 };
374
375                 pp1800_audio_en: pp1800-audio-en {
376                         rockchip,pins = <RK_GPIO0 2 RK_FUNC_GPIO
377                                          &pcfg_pull_down>;
378                 };
379
380                 pp3000_en: pp3000-en {
381                         rockchip,pins = <RK_GPIO0 12 RK_FUNC_GPIO
382                                          &pcfg_pull_none>;
383                 };
384
385                 pp3300_disp_en: pp3300-disp-en {
386                         rockchip,pins = <RK_GPIO4 27 RK_FUNC_GPIO
387                                          &pcfg_pull_none>;
388                 };
389
390                 wlan_module_pd_l: wlan-module-pd-l {
391                         rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO
392                                          &pcfg_pull_down>;
393                 };
394         };
395 };
396
397 &wifi {
398         wifi_perst_l: wifi-perst-l {
399                 rockchip,pins = <2 27 RK_FUNC_GPIO &pcfg_pull_none>;
400         };
401
402         wlan_host_wake_l: wlan-host-wake-l {
403                 rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_none>;
404         };
405 };