xref: /linux/arch/arm64/boot/dts/rockchip/rk3399-gru-chromebook.dtsi (revision a0024f55eb5b741b76a0b950f1222ddbab6a9fc9)
1a0aa6bfeSHeiko Stuebner// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2a0aa6bfeSHeiko Stuebner/*
3a0aa6bfeSHeiko Stuebner * Google Gru-Chromebook shared properties
4a0aa6bfeSHeiko Stuebner *
5a0aa6bfeSHeiko Stuebner * Copyright 2018 Google, Inc
6a0aa6bfeSHeiko Stuebner */
7a0aa6bfeSHeiko Stuebner
8a0aa6bfeSHeiko Stuebner#include "rk3399-gru.dtsi"
9a0aa6bfeSHeiko Stuebner
10a0aa6bfeSHeiko Stuebner/ {
11a0aa6bfeSHeiko Stuebner	pp900_ap: pp900-ap {
12a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
13a0aa6bfeSHeiko Stuebner		regulator-name = "pp900_ap";
14a0aa6bfeSHeiko Stuebner
15a0aa6bfeSHeiko Stuebner		/* EC turns on w/ pp900_ap_en; always on for AP */
16a0aa6bfeSHeiko Stuebner		regulator-always-on;
17a0aa6bfeSHeiko Stuebner		regulator-boot-on;
18a0aa6bfeSHeiko Stuebner		regulator-min-microvolt = <900000>;
19a0aa6bfeSHeiko Stuebner		regulator-max-microvolt = <900000>;
20a0aa6bfeSHeiko Stuebner
21a0aa6bfeSHeiko Stuebner		vin-supply = <&ppvar_sys>;
22a0aa6bfeSHeiko Stuebner	};
23a0aa6bfeSHeiko Stuebner
24a0aa6bfeSHeiko Stuebner	/* EC turns on w/ pp900_usb_en */
25a0aa6bfeSHeiko Stuebner	pp900_usb: pp900-ap {
26a0aa6bfeSHeiko Stuebner	};
27a0aa6bfeSHeiko Stuebner
28a0aa6bfeSHeiko Stuebner	/* EC turns on w/ pp900_pcie_en */
29a0aa6bfeSHeiko Stuebner	pp900_pcie: pp900-ap {
30a0aa6bfeSHeiko Stuebner	};
31a0aa6bfeSHeiko Stuebner
32a0aa6bfeSHeiko Stuebner	pp3000: pp3000 {
33a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
34a0aa6bfeSHeiko Stuebner		regulator-name = "pp3000";
35a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
36a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&pp3000_en>;
37a0aa6bfeSHeiko Stuebner
38a0aa6bfeSHeiko Stuebner		enable-active-high;
39a0aa6bfeSHeiko Stuebner		gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
40a0aa6bfeSHeiko Stuebner
41a0aa6bfeSHeiko Stuebner		regulator-always-on;
42a0aa6bfeSHeiko Stuebner		regulator-boot-on;
43a0aa6bfeSHeiko Stuebner		regulator-min-microvolt = <3000000>;
44a0aa6bfeSHeiko Stuebner		regulator-max-microvolt = <3000000>;
45a0aa6bfeSHeiko Stuebner
46a0aa6bfeSHeiko Stuebner		vin-supply = <&ppvar_sys>;
47a0aa6bfeSHeiko Stuebner	};
48a0aa6bfeSHeiko Stuebner
49a0aa6bfeSHeiko Stuebner	ppvar_centerlogic_pwm: ppvar-centerlogic-pwm {
50a0aa6bfeSHeiko Stuebner		compatible = "pwm-regulator";
51a0aa6bfeSHeiko Stuebner		regulator-name = "ppvar_centerlogic_pwm";
52a0aa6bfeSHeiko Stuebner
53a0aa6bfeSHeiko Stuebner		pwms = <&pwm3 0 3337 0>;
54a0aa6bfeSHeiko Stuebner		pwm-supply = <&ppvar_sys>;
55a0aa6bfeSHeiko Stuebner		pwm-dutycycle-range = <100 0>;
56a0aa6bfeSHeiko Stuebner		pwm-dutycycle-unit = <100>;
57a0aa6bfeSHeiko Stuebner
58a0aa6bfeSHeiko Stuebner		/* EC turns on w/ ppvar_centerlogic_en; always on for AP */
59a0aa6bfeSHeiko Stuebner		regulator-always-on;
60a0aa6bfeSHeiko Stuebner		regulator-boot-on;
61a0aa6bfeSHeiko Stuebner		regulator-min-microvolt = <799434>;
62a0aa6bfeSHeiko Stuebner		regulator-max-microvolt = <1049925>;
63a0aa6bfeSHeiko Stuebner	};
64a0aa6bfeSHeiko Stuebner
65a0aa6bfeSHeiko Stuebner	ppvar_centerlogic: ppvar-centerlogic {
66a0aa6bfeSHeiko Stuebner		compatible = "vctrl-regulator";
67a0aa6bfeSHeiko Stuebner		regulator-name = "ppvar_centerlogic";
68a0aa6bfeSHeiko Stuebner
69a0aa6bfeSHeiko Stuebner		regulator-min-microvolt = <799434>;
70a0aa6bfeSHeiko Stuebner		regulator-max-microvolt = <1049925>;
71a0aa6bfeSHeiko Stuebner
72a0aa6bfeSHeiko Stuebner		ctrl-supply = <&ppvar_centerlogic_pwm>;
73a0aa6bfeSHeiko Stuebner		ctrl-voltage-range = <799434 1049925>;
74a0aa6bfeSHeiko Stuebner
75a0aa6bfeSHeiko Stuebner		regulator-settling-time-up-us = <378>;
76a0aa6bfeSHeiko Stuebner		min-slew-down-rate = <225>;
77a0aa6bfeSHeiko Stuebner		ovp-threshold-percent = <16>;
78a0aa6bfeSHeiko Stuebner	};
79a0aa6bfeSHeiko Stuebner
80a0aa6bfeSHeiko Stuebner	/* Schematics call this PPVAR even though it's fixed */
81a0aa6bfeSHeiko Stuebner	ppvar_logic: ppvar-logic {
82a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
83a0aa6bfeSHeiko Stuebner		regulator-name = "ppvar_logic";
84a0aa6bfeSHeiko Stuebner
85a0aa6bfeSHeiko Stuebner		/* EC turns on w/ ppvar_logic_en; always on for AP */
86a0aa6bfeSHeiko Stuebner		regulator-always-on;
87a0aa6bfeSHeiko Stuebner		regulator-boot-on;
88a0aa6bfeSHeiko Stuebner		regulator-min-microvolt = <900000>;
89a0aa6bfeSHeiko Stuebner		regulator-max-microvolt = <900000>;
90a0aa6bfeSHeiko Stuebner
91a0aa6bfeSHeiko Stuebner		vin-supply = <&ppvar_sys>;
92a0aa6bfeSHeiko Stuebner	};
93a0aa6bfeSHeiko Stuebner
94a0aa6bfeSHeiko Stuebner	pp1800_audio: pp1800-audio {
95a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
96a0aa6bfeSHeiko Stuebner		regulator-name = "pp1800_audio";
97a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
98a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&pp1800_audio_en>;
99a0aa6bfeSHeiko Stuebner
100a0aa6bfeSHeiko Stuebner		enable-active-high;
101a0aa6bfeSHeiko Stuebner		gpio = <&gpio0 2 GPIO_ACTIVE_HIGH>;
102a0aa6bfeSHeiko Stuebner
103a0aa6bfeSHeiko Stuebner		regulator-always-on;
104a0aa6bfeSHeiko Stuebner		regulator-boot-on;
105a0aa6bfeSHeiko Stuebner
106a0aa6bfeSHeiko Stuebner		vin-supply = <&pp1800>;
107a0aa6bfeSHeiko Stuebner	};
108a0aa6bfeSHeiko Stuebner
109a0aa6bfeSHeiko Stuebner	/* gpio is shared with pp3300_wifi_bt */
110a0aa6bfeSHeiko Stuebner	pp1800_pcie: pp1800-pcie {
111a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
112a0aa6bfeSHeiko Stuebner		regulator-name = "pp1800_pcie";
113a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
114a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&wlan_module_pd_l>;
115a0aa6bfeSHeiko Stuebner
116a0aa6bfeSHeiko Stuebner		enable-active-high;
117a0aa6bfeSHeiko Stuebner		gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
118a0aa6bfeSHeiko Stuebner
119a0aa6bfeSHeiko Stuebner		/*
120a0aa6bfeSHeiko Stuebner		 * Need to wait 1ms + ramp-up time before we can power on WiFi.
121a0aa6bfeSHeiko Stuebner		 * This has been approximated as 8ms total.
122a0aa6bfeSHeiko Stuebner		 */
123a0aa6bfeSHeiko Stuebner		regulator-enable-ramp-delay = <8000>;
124a0aa6bfeSHeiko Stuebner
125a0aa6bfeSHeiko Stuebner		vin-supply = <&pp1800>;
126a0aa6bfeSHeiko Stuebner	};
127a0aa6bfeSHeiko Stuebner
128a0aa6bfeSHeiko Stuebner	/* Always on; plain and simple */
129a0aa6bfeSHeiko Stuebner	pp3000_ap: pp3000_emmc: pp3000 {
130a0aa6bfeSHeiko Stuebner	};
131a0aa6bfeSHeiko Stuebner
132a0aa6bfeSHeiko Stuebner	pp1500_ap_io: pp1500-ap-io {
133a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
134a0aa6bfeSHeiko Stuebner		regulator-name = "pp1500_ap_io";
135a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
136a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&pp1500_en>;
137a0aa6bfeSHeiko Stuebner
138a0aa6bfeSHeiko Stuebner		enable-active-high;
139a0aa6bfeSHeiko Stuebner		gpio = <&gpio0 10 GPIO_ACTIVE_HIGH>;
140a0aa6bfeSHeiko Stuebner
141a0aa6bfeSHeiko Stuebner		regulator-always-on;
142a0aa6bfeSHeiko Stuebner		regulator-boot-on;
143a0aa6bfeSHeiko Stuebner		regulator-min-microvolt = <1500000>;
144a0aa6bfeSHeiko Stuebner		regulator-max-microvolt = <1500000>;
145a0aa6bfeSHeiko Stuebner
146a0aa6bfeSHeiko Stuebner		vin-supply = <&pp1800>;
147a0aa6bfeSHeiko Stuebner	};
148a0aa6bfeSHeiko Stuebner
149a0aa6bfeSHeiko Stuebner	pp3300_disp: pp3300-disp {
150a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
151a0aa6bfeSHeiko Stuebner		regulator-name = "pp3300_disp";
152a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
153a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&pp3300_disp_en>;
154a0aa6bfeSHeiko Stuebner
155a0aa6bfeSHeiko Stuebner		enable-active-high;
156a0aa6bfeSHeiko Stuebner		gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
157a0aa6bfeSHeiko Stuebner
158a0aa6bfeSHeiko Stuebner		startup-delay-us = <2000>;
159a0aa6bfeSHeiko Stuebner		vin-supply = <&pp3300>;
160a0aa6bfeSHeiko Stuebner	};
161a0aa6bfeSHeiko Stuebner
162a0aa6bfeSHeiko Stuebner	/* EC turns on w/ pp3300_usb_en_l */
163a0aa6bfeSHeiko Stuebner	pp3300_usb: pp3300 {
164a0aa6bfeSHeiko Stuebner	};
165a0aa6bfeSHeiko Stuebner
166a0aa6bfeSHeiko Stuebner	/* gpio is shared with pp1800_pcie and pinctrl is set there */
167a0aa6bfeSHeiko Stuebner	pp3300_wifi_bt: pp3300-wifi-bt {
168a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
169a0aa6bfeSHeiko Stuebner		regulator-name = "pp3300_wifi_bt";
170a0aa6bfeSHeiko Stuebner
171a0aa6bfeSHeiko Stuebner		enable-active-high;
172a0aa6bfeSHeiko Stuebner		gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
173a0aa6bfeSHeiko Stuebner
174a0aa6bfeSHeiko Stuebner		vin-supply = <&pp3300>;
175a0aa6bfeSHeiko Stuebner	};
176a0aa6bfeSHeiko Stuebner
177a0aa6bfeSHeiko Stuebner	/*
178a0aa6bfeSHeiko Stuebner	 * This is a bit of a hack. The WiFi module should be reset at least
179a0aa6bfeSHeiko Stuebner	 * 1ms after its regulators have ramped up (max rampup time is ~7ms).
180a0aa6bfeSHeiko Stuebner	 * With some stretching of the imagination, we can call the 1.8V
181a0aa6bfeSHeiko Stuebner	 * regulator a supply.
182a0aa6bfeSHeiko Stuebner	 */
183a0aa6bfeSHeiko Stuebner	wlan_pd_n: wlan-pd-n {
184a0aa6bfeSHeiko Stuebner		compatible = "regulator-fixed";
185a0aa6bfeSHeiko Stuebner		regulator-name = "wlan_pd_n";
186a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
187a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&wlan_module_reset_l>;
188a0aa6bfeSHeiko Stuebner
189a0aa6bfeSHeiko Stuebner		enable-active-high;
190a0aa6bfeSHeiko Stuebner		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
191a0aa6bfeSHeiko Stuebner
192a0aa6bfeSHeiko Stuebner		vin-supply = <&pp1800_pcie>;
193a0aa6bfeSHeiko Stuebner	};
194d67a38c5SHeiko Stuebner
195d67a38c5SHeiko Stuebner	backlight: backlight {
196d67a38c5SHeiko Stuebner		compatible = "pwm-backlight";
197d67a38c5SHeiko Stuebner		enable-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
198d67a38c5SHeiko Stuebner		power-supply = <&pp3300_disp>;
199d67a38c5SHeiko Stuebner		pinctrl-names = "default";
200d67a38c5SHeiko Stuebner		pinctrl-0 = <&bl_en>;
201d67a38c5SHeiko Stuebner		pwm-delay-us = <10000>;
202d67a38c5SHeiko Stuebner	};
2035364a0b4SBrian Norris
2045364a0b4SBrian Norris	gpio_keys: gpio-keys {
2055364a0b4SBrian Norris		compatible = "gpio-keys";
2065364a0b4SBrian Norris		pinctrl-names = "default";
2075364a0b4SBrian Norris		pinctrl-0 = <&bt_host_wake_l>;
2085364a0b4SBrian Norris
2095364a0b4SBrian Norris		wake_on_bt: wake-on-bt {
2105364a0b4SBrian Norris			label = "Wake-on-Bluetooth";
2115364a0b4SBrian Norris			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
2125364a0b4SBrian Norris			linux,code = <KEY_WAKEUP>;
2135364a0b4SBrian Norris			wakeup-source;
2145364a0b4SBrian Norris		};
2155364a0b4SBrian Norris	};
216a0aa6bfeSHeiko Stuebner};
217a0aa6bfeSHeiko Stuebner
218a0aa6bfeSHeiko Stuebner&ppvar_bigcpu {
219a0aa6bfeSHeiko Stuebner	min-slew-down-rate = <225>;
220a0aa6bfeSHeiko Stuebner	ovp-threshold-percent = <16>;
221a0aa6bfeSHeiko Stuebner};
222a0aa6bfeSHeiko Stuebner
223a0aa6bfeSHeiko Stuebner&ppvar_litcpu {
224a0aa6bfeSHeiko Stuebner	min-slew-down-rate = <225>;
225a0aa6bfeSHeiko Stuebner	ovp-threshold-percent = <16>;
226a0aa6bfeSHeiko Stuebner};
227a0aa6bfeSHeiko Stuebner
228a0aa6bfeSHeiko Stuebner&ppvar_gpu {
229a0aa6bfeSHeiko Stuebner	min-slew-down-rate = <225>;
230a0aa6bfeSHeiko Stuebner	ovp-threshold-percent = <16>;
231a0aa6bfeSHeiko Stuebner};
232a0aa6bfeSHeiko Stuebner
233a0aa6bfeSHeiko Stuebner&cdn_dp {
234a0aa6bfeSHeiko Stuebner	extcon = <&usbc_extcon0>, <&usbc_extcon1>;
235a0aa6bfeSHeiko Stuebner};
236a0aa6bfeSHeiko Stuebner
237d67a38c5SHeiko Stuebner&edp {
238d67a38c5SHeiko Stuebner	status = "okay";
239d67a38c5SHeiko Stuebner
240d67a38c5SHeiko Stuebner	ports {
241d67a38c5SHeiko Stuebner		edp_out: port@1 {
242d67a38c5SHeiko Stuebner			reg = <1>;
243d67a38c5SHeiko Stuebner			#address-cells = <1>;
244d67a38c5SHeiko Stuebner			#size-cells = <0>;
245d67a38c5SHeiko Stuebner
246d67a38c5SHeiko Stuebner			edp_out_panel: endpoint@0 {
247d67a38c5SHeiko Stuebner				reg = <0>;
248d67a38c5SHeiko Stuebner				remote-endpoint = <&panel_in_edp>;
249d67a38c5SHeiko Stuebner			};
250d67a38c5SHeiko Stuebner		};
251d67a38c5SHeiko Stuebner	};
252d67a38c5SHeiko Stuebner};
253d67a38c5SHeiko Stuebner
254ae044309SBrian Norris&gpio0 {
255ae044309SBrian Norris	gpio-line-names = /* GPIO0 A 0-7 */
256ae044309SBrian Norris			  "AP_RTC_CLK_IN",
257ae044309SBrian Norris			  "EC_AP_INT_L",
258ae044309SBrian Norris			  "PP1800_AUDIO_EN",
259ae044309SBrian Norris			  "BT_HOST_WAKE_L",
260ae044309SBrian Norris			  "WLAN_MODULE_PD_L",
261ae044309SBrian Norris			  "H1_INT_OD_L",
262ae044309SBrian Norris			  "CENTERLOGIC_DVS_PWM",
263ae044309SBrian Norris			  "",
264ae044309SBrian Norris
265ae044309SBrian Norris			  /* GPIO0 B 0-4 */
266ae044309SBrian Norris			  "WIFI_HOST_WAKE_L",
267ae044309SBrian Norris			  "PMUIO2_33_18_L",
268ae044309SBrian Norris			  "PP1500_EN",
269ae044309SBrian Norris			  "AP_EC_WARM_RESET_REQ",
270ae044309SBrian Norris			  "PP3000_EN";
271ae044309SBrian Norris};
272ae044309SBrian Norris
273ae044309SBrian Norris&gpio1 {
274ae044309SBrian Norris	gpio-line-names = /* GPIO1 A 0-7 */
275ae044309SBrian Norris			  "",
276ae044309SBrian Norris			  "",
277ae044309SBrian Norris			  "SPK_PA_EN",
278ae044309SBrian Norris			  "",
279ae044309SBrian Norris			  "TRACKPAD_INT_L",
280ae044309SBrian Norris			  "AP_EC_S3_S0_L",
281ae044309SBrian Norris			  "AP_EC_OVERTEMP",
282ae044309SBrian Norris			  "AP_SPI_FLASH_MISO",
283ae044309SBrian Norris
284ae044309SBrian Norris			  /* GPIO1 B 0-7 */
285ae044309SBrian Norris			  "AP_SPI_FLASH_MOSI_R",
286ae044309SBrian Norris			  "AP_SPI_FLASH_CLK_R",
287ae044309SBrian Norris			  "AP_SPI_FLASH_CS_L_R",
288ae044309SBrian Norris			  "WLAN_MODULE_RESET_L",
289ae044309SBrian Norris			  "WIFI_DISABLE_L",
290ae044309SBrian Norris			  "MIC_INT",
291ae044309SBrian Norris			  "",
292ae044309SBrian Norris			  "AP_I2C_DVS_SDA",
293ae044309SBrian Norris
294ae044309SBrian Norris			  /* GPIO1 C 0-7 */
295ae044309SBrian Norris			  "AP_I2C_DVS_SCL",
296ae044309SBrian Norris			  "AP_BL_EN",
297ae044309SBrian Norris			  /*
298ae044309SBrian Norris			   * AP_FLASH_WP is crossystem ABI. Schematics call it
299ae044309SBrian Norris			   * AP_FW_WP or CPU1_FW_WP, depending on the variant.
300ae044309SBrian Norris			   */
301ae044309SBrian Norris			  "AP_FLASH_WP",
302ae044309SBrian Norris			  "LITCPU_DVS_PWM",
303ae044309SBrian Norris			  "AP_I2C_AUDIO_SDA",
304ae044309SBrian Norris			  "AP_I2C_AUDIO_SCL",
305ae044309SBrian Norris			  "",
306ae044309SBrian Norris			  "HEADSET_INT_L";
307ae044309SBrian Norris};
308ae044309SBrian Norris
309ae044309SBrian Norris&gpio2 {
310ae044309SBrian Norris	gpio-line-names = /* GPIO2 A 0-7 */
311ae044309SBrian Norris			  "",
312ae044309SBrian Norris			  "",
313ae044309SBrian Norris			  "SD_IO_PWR_EN",
314ae044309SBrian Norris			  "",
315ae044309SBrian Norris			  "",
316ae044309SBrian Norris			  "",
317ae044309SBrian Norris			  "",
318ae044309SBrian Norris			  "",
319ae044309SBrian Norris
320ae044309SBrian Norris			  /* GPIO2 B 0-7 */
321ae044309SBrian Norris			  "",
322ae044309SBrian Norris			  "",
323ae044309SBrian Norris			  "",
324ae044309SBrian Norris			  "",
325ae044309SBrian Norris			  "",
326ae044309SBrian Norris			  "",
327ae044309SBrian Norris			  "",
328ae044309SBrian Norris			  "",
329ae044309SBrian Norris
330ae044309SBrian Norris			  /* GPIO2 C 0-7 */
331ae044309SBrian Norris			  "",
332ae044309SBrian Norris			  "",
333ae044309SBrian Norris			  "",
334ae044309SBrian Norris			  "",
335ae044309SBrian Norris			  "AP_SPI_EC_MISO",
336ae044309SBrian Norris			  "AP_SPI_EC_MOSI",
337ae044309SBrian Norris			  "AP_SPI_EC_CLK",
338ae044309SBrian Norris			  "AP_SPI_EC_CS_L",
339ae044309SBrian Norris
340ae044309SBrian Norris			  /* GPIO2 D 0-4 */
341ae044309SBrian Norris			  "BT_DEV_WAKE_L",
342ae044309SBrian Norris			  "",
343ae044309SBrian Norris			  "WIFI_PCIE_CLKREQ_L",
344ae044309SBrian Norris			  "WIFI_PERST_L",
345ae044309SBrian Norris			  "SD_PWR_3000_1800_L";
346ae044309SBrian Norris};
347ae044309SBrian Norris
348ae044309SBrian Norris&gpio3 {
349ae044309SBrian Norris	gpio-line-names = /* GPIO3 A 0-7 */
350ae044309SBrian Norris			  "",
351ae044309SBrian Norris			  "",
352ae044309SBrian Norris			  "",
353ae044309SBrian Norris			  "",
354ae044309SBrian Norris			  "AP_SPI_TPM_MISO",
355ae044309SBrian Norris			  "AP_SPI_TPM_MOSI_R",
356ae044309SBrian Norris			  "AP_SPI_TPM_CLK_R",
357ae044309SBrian Norris			  "AP_SPI_TPM_CS_L_R",
358ae044309SBrian Norris
359ae044309SBrian Norris			  /* GPIO3 B 0-7 */
360ae044309SBrian Norris			  "EC_IN_RW",
361ae044309SBrian Norris			  "",
362ae044309SBrian Norris			  "AP_I2C_TP_SDA",
363ae044309SBrian Norris			  "AP_I2C_TP_SCL",
364ae044309SBrian Norris			  "AP_I2C_TP_PU_EN",
365ae044309SBrian Norris			  "TOUCH_INT_L",
366ae044309SBrian Norris			  "",
367ae044309SBrian Norris			  "",
368ae044309SBrian Norris
369ae044309SBrian Norris			  /* GPIO3 C 0-7 */
370ae044309SBrian Norris			  "",
371ae044309SBrian Norris			  "",
372ae044309SBrian Norris			  "",
373ae044309SBrian Norris			  "",
374ae044309SBrian Norris			  "",
375ae044309SBrian Norris			  "",
376ae044309SBrian Norris			  "",
377ae044309SBrian Norris			  "",
378ae044309SBrian Norris
379ae044309SBrian Norris			  /* GPIO3 D 0-7 */
380ae044309SBrian Norris			  "I2S0_SCLK",
381ae044309SBrian Norris			  "I2S0_LRCK_RX",
382ae044309SBrian Norris			  "I2S0_LRCK_TX",
383ae044309SBrian Norris			  "I2S0_SDI_0",
384ae044309SBrian Norris			  "I2S0_SDI_1",
385ae044309SBrian Norris			  "",
386ae044309SBrian Norris			  "I2S0_SDO_1",
387ae044309SBrian Norris			  "I2S0_SDO_0";
388ae044309SBrian Norris};
389ae044309SBrian Norris
390ae044309SBrian Norris&gpio4 {
391ae044309SBrian Norris	gpio-line-names = /* GPIO4 A 0-7 */
392ae044309SBrian Norris			  "I2S_MCLK",
393ae044309SBrian Norris			  "AP_I2C_MIC_SDA",
394ae044309SBrian Norris			  "AP_I2C_MIC_SCL",
395ae044309SBrian Norris			  "",
396ae044309SBrian Norris			  "",
397ae044309SBrian Norris			  "",
398ae044309SBrian Norris			  "",
399ae044309SBrian Norris			  "",
400ae044309SBrian Norris
401ae044309SBrian Norris			  /* GPIO4 B 0-7 */
402ae044309SBrian Norris			  "",
403ae044309SBrian Norris			  "",
404ae044309SBrian Norris			  "",
405ae044309SBrian Norris			  "",
406ae044309SBrian Norris			  "",
407ae044309SBrian Norris			  "",
408ae044309SBrian Norris			  "",
409ae044309SBrian Norris			  "",
410ae044309SBrian Norris
411ae044309SBrian Norris			  /* GPIO4 C 0-7 */
412ae044309SBrian Norris			  "AP_I2C_TS_SDA",
413ae044309SBrian Norris			  "AP_I2C_TS_SCL",
414ae044309SBrian Norris			  "GPU_DVS_PWM",
415ae044309SBrian Norris			  "UART_DBG_TX_AP_RX",
416ae044309SBrian Norris			  "UART_AP_TX_DBG_RX",
417ae044309SBrian Norris			  "",
418ae044309SBrian Norris			  "BIGCPU_DVS_PWM",
419ae044309SBrian Norris			  "EDP_HPD_3V0",
420ae044309SBrian Norris
421ae044309SBrian Norris			  /* GPIO4 D 0-5 */
422ae044309SBrian Norris			  "SD_CARD_DET_L",
423ae044309SBrian Norris			  "USB_DP_HPD",
424ae044309SBrian Norris			  "TOUCH_RESET_L",
425ae044309SBrian Norris			  "PP3300_DISP_EN",
426ae044309SBrian Norris			  "",
427ae044309SBrian Norris			  "SD_SLOT_PWR_EN";
428ae044309SBrian Norris};
429ae044309SBrian Norris
430a0aa6bfeSHeiko Stuebnerap_i2c_mic: &i2c1 {
431a0aa6bfeSHeiko Stuebner	status = "okay";
432a0aa6bfeSHeiko Stuebner
433a0aa6bfeSHeiko Stuebner	clock-frequency = <400000>;
434a0aa6bfeSHeiko Stuebner
435a0aa6bfeSHeiko Stuebner	/* These are relatively safe rise/fall times */
436a0aa6bfeSHeiko Stuebner	i2c-scl-falling-time-ns = <50>;
437a0aa6bfeSHeiko Stuebner	i2c-scl-rising-time-ns = <300>;
438a0aa6bfeSHeiko Stuebner
439a0aa6bfeSHeiko Stuebner	headsetcodec: rt5514@57 {
440a0aa6bfeSHeiko Stuebner		compatible = "realtek,rt5514";
441a0aa6bfeSHeiko Stuebner		reg = <0x57>;
442a0aa6bfeSHeiko Stuebner		realtek,dmic-init-delay-ms = <20>;
443a0aa6bfeSHeiko Stuebner	};
444a0aa6bfeSHeiko Stuebner};
445a0aa6bfeSHeiko Stuebner
446a0aa6bfeSHeiko Stuebnerap_i2c_tp: &i2c5 {
447a0aa6bfeSHeiko Stuebner	status = "okay";
448a0aa6bfeSHeiko Stuebner
449a0aa6bfeSHeiko Stuebner	clock-frequency = <400000>;
450a0aa6bfeSHeiko Stuebner
451a0aa6bfeSHeiko Stuebner	/* These are relatively safe rise/fall times */
452a0aa6bfeSHeiko Stuebner	i2c-scl-falling-time-ns = <50>;
453a0aa6bfeSHeiko Stuebner	i2c-scl-rising-time-ns = <300>;
454a0aa6bfeSHeiko Stuebner
455a0aa6bfeSHeiko Stuebner	/*
456a0aa6bfeSHeiko Stuebner	 * Note strange pullup enable.  Apparently this avoids leakage but
457a0aa6bfeSHeiko Stuebner	 * still allows us to get nice 4.7K pullups for high speed i2c
458a0aa6bfeSHeiko Stuebner	 * transfers.  Basically we want the pullup on whenever the ap is
459a0aa6bfeSHeiko Stuebner	 * alive, so the "en" pin just gets set to output high.
460a0aa6bfeSHeiko Stuebner	 */
461a0aa6bfeSHeiko Stuebner	pinctrl-0 = <&i2c5_xfer &ap_i2c_tp_pu_en>;
462a0aa6bfeSHeiko Stuebner};
463a0aa6bfeSHeiko Stuebner
464a0aa6bfeSHeiko Stuebner&cros_ec {
465*a0024f55SKrzysztof Kozlowski	cros_ec_pwm: pwm {
466a0aa6bfeSHeiko Stuebner		compatible = "google,cros-ec-pwm";
467a0aa6bfeSHeiko Stuebner		#pwm-cells = <1>;
468a0aa6bfeSHeiko Stuebner	};
469a0aa6bfeSHeiko Stuebner
4706f7e1c19SEnric Balletbo i Serra	usbc_extcon1: extcon1 {
471a0aa6bfeSHeiko Stuebner		compatible = "google,extcon-usbc-cros-ec";
472a0aa6bfeSHeiko Stuebner		google,usb-port-id = <1>;
473a0aa6bfeSHeiko Stuebner	};
474a0aa6bfeSHeiko Stuebner};
475a0aa6bfeSHeiko Stuebner
476a0aa6bfeSHeiko Stuebner&sound {
477a0aa6bfeSHeiko Stuebner	rockchip,codec = <&max98357a &headsetcodec
478a0aa6bfeSHeiko Stuebner			  &codec &wacky_spi_audio &cdn_dp>;
479a0aa6bfeSHeiko Stuebner};
480a0aa6bfeSHeiko Stuebner
481a0aa6bfeSHeiko Stuebner&spi2 {
482a0aa6bfeSHeiko Stuebner	wacky_spi_audio: spi2@0 {
483a0aa6bfeSHeiko Stuebner		compatible = "realtek,rt5514";
484a0aa6bfeSHeiko Stuebner		reg = <0>;
485a0aa6bfeSHeiko Stuebner		interrupt-parent = <&gpio1>;
486a0aa6bfeSHeiko Stuebner		interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
487a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
488a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&mic_int>;
489a0aa6bfeSHeiko Stuebner		/* May run faster once verified. */
490a0aa6bfeSHeiko Stuebner		spi-max-frequency = <10000000>;
491a0aa6bfeSHeiko Stuebner		wakeup-source;
492a0aa6bfeSHeiko Stuebner	};
493a0aa6bfeSHeiko Stuebner};
494a0aa6bfeSHeiko Stuebner
495a0aa6bfeSHeiko Stuebner&pci_rootport {
496a0aa6bfeSHeiko Stuebner	mvl_wifi: wifi@0,0 {
497a0aa6bfeSHeiko Stuebner		compatible = "pci1b4b,2b42";
498a0aa6bfeSHeiko Stuebner		reg = <0x83010000 0x0 0x00000000 0x0 0x00100000
499a0aa6bfeSHeiko Stuebner		       0x83010000 0x0 0x00100000 0x0 0x00100000>;
500a0aa6bfeSHeiko Stuebner		interrupt-parent = <&gpio0>;
501a0aa6bfeSHeiko Stuebner		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
502a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
503a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&wlan_host_wake_l>;
504a0aa6bfeSHeiko Stuebner		wakeup-source;
505a0aa6bfeSHeiko Stuebner	};
506a0aa6bfeSHeiko Stuebner};
507a0aa6bfeSHeiko Stuebner
508a0aa6bfeSHeiko Stuebner&tcphy1 {
509a0aa6bfeSHeiko Stuebner	status = "okay";
510a0aa6bfeSHeiko Stuebner	extcon = <&usbc_extcon1>;
511a0aa6bfeSHeiko Stuebner};
512a0aa6bfeSHeiko Stuebner
513a0aa6bfeSHeiko Stuebner&u2phy1 {
514a0aa6bfeSHeiko Stuebner	status = "okay";
515a0aa6bfeSHeiko Stuebner};
516a0aa6bfeSHeiko Stuebner
517a0aa6bfeSHeiko Stuebner&usb_host0_ehci {
518a0aa6bfeSHeiko Stuebner	status = "okay";
519a0aa6bfeSHeiko Stuebner};
520a0aa6bfeSHeiko Stuebner
521a0aa6bfeSHeiko Stuebner&usb_host1_ehci {
522a0aa6bfeSHeiko Stuebner	status = "okay";
523a0aa6bfeSHeiko Stuebner};
524a0aa6bfeSHeiko Stuebner
525a0aa6bfeSHeiko Stuebner&usb_host1_ohci {
526a0aa6bfeSHeiko Stuebner	status = "okay";
527a0aa6bfeSHeiko Stuebner};
528a0aa6bfeSHeiko Stuebner
529a0aa6bfeSHeiko Stuebner&usbdrd3_1 {
530a0aa6bfeSHeiko Stuebner	status = "okay";
531a0aa6bfeSHeiko Stuebner	extcon = <&usbc_extcon1>;
532a0aa6bfeSHeiko Stuebner};
533a0aa6bfeSHeiko Stuebner
534a0aa6bfeSHeiko Stuebner&usbdrd_dwc3_1 {
535a0aa6bfeSHeiko Stuebner	status = "okay";
536a0aa6bfeSHeiko Stuebner	dr_mode = "host";
537a0aa6bfeSHeiko Stuebner};
538a0aa6bfeSHeiko Stuebner
539a0aa6bfeSHeiko Stuebner&pinctrl {
540a0aa6bfeSHeiko Stuebner	discrete-regulators {
541a0aa6bfeSHeiko Stuebner		pp1500_en: pp1500-en {
542d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO
543a0aa6bfeSHeiko Stuebner					 &pcfg_pull_none>;
544a0aa6bfeSHeiko Stuebner		};
545a0aa6bfeSHeiko Stuebner
546a0aa6bfeSHeiko Stuebner		pp1800_audio_en: pp1800-audio-en {
547d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO
548a0aa6bfeSHeiko Stuebner					 &pcfg_pull_down>;
549a0aa6bfeSHeiko Stuebner		};
550a0aa6bfeSHeiko Stuebner
551a0aa6bfeSHeiko Stuebner		pp3000_en: pp3000-en {
552d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO
553a0aa6bfeSHeiko Stuebner					 &pcfg_pull_none>;
554a0aa6bfeSHeiko Stuebner		};
555a0aa6bfeSHeiko Stuebner
556a0aa6bfeSHeiko Stuebner		pp3300_disp_en: pp3300-disp-en {
557d64420e8SHeiko Stuebner			rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO
558a0aa6bfeSHeiko Stuebner					 &pcfg_pull_none>;
559a0aa6bfeSHeiko Stuebner		};
560a0aa6bfeSHeiko Stuebner
561a0aa6bfeSHeiko Stuebner		wlan_module_pd_l: wlan-module-pd-l {
562d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO
563a0aa6bfeSHeiko Stuebner					 &pcfg_pull_down>;
564a0aa6bfeSHeiko Stuebner		};
565a0aa6bfeSHeiko Stuebner	};
566a0aa6bfeSHeiko Stuebner};
567a0aa6bfeSHeiko Stuebner
568a0aa6bfeSHeiko Stuebner&wifi {
569a0aa6bfeSHeiko Stuebner	wifi_perst_l: wifi-perst-l {
570d64420e8SHeiko Stuebner		rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
571a0aa6bfeSHeiko Stuebner	};
572a0aa6bfeSHeiko Stuebner
573a0aa6bfeSHeiko Stuebner	wlan_host_wake_l: wlan-host-wake-l {
574d64420e8SHeiko Stuebner		rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
575a0aa6bfeSHeiko Stuebner	};
576a0aa6bfeSHeiko Stuebner};
577