xref: /openbmc/linux/arch/arm64/boot/dts/rockchip/rk3399-gru-chromebook.dtsi (revision 05cf4fe738242183f1237f1b3a28b4479348c0a1)
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
249ap_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
265ap_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};
398