xref: /linux/arch/arm64/boot/dts/rockchip/rk3399-gru-chromebook.dtsi (revision 115e74a29b530d121891238e9551c4bcdf7b04b5)
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/ {
115c96e633SJohan Jonker	pp900_ap: regulator-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 */
252f9eb526SHeiko Stuebner	pp900_usb: regulator-pp900-ap {
26a0aa6bfeSHeiko Stuebner	};
27a0aa6bfeSHeiko Stuebner
28a0aa6bfeSHeiko Stuebner	/* EC turns on w/ pp900_pcie_en */
292f9eb526SHeiko Stuebner	pp900_pcie: regulator-pp900-ap {
30a0aa6bfeSHeiko Stuebner	};
31a0aa6bfeSHeiko Stuebner
325c96e633SJohan Jonker	pp3000: regulator-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
495c96e633SJohan Jonker	ppvar_centerlogic_pwm: regulator-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 */
815c96e633SJohan Jonker	ppvar_logic: regulator-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
945c96e633SJohan Jonker	pp1800_audio: regulator-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 */
1105c96e633SJohan Jonker	pp1800_pcie: regulator-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 */
1292f9eb526SHeiko Stuebner	pp3000_ap: pp3000_emmc: regulator-pp3000 {
130a0aa6bfeSHeiko Stuebner	};
131a0aa6bfeSHeiko Stuebner
1325c96e633SJohan Jonker	pp1500_ap_io: regulator-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
1495c96e633SJohan Jonker	pp3300_disp: regulator-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 */
1632f9eb526SHeiko Stuebner	pp3300_usb: regulator-pp3300 {
164a0aa6bfeSHeiko Stuebner	};
165a0aa6bfeSHeiko Stuebner
166a0aa6bfeSHeiko Stuebner	/* gpio is shared with pp1800_pcie and pinctrl is set there */
1675c96e633SJohan Jonker	pp3300_wifi_bt: regulator-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	 */
1835c96e633SJohan Jonker	wlan_pd_n: regulator-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	};
2025364a0b4SBrian Norris
2035364a0b4SBrian Norris	gpio_keys: gpio-keys {
2045364a0b4SBrian Norris		compatible = "gpio-keys";
2055364a0b4SBrian Norris		pinctrl-names = "default";
2065364a0b4SBrian Norris		pinctrl-0 = <&bt_host_wake_l>;
2075364a0b4SBrian Norris
208517ed0ffSKrzysztof Kozlowski		wake_on_bt: key-wake-on-bt {
2095364a0b4SBrian Norris			label = "Wake-on-Bluetooth";
2105364a0b4SBrian Norris			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
2115364a0b4SBrian Norris			linux,code = <KEY_WAKEUP>;
2125364a0b4SBrian Norris			wakeup-source;
2135364a0b4SBrian Norris		};
2145364a0b4SBrian Norris	};
215a0aa6bfeSHeiko Stuebner};
216a0aa6bfeSHeiko Stuebner
217a0aa6bfeSHeiko Stuebner&ppvar_bigcpu {
218a0aa6bfeSHeiko Stuebner	min-slew-down-rate = <225>;
219a0aa6bfeSHeiko Stuebner	ovp-threshold-percent = <16>;
220a0aa6bfeSHeiko Stuebner};
221a0aa6bfeSHeiko Stuebner
222a0aa6bfeSHeiko Stuebner&ppvar_litcpu {
223a0aa6bfeSHeiko Stuebner	min-slew-down-rate = <225>;
224a0aa6bfeSHeiko Stuebner	ovp-threshold-percent = <16>;
225a0aa6bfeSHeiko Stuebner};
226a0aa6bfeSHeiko Stuebner
227a0aa6bfeSHeiko Stuebner&ppvar_gpu {
228a0aa6bfeSHeiko Stuebner	min-slew-down-rate = <225>;
229a0aa6bfeSHeiko Stuebner	ovp-threshold-percent = <16>;
230a0aa6bfeSHeiko Stuebner};
231a0aa6bfeSHeiko Stuebner
232a0aa6bfeSHeiko Stuebner&cdn_dp {
233a0aa6bfeSHeiko Stuebner	extcon = <&usbc_extcon0>, <&usbc_extcon1>;
234a0aa6bfeSHeiko Stuebner};
235a0aa6bfeSHeiko Stuebner
23680bc6f34SLin Huang&dmc {
23780bc6f34SLin Huang	center-supply = <&ppvar_centerlogic>;
23880bc6f34SLin Huang	rockchip,pd-idle-dis-freq-hz = <800000000>;
23980bc6f34SLin Huang	rockchip,sr-idle-dis-freq-hz = <800000000>;
24080bc6f34SLin Huang	rockchip,sr-mc-gate-idle-dis-freq-hz = <800000000>;
24180bc6f34SLin Huang};
24280bc6f34SLin Huang
243d67a38c5SHeiko Stuebner&edp {
244d67a38c5SHeiko Stuebner	status = "okay";
245d67a38c5SHeiko Stuebner
2468123437cSzain wang	/*
2478123437cSzain wang	 * eDP PHY/clk don't sync reliably at anything other than 24 MHz. Only
2488123437cSzain wang	 * set this here, because rk3399-gru.dtsi ensures we can generate this
2498123437cSzain wang	 * off GPLL=600MHz, whereas some other RK3399 boards may not.
2508123437cSzain wang	 */
2518123437cSzain wang	assigned-clocks = <&cru PCLK_EDP>;
2528123437cSzain wang	assigned-clock-rates = <24000000>;
253*25937eb0SDiederik de Haas};
2548123437cSzain wang
255*25937eb0SDiederik de Haas&edp_out {
256*25937eb0SDiederik de Haas	edp_out_panel: endpoint {
257d67a38c5SHeiko Stuebner		remote-endpoint = <&panel_in_edp>;
258d67a38c5SHeiko Stuebner	};
259d67a38c5SHeiko Stuebner};
260d67a38c5SHeiko Stuebner
261ae044309SBrian Norris&gpio0 {
262ae044309SBrian Norris	gpio-line-names = /* GPIO0 A 0-7 */
263ae044309SBrian Norris			  "AP_RTC_CLK_IN",
264ae044309SBrian Norris			  "EC_AP_INT_L",
265ae044309SBrian Norris			  "PP1800_AUDIO_EN",
266ae044309SBrian Norris			  "BT_HOST_WAKE_L",
267ae044309SBrian Norris			  "WLAN_MODULE_PD_L",
268ae044309SBrian Norris			  "H1_INT_OD_L",
269ae044309SBrian Norris			  "CENTERLOGIC_DVS_PWM",
270ae044309SBrian Norris			  "",
271ae044309SBrian Norris
272ae044309SBrian Norris			  /* GPIO0 B 0-4 */
273ae044309SBrian Norris			  "WIFI_HOST_WAKE_L",
274ae044309SBrian Norris			  "PMUIO2_33_18_L",
275ae044309SBrian Norris			  "PP1500_EN",
276ae044309SBrian Norris			  "AP_EC_WARM_RESET_REQ",
277ae044309SBrian Norris			  "PP3000_EN";
278ae044309SBrian Norris};
279ae044309SBrian Norris
280ae044309SBrian Norris&gpio1 {
281ae044309SBrian Norris	gpio-line-names = /* GPIO1 A 0-7 */
282ae044309SBrian Norris			  "",
283ae044309SBrian Norris			  "",
284ae044309SBrian Norris			  "SPK_PA_EN",
285ae044309SBrian Norris			  "",
286ae044309SBrian Norris			  "TRACKPAD_INT_L",
287ae044309SBrian Norris			  "AP_EC_S3_S0_L",
288ae044309SBrian Norris			  "AP_EC_OVERTEMP",
289ae044309SBrian Norris			  "AP_SPI_FLASH_MISO",
290ae044309SBrian Norris
291ae044309SBrian Norris			  /* GPIO1 B 0-7 */
292ae044309SBrian Norris			  "AP_SPI_FLASH_MOSI_R",
293ae044309SBrian Norris			  "AP_SPI_FLASH_CLK_R",
294ae044309SBrian Norris			  "AP_SPI_FLASH_CS_L_R",
295ae044309SBrian Norris			  "WLAN_MODULE_RESET_L",
296ae044309SBrian Norris			  "WIFI_DISABLE_L",
297ae044309SBrian Norris			  "MIC_INT",
298ae044309SBrian Norris			  "",
299ae044309SBrian Norris			  "AP_I2C_DVS_SDA",
300ae044309SBrian Norris
301ae044309SBrian Norris			  /* GPIO1 C 0-7 */
302ae044309SBrian Norris			  "AP_I2C_DVS_SCL",
303ae044309SBrian Norris			  "AP_BL_EN",
304ae044309SBrian Norris			  /*
305ae044309SBrian Norris			   * AP_FLASH_WP is crossystem ABI. Schematics call it
306ae044309SBrian Norris			   * AP_FW_WP or CPU1_FW_WP, depending on the variant.
307ae044309SBrian Norris			   */
308ae044309SBrian Norris			  "AP_FLASH_WP",
309ae044309SBrian Norris			  "LITCPU_DVS_PWM",
310ae044309SBrian Norris			  "AP_I2C_AUDIO_SDA",
311ae044309SBrian Norris			  "AP_I2C_AUDIO_SCL",
312ae044309SBrian Norris			  "",
313ae044309SBrian Norris			  "HEADSET_INT_L";
314ae044309SBrian Norris};
315ae044309SBrian Norris
316ae044309SBrian Norris&gpio2 {
317ae044309SBrian Norris	gpio-line-names = /* GPIO2 A 0-7 */
318ae044309SBrian Norris			  "",
319ae044309SBrian Norris			  "",
320ae044309SBrian Norris			  "SD_IO_PWR_EN",
321ae044309SBrian Norris			  "",
322ae044309SBrian Norris			  "",
323ae044309SBrian Norris			  "",
324ae044309SBrian Norris			  "",
325ae044309SBrian Norris			  "",
326ae044309SBrian Norris
327ae044309SBrian Norris			  /* GPIO2 B 0-7 */
328ae044309SBrian Norris			  "",
329ae044309SBrian Norris			  "",
330ae044309SBrian Norris			  "",
331ae044309SBrian Norris			  "",
332ae044309SBrian Norris			  "",
333ae044309SBrian Norris			  "",
334ae044309SBrian Norris			  "",
335ae044309SBrian Norris			  "",
336ae044309SBrian Norris
337ae044309SBrian Norris			  /* GPIO2 C 0-7 */
338ae044309SBrian Norris			  "",
339ae044309SBrian Norris			  "",
340ae044309SBrian Norris			  "",
341ae044309SBrian Norris			  "",
342ae044309SBrian Norris			  "AP_SPI_EC_MISO",
343ae044309SBrian Norris			  "AP_SPI_EC_MOSI",
344ae044309SBrian Norris			  "AP_SPI_EC_CLK",
345ae044309SBrian Norris			  "AP_SPI_EC_CS_L",
346ae044309SBrian Norris
347ae044309SBrian Norris			  /* GPIO2 D 0-4 */
348ae044309SBrian Norris			  "BT_DEV_WAKE_L",
349ae044309SBrian Norris			  "",
350ae044309SBrian Norris			  "WIFI_PCIE_CLKREQ_L",
351ae044309SBrian Norris			  "WIFI_PERST_L",
352ae044309SBrian Norris			  "SD_PWR_3000_1800_L";
353ae044309SBrian Norris};
354ae044309SBrian Norris
355ae044309SBrian Norris&gpio3 {
356ae044309SBrian Norris	gpio-line-names = /* GPIO3 A 0-7 */
357ae044309SBrian Norris			  "",
358ae044309SBrian Norris			  "",
359ae044309SBrian Norris			  "",
360ae044309SBrian Norris			  "",
361ae044309SBrian Norris			  "AP_SPI_TPM_MISO",
362ae044309SBrian Norris			  "AP_SPI_TPM_MOSI_R",
363ae044309SBrian Norris			  "AP_SPI_TPM_CLK_R",
364ae044309SBrian Norris			  "AP_SPI_TPM_CS_L_R",
365ae044309SBrian Norris
366ae044309SBrian Norris			  /* GPIO3 B 0-7 */
367ae044309SBrian Norris			  "EC_IN_RW",
368ae044309SBrian Norris			  "",
369ae044309SBrian Norris			  "AP_I2C_TP_SDA",
370ae044309SBrian Norris			  "AP_I2C_TP_SCL",
371ae044309SBrian Norris			  "AP_I2C_TP_PU_EN",
372ae044309SBrian Norris			  "TOUCH_INT_L",
373ae044309SBrian Norris			  "",
374ae044309SBrian Norris			  "",
375ae044309SBrian Norris
376ae044309SBrian Norris			  /* GPIO3 C 0-7 */
377ae044309SBrian Norris			  "",
378ae044309SBrian Norris			  "",
379ae044309SBrian Norris			  "",
380ae044309SBrian Norris			  "",
381ae044309SBrian Norris			  "",
382ae044309SBrian Norris			  "",
383ae044309SBrian Norris			  "",
384ae044309SBrian Norris			  "",
385ae044309SBrian Norris
386ae044309SBrian Norris			  /* GPIO3 D 0-7 */
387ae044309SBrian Norris			  "I2S0_SCLK",
388ae044309SBrian Norris			  "I2S0_LRCK_RX",
389ae044309SBrian Norris			  "I2S0_LRCK_TX",
390ae044309SBrian Norris			  "I2S0_SDI_0",
391ae044309SBrian Norris			  "I2S0_SDI_1",
392ae044309SBrian Norris			  "",
393ae044309SBrian Norris			  "I2S0_SDO_1",
394ae044309SBrian Norris			  "I2S0_SDO_0";
395ae044309SBrian Norris};
396ae044309SBrian Norris
397ae044309SBrian Norris&gpio4 {
398ae044309SBrian Norris	gpio-line-names = /* GPIO4 A 0-7 */
399ae044309SBrian Norris			  "I2S_MCLK",
400ae044309SBrian Norris			  "AP_I2C_MIC_SDA",
401ae044309SBrian Norris			  "AP_I2C_MIC_SCL",
402ae044309SBrian Norris			  "",
403ae044309SBrian Norris			  "",
404ae044309SBrian Norris			  "",
405ae044309SBrian Norris			  "",
406ae044309SBrian Norris			  "",
407ae044309SBrian Norris
408ae044309SBrian Norris			  /* GPIO4 B 0-7 */
409ae044309SBrian Norris			  "",
410ae044309SBrian Norris			  "",
411ae044309SBrian Norris			  "",
412ae044309SBrian Norris			  "",
413ae044309SBrian Norris			  "",
414ae044309SBrian Norris			  "",
415ae044309SBrian Norris			  "",
416ae044309SBrian Norris			  "",
417ae044309SBrian Norris
418ae044309SBrian Norris			  /* GPIO4 C 0-7 */
419ae044309SBrian Norris			  "AP_I2C_TS_SDA",
420ae044309SBrian Norris			  "AP_I2C_TS_SCL",
421ae044309SBrian Norris			  "GPU_DVS_PWM",
422ae044309SBrian Norris			  "UART_DBG_TX_AP_RX",
423ae044309SBrian Norris			  "UART_AP_TX_DBG_RX",
424ae044309SBrian Norris			  "",
425ae044309SBrian Norris			  "BIGCPU_DVS_PWM",
426ae044309SBrian Norris			  "EDP_HPD_3V0",
427ae044309SBrian Norris
428ae044309SBrian Norris			  /* GPIO4 D 0-5 */
429ae044309SBrian Norris			  "SD_CARD_DET_L",
430ae044309SBrian Norris			  "USB_DP_HPD",
431ae044309SBrian Norris			  "TOUCH_RESET_L",
432ae044309SBrian Norris			  "PP3300_DISP_EN",
433ae044309SBrian Norris			  "",
434ae044309SBrian Norris			  "SD_SLOT_PWR_EN";
435ae044309SBrian Norris};
436ae044309SBrian Norris
437a0aa6bfeSHeiko Stuebnerap_i2c_mic: &i2c1 {
438a0aa6bfeSHeiko Stuebner	status = "okay";
439a0aa6bfeSHeiko Stuebner
440a0aa6bfeSHeiko Stuebner	clock-frequency = <400000>;
441a0aa6bfeSHeiko Stuebner
442a0aa6bfeSHeiko Stuebner	/* These are relatively safe rise/fall times */
443a0aa6bfeSHeiko Stuebner	i2c-scl-falling-time-ns = <50>;
444a0aa6bfeSHeiko Stuebner	i2c-scl-rising-time-ns = <300>;
445a0aa6bfeSHeiko Stuebner
446a0aa6bfeSHeiko Stuebner	headsetcodec: rt5514@57 {
447a0aa6bfeSHeiko Stuebner		compatible = "realtek,rt5514";
448a0aa6bfeSHeiko Stuebner		reg = <0x57>;
449a0aa6bfeSHeiko Stuebner		realtek,dmic-init-delay-ms = <20>;
450a0aa6bfeSHeiko Stuebner	};
451a0aa6bfeSHeiko Stuebner};
452a0aa6bfeSHeiko Stuebner
453a0aa6bfeSHeiko Stuebnerap_i2c_tp: &i2c5 {
454a0aa6bfeSHeiko Stuebner	status = "okay";
455a0aa6bfeSHeiko Stuebner
456a0aa6bfeSHeiko Stuebner	clock-frequency = <400000>;
457a0aa6bfeSHeiko Stuebner
458a0aa6bfeSHeiko Stuebner	/* These are relatively safe rise/fall times */
459a0aa6bfeSHeiko Stuebner	i2c-scl-falling-time-ns = <50>;
460a0aa6bfeSHeiko Stuebner	i2c-scl-rising-time-ns = <300>;
461a0aa6bfeSHeiko Stuebner
462a0aa6bfeSHeiko Stuebner	/*
463a0aa6bfeSHeiko Stuebner	 * Note strange pullup enable.  Apparently this avoids leakage but
464a0aa6bfeSHeiko Stuebner	 * still allows us to get nice 4.7K pullups for high speed i2c
465a0aa6bfeSHeiko Stuebner	 * transfers.  Basically we want the pullup on whenever the ap is
466a0aa6bfeSHeiko Stuebner	 * alive, so the "en" pin just gets set to output high.
467a0aa6bfeSHeiko Stuebner	 */
468a0aa6bfeSHeiko Stuebner	pinctrl-0 = <&i2c5_xfer &ap_i2c_tp_pu_en>;
469a0aa6bfeSHeiko Stuebner};
470a0aa6bfeSHeiko Stuebner
471a0aa6bfeSHeiko Stuebner&cros_ec {
472a0024f55SKrzysztof Kozlowski	cros_ec_pwm: pwm {
473a0aa6bfeSHeiko Stuebner		compatible = "google,cros-ec-pwm";
474a0aa6bfeSHeiko Stuebner		#pwm-cells = <1>;
475a0aa6bfeSHeiko Stuebner	};
476a0aa6bfeSHeiko Stuebner
4776f7e1c19SEnric Balletbo i Serra	usbc_extcon1: extcon1 {
478a0aa6bfeSHeiko Stuebner		compatible = "google,extcon-usbc-cros-ec";
479a0aa6bfeSHeiko Stuebner		google,usb-port-id = <1>;
480a0aa6bfeSHeiko Stuebner	};
481a0aa6bfeSHeiko Stuebner};
482a0aa6bfeSHeiko Stuebner
483a0aa6bfeSHeiko Stuebner&sound {
484a0aa6bfeSHeiko Stuebner	rockchip,codec = <&max98357a &headsetcodec
485a0aa6bfeSHeiko Stuebner			  &codec &wacky_spi_audio &cdn_dp>;
486a0aa6bfeSHeiko Stuebner};
487a0aa6bfeSHeiko Stuebner
488a0aa6bfeSHeiko Stuebner&spi2 {
489a0aa6bfeSHeiko Stuebner	wacky_spi_audio: spi2@0 {
490a0aa6bfeSHeiko Stuebner		compatible = "realtek,rt5514";
491a0aa6bfeSHeiko Stuebner		reg = <0>;
492a0aa6bfeSHeiko Stuebner		interrupt-parent = <&gpio1>;
493a0aa6bfeSHeiko Stuebner		interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
494a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
495a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&mic_int>;
496a0aa6bfeSHeiko Stuebner		/* May run faster once verified. */
497a0aa6bfeSHeiko Stuebner		spi-max-frequency = <10000000>;
498a0aa6bfeSHeiko Stuebner		wakeup-source;
499a0aa6bfeSHeiko Stuebner	};
500a0aa6bfeSHeiko Stuebner};
501a0aa6bfeSHeiko Stuebner
502a0aa6bfeSHeiko Stuebner&pci_rootport {
503a0aa6bfeSHeiko Stuebner	mvl_wifi: wifi@0,0 {
504a0aa6bfeSHeiko Stuebner		compatible = "pci1b4b,2b42";
505c13c823aSRob Herring		reg = <0x0000 0x0 0x0 0x0 0x0>;
506a0aa6bfeSHeiko Stuebner		interrupt-parent = <&gpio0>;
507a0aa6bfeSHeiko Stuebner		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
508a0aa6bfeSHeiko Stuebner		pinctrl-names = "default";
509a0aa6bfeSHeiko Stuebner		pinctrl-0 = <&wlan_host_wake_l>;
510a0aa6bfeSHeiko Stuebner		wakeup-source;
511a0aa6bfeSHeiko Stuebner	};
512a0aa6bfeSHeiko Stuebner};
513a0aa6bfeSHeiko Stuebner
514a0aa6bfeSHeiko Stuebner&tcphy1 {
515a0aa6bfeSHeiko Stuebner	status = "okay";
516a0aa6bfeSHeiko Stuebner	extcon = <&usbc_extcon1>;
517a0aa6bfeSHeiko Stuebner};
518a0aa6bfeSHeiko Stuebner
519a0aa6bfeSHeiko Stuebner&u2phy1 {
520a0aa6bfeSHeiko Stuebner	status = "okay";
521a0aa6bfeSHeiko Stuebner};
522a0aa6bfeSHeiko Stuebner
523a0aa6bfeSHeiko Stuebner&usb_host0_ehci {
524a0aa6bfeSHeiko Stuebner	status = "okay";
525a0aa6bfeSHeiko Stuebner};
526a0aa6bfeSHeiko Stuebner
527a0aa6bfeSHeiko Stuebner&usb_host1_ehci {
528a0aa6bfeSHeiko Stuebner	status = "okay";
529a0aa6bfeSHeiko Stuebner};
530a0aa6bfeSHeiko Stuebner
531a0aa6bfeSHeiko Stuebner&usb_host1_ohci {
532a0aa6bfeSHeiko Stuebner	status = "okay";
533a0aa6bfeSHeiko Stuebner};
534a0aa6bfeSHeiko Stuebner
535a0aa6bfeSHeiko Stuebner&usbdrd3_1 {
536a0aa6bfeSHeiko Stuebner	status = "okay";
537a0aa6bfeSHeiko Stuebner	extcon = <&usbc_extcon1>;
538a0aa6bfeSHeiko Stuebner};
539a0aa6bfeSHeiko Stuebner
540a0aa6bfeSHeiko Stuebner&usbdrd_dwc3_1 {
541a0aa6bfeSHeiko Stuebner	status = "okay";
542a0aa6bfeSHeiko Stuebner	dr_mode = "host";
543a0aa6bfeSHeiko Stuebner};
544a0aa6bfeSHeiko Stuebner
545a0aa6bfeSHeiko Stuebner&pinctrl {
5465c96e633SJohan Jonker	discretes {
547a0aa6bfeSHeiko Stuebner		pp1500_en: pp1500-en {
548d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO
549a0aa6bfeSHeiko Stuebner					 &pcfg_pull_none>;
550a0aa6bfeSHeiko Stuebner		};
551a0aa6bfeSHeiko Stuebner
552a0aa6bfeSHeiko Stuebner		pp1800_audio_en: pp1800-audio-en {
553d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO
554a0aa6bfeSHeiko Stuebner					 &pcfg_pull_down>;
555a0aa6bfeSHeiko Stuebner		};
556a0aa6bfeSHeiko Stuebner
557a0aa6bfeSHeiko Stuebner		pp3000_en: pp3000-en {
558d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO
559a0aa6bfeSHeiko Stuebner					 &pcfg_pull_none>;
560a0aa6bfeSHeiko Stuebner		};
561a0aa6bfeSHeiko Stuebner
562a0aa6bfeSHeiko Stuebner		pp3300_disp_en: pp3300-disp-en {
563d64420e8SHeiko Stuebner			rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO
564a0aa6bfeSHeiko Stuebner					 &pcfg_pull_none>;
565a0aa6bfeSHeiko Stuebner		};
566a0aa6bfeSHeiko Stuebner
567a0aa6bfeSHeiko Stuebner		wlan_module_pd_l: wlan-module-pd-l {
568d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO
569a0aa6bfeSHeiko Stuebner					 &pcfg_pull_down>;
570a0aa6bfeSHeiko Stuebner		};
571a0aa6bfeSHeiko Stuebner	};
572a0aa6bfeSHeiko Stuebner};
573a0aa6bfeSHeiko Stuebner
574a0aa6bfeSHeiko Stuebner&wifi {
575a0aa6bfeSHeiko Stuebner	wifi_perst_l: wifi-perst-l {
576d64420e8SHeiko Stuebner		rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
577a0aa6bfeSHeiko Stuebner	};
578a0aa6bfeSHeiko Stuebner
579a0aa6bfeSHeiko Stuebner	wlan_host_wake_l: wlan-host-wake-l {
580e5467359SBrian Norris		/* Kevin has an external pull up, but Bob does not */
581d64420e8SHeiko Stuebner		rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
582a0aa6bfeSHeiko Stuebner	};
583a0aa6bfeSHeiko Stuebner};
584