1e7a09590STomeu Vizoso// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2e7a09590STomeu Vizoso/*
3e7a09590STomeu Vizoso * RK3399-based FriendlyElec boards device tree source
4e7a09590STomeu Vizoso *
5e7a09590STomeu Vizoso * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
6e7a09590STomeu Vizoso *
7e7a09590STomeu Vizoso * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd.
8e7a09590STomeu Vizoso * (http://www.friendlyarm.com)
9e7a09590STomeu Vizoso *
10e7a09590STomeu Vizoso * Copyright (c) 2018 Collabora Ltd.
11e7a09590STomeu Vizoso * Copyright (c) 2019 Arm Ltd.
12e7a09590STomeu Vizoso */
13e7a09590STomeu Vizoso
14e7a09590STomeu Vizoso/dts-v1/;
15e7a09590STomeu Vizoso#include <dt-bindings/input/linux-event-codes.h>
16e7a09590STomeu Vizoso#include "rk3399.dtsi"
17e7a09590STomeu Vizoso#include "rk3399-opp.dtsi"
18e7a09590STomeu Vizoso
19e7a09590STomeu Vizoso/ {
20e7a09590STomeu Vizoso	chosen {
21e7a09590STomeu Vizoso		stdout-path = "serial2:1500000n8";
22e7a09590STomeu Vizoso	};
23e7a09590STomeu Vizoso
24e7a09590STomeu Vizoso	clkin_gmac: external-gmac-clock {
25e7a09590STomeu Vizoso		compatible = "fixed-clock";
26e7a09590STomeu Vizoso		clock-frequency = <125000000>;
27e7a09590STomeu Vizoso		clock-output-names = "clkin_gmac";
28e7a09590STomeu Vizoso		#clock-cells = <0>;
29e7a09590STomeu Vizoso	};
30e7a09590STomeu Vizoso
31e7a09590STomeu Vizoso	vcc3v3_sys: vcc3v3-sys {
32e7a09590STomeu Vizoso		compatible = "regulator-fixed";
33e7a09590STomeu Vizoso		regulator-always-on;
34e7a09590STomeu Vizoso		regulator-boot-on;
35e7a09590STomeu Vizoso		regulator-min-microvolt = <3300000>;
36e7a09590STomeu Vizoso		regulator-max-microvolt = <3300000>;
37e7a09590STomeu Vizoso		regulator-name = "vcc3v3_sys";
38e7a09590STomeu Vizoso	};
39e7a09590STomeu Vizoso
40e7a09590STomeu Vizoso	vcc5v0_sys: vcc5v0-sys {
41e7a09590STomeu Vizoso		compatible = "regulator-fixed";
42e7a09590STomeu Vizoso		regulator-always-on;
43e7a09590STomeu Vizoso		regulator-boot-on;
44e7a09590STomeu Vizoso		regulator-min-microvolt = <5000000>;
45e7a09590STomeu Vizoso		regulator-max-microvolt = <5000000>;
46e7a09590STomeu Vizoso		regulator-name = "vcc5v0_sys";
47e7a09590STomeu Vizoso		vin-supply = <&vdd_5v>;
48e7a09590STomeu Vizoso	};
49e7a09590STomeu Vizoso
50e7a09590STomeu Vizoso	/* switched by pmic_sleep */
51876816b2SRobin Murphy	vcc1v8_s3: vcc1v8-s3 {
52e7a09590STomeu Vizoso		compatible = "regulator-fixed";
53e7a09590STomeu Vizoso		regulator-always-on;
54e7a09590STomeu Vizoso		regulator-boot-on;
55e7a09590STomeu Vizoso		regulator-min-microvolt = <1800000>;
56e7a09590STomeu Vizoso		regulator-max-microvolt = <1800000>;
57e7a09590STomeu Vizoso		regulator-name = "vcc1v8_s3";
58e7a09590STomeu Vizoso		vin-supply = <&vcc_1v8>;
59e7a09590STomeu Vizoso	};
60e7a09590STomeu Vizoso
61e7a09590STomeu Vizoso	vcc3v0_sd: vcc3v0-sd {
62e7a09590STomeu Vizoso		compatible = "regulator-fixed";
63e7a09590STomeu Vizoso		enable-active-high;
64e7a09590STomeu Vizoso		gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
65e7a09590STomeu Vizoso		pinctrl-names = "default";
66e7a09590STomeu Vizoso		pinctrl-0 = <&sdmmc0_pwr_h>;
67e7a09590STomeu Vizoso		regulator-always-on;
68e7a09590STomeu Vizoso		regulator-min-microvolt = <3000000>;
69e7a09590STomeu Vizoso		regulator-max-microvolt = <3000000>;
70e7a09590STomeu Vizoso		regulator-name = "vcc3v0_sd";
71e7a09590STomeu Vizoso		vin-supply = <&vcc3v3_sys>;
72e7a09590STomeu Vizoso	};
73e7a09590STomeu Vizoso
74876816b2SRobin Murphy	/*
75876816b2SRobin Murphy	 * Really, this is supplied by vcc_1v8, and vcc1v8_s3 only
76876816b2SRobin Murphy	 * drives the enable pin, but we can't quite model that.
77876816b2SRobin Murphy	 */
78876816b2SRobin Murphy	vcca0v9_s3: vcca0v9-s3 {
79876816b2SRobin Murphy		compatible = "regulator-fixed";
80876816b2SRobin Murphy		regulator-min-microvolt = <900000>;
81876816b2SRobin Murphy		regulator-max-microvolt = <900000>;
82876816b2SRobin Murphy		regulator-name = "vcca0v9_s3";
83876816b2SRobin Murphy		vin-supply = <&vcc1v8_s3>;
84876816b2SRobin Murphy	};
85876816b2SRobin Murphy
86876816b2SRobin Murphy	/* As above, actually supplied by vcc3v3_sys */
87876816b2SRobin Murphy	vcca1v8_s3: vcca1v8-s3 {
88876816b2SRobin Murphy		compatible = "regulator-fixed";
89876816b2SRobin Murphy		regulator-min-microvolt = <1800000>;
90876816b2SRobin Murphy		regulator-max-microvolt = <1800000>;
91876816b2SRobin Murphy		regulator-name = "vcca1v8_s3";
92876816b2SRobin Murphy		vin-supply = <&vcc1v8_s3>;
93876816b2SRobin Murphy	};
94876816b2SRobin Murphy
95e7a09590STomeu Vizoso	vbus_typec: vbus-typec {
96e7a09590STomeu Vizoso		compatible = "regulator-fixed";
97e7a09590STomeu Vizoso		regulator-min-microvolt = <5000000>;
98e7a09590STomeu Vizoso		regulator-max-microvolt = <5000000>;
99e7a09590STomeu Vizoso		regulator-name = "vbus_typec";
100e7a09590STomeu Vizoso	};
101e7a09590STomeu Vizoso
102e7a09590STomeu Vizoso	gpio-keys {
103e7a09590STomeu Vizoso		compatible = "gpio-keys";
104e7a09590STomeu Vizoso		autorepeat;
105e7a09590STomeu Vizoso		pinctrl-names = "default";
106e7a09590STomeu Vizoso		pinctrl-0 = <&power_key>;
107e7a09590STomeu Vizoso
108e7a09590STomeu Vizoso		power {
109e7a09590STomeu Vizoso			debounce-interval = <100>;
110e7a09590STomeu Vizoso			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
111e7a09590STomeu Vizoso			label = "GPIO Key Power";
112e7a09590STomeu Vizoso			linux,code = <KEY_POWER>;
113e7a09590STomeu Vizoso			wakeup-source;
114e7a09590STomeu Vizoso		};
115e7a09590STomeu Vizoso	};
116e7a09590STomeu Vizoso
117e7a09590STomeu Vizoso	leds: gpio-leds {
118e7a09590STomeu Vizoso		compatible = "gpio-leds";
119e7a09590STomeu Vizoso		pinctrl-names = "default";
120e7a09590STomeu Vizoso		pinctrl-0 = <&leds_gpio>;
121e7a09590STomeu Vizoso
122e7a09590STomeu Vizoso		status {
123e7a09590STomeu Vizoso			gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
124e7a09590STomeu Vizoso			label = "status_led";
125e7a09590STomeu Vizoso			linux,default-trigger = "heartbeat";
126e7a09590STomeu Vizoso		};
127e7a09590STomeu Vizoso	};
128e7a09590STomeu Vizoso
129e7a09590STomeu Vizoso	sdio_pwrseq: sdio-pwrseq {
130e7a09590STomeu Vizoso		compatible = "mmc-pwrseq-simple";
131e7a09590STomeu Vizoso		clocks = <&rk808 1>;
132e7a09590STomeu Vizoso		clock-names = "ext_clock";
133e7a09590STomeu Vizoso		pinctrl-names = "default";
134e7a09590STomeu Vizoso		pinctrl-0 = <&wifi_reg_on_h>;
135e7a09590STomeu Vizoso		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
136e7a09590STomeu Vizoso	};
137e7a09590STomeu Vizoso};
138e7a09590STomeu Vizoso
139e7a09590STomeu Vizoso&cpu_b0 {
140e7a09590STomeu Vizoso	cpu-supply = <&vdd_cpu_b>;
141e7a09590STomeu Vizoso};
142e7a09590STomeu Vizoso
143e7a09590STomeu Vizoso&cpu_b1 {
144e7a09590STomeu Vizoso	cpu-supply = <&vdd_cpu_b>;
145e7a09590STomeu Vizoso};
146e7a09590STomeu Vizoso
147e7a09590STomeu Vizoso&cpu_l0 {
148e7a09590STomeu Vizoso	cpu-supply = <&vdd_cpu_l>;
149e7a09590STomeu Vizoso};
150e7a09590STomeu Vizoso
151e7a09590STomeu Vizoso&cpu_l1 {
152e7a09590STomeu Vizoso	cpu-supply = <&vdd_cpu_l>;
153e7a09590STomeu Vizoso};
154e7a09590STomeu Vizoso
155e7a09590STomeu Vizoso&cpu_l2 {
156e7a09590STomeu Vizoso	cpu-supply = <&vdd_cpu_l>;
157e7a09590STomeu Vizoso};
158e7a09590STomeu Vizoso
159e7a09590STomeu Vizoso&cpu_l3 {
160e7a09590STomeu Vizoso	cpu-supply = <&vdd_cpu_l>;
161e7a09590STomeu Vizoso};
162e7a09590STomeu Vizoso
163e7a09590STomeu Vizoso&emmc_phy {
164e7a09590STomeu Vizoso	status = "okay";
165e7a09590STomeu Vizoso};
166e7a09590STomeu Vizoso
167e7a09590STomeu Vizoso&gmac {
168e7a09590STomeu Vizoso	assigned-clock-parents = <&clkin_gmac>;
169e7a09590STomeu Vizoso	assigned-clocks = <&cru SCLK_RMII_SRC>;
170e7a09590STomeu Vizoso	clock_in_out = "input";
171e7a09590STomeu Vizoso	pinctrl-names = "default";
1721a4e6203SRobin Murphy	pinctrl-0 = <&rgmii_pins>, <&phy_intb>, <&phy_rstb>;
1731a4e6203SRobin Murphy	phy-handle = <&rtl8211e>;
174e7a09590STomeu Vizoso	phy-mode = "rgmii";
175e7a09590STomeu Vizoso	phy-supply = <&vcc3v3_s3>;
176e7a09590STomeu Vizoso	tx_delay = <0x28>;
177e7a09590STomeu Vizoso	rx_delay = <0x11>;
178e7a09590STomeu Vizoso	status = "okay";
1791a4e6203SRobin Murphy
1801a4e6203SRobin Murphy	mdio {
1811a4e6203SRobin Murphy		compatible = "snps,dwmac-mdio";
1821a4e6203SRobin Murphy		#address-cells = <1>;
1831a4e6203SRobin Murphy		#size-cells = <0>;
1841a4e6203SRobin Murphy
185b450d1c5SJohan Jonker		rtl8211e: ethernet-phy@1 {
1861a4e6203SRobin Murphy			reg = <1>;
1871a4e6203SRobin Murphy			interrupt-parent = <&gpio3>;
1881a4e6203SRobin Murphy			interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
189bc43cee8SRobin Murphy			reset-assert-us = <10000>;
190bc43cee8SRobin Murphy			reset-deassert-us = <30000>;
191bc43cee8SRobin Murphy			reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
1921a4e6203SRobin Murphy		};
1931a4e6203SRobin Murphy	};
194e7a09590STomeu Vizoso};
195e7a09590STomeu Vizoso
196e7a09590STomeu Vizoso&gpu {
197e7a09590STomeu Vizoso	mali-supply = <&vdd_gpu>;
198e7a09590STomeu Vizoso	status = "okay";
199e7a09590STomeu Vizoso};
200e7a09590STomeu Vizoso
201e7a09590STomeu Vizoso&hdmi {
202e7a09590STomeu Vizoso	ddc-i2c-bus = <&i2c7>;
203e7a09590STomeu Vizoso	pinctrl-names = "default";
204e7a09590STomeu Vizoso	pinctrl-0 = <&hdmi_cec>;
205e7a09590STomeu Vizoso	status = "okay";
206e7a09590STomeu Vizoso};
207e7a09590STomeu Vizoso
208f94ffd95SRobin Murphy&hdmi_sound {
209f94ffd95SRobin Murphy	status = "okay";
210f94ffd95SRobin Murphy};
211f94ffd95SRobin Murphy
212e7a09590STomeu Vizoso&i2c0 {
213e7a09590STomeu Vizoso	clock-frequency = <400000>;
214e7a09590STomeu Vizoso	i2c-scl-rising-time-ns = <160>;
215e7a09590STomeu Vizoso	i2c-scl-falling-time-ns = <30>;
216e7a09590STomeu Vizoso	status = "okay";
217e7a09590STomeu Vizoso
218e7a09590STomeu Vizoso	vdd_cpu_b: regulator@40 {
219e7a09590STomeu Vizoso		compatible = "silergy,syr827";
220e7a09590STomeu Vizoso		reg = <0x40>;
221e7a09590STomeu Vizoso		fcs,suspend-voltage-selector = <1>;
222e7a09590STomeu Vizoso		pinctrl-names = "default";
223e7a09590STomeu Vizoso		pinctrl-0 = <&cpu_b_sleep>;
224e7a09590STomeu Vizoso		regulator-always-on;
225e7a09590STomeu Vizoso		regulator-boot-on;
226e7a09590STomeu Vizoso		regulator-min-microvolt = <712500>;
227e7a09590STomeu Vizoso		regulator-max-microvolt = <1500000>;
228e7a09590STomeu Vizoso		regulator-name = "vdd_cpu_b";
229e7a09590STomeu Vizoso		regulator-ramp-delay = <1000>;
230e7a09590STomeu Vizoso		vin-supply = <&vcc3v3_sys>;
231e7a09590STomeu Vizoso
232e7a09590STomeu Vizoso		regulator-state-mem {
233e7a09590STomeu Vizoso			regulator-off-in-suspend;
234e7a09590STomeu Vizoso		};
235e7a09590STomeu Vizoso	};
236e7a09590STomeu Vizoso
237e7a09590STomeu Vizoso	vdd_gpu: regulator@41 {
238e7a09590STomeu Vizoso		compatible = "silergy,syr828";
239e7a09590STomeu Vizoso		reg = <0x41>;
240e7a09590STomeu Vizoso		fcs,suspend-voltage-selector = <1>;
241e7a09590STomeu Vizoso		pinctrl-names = "default";
242e7a09590STomeu Vizoso		pinctrl-0 = <&gpu_sleep>;
243e7a09590STomeu Vizoso		regulator-always-on;
244e7a09590STomeu Vizoso		regulator-boot-on;
245e7a09590STomeu Vizoso		regulator-min-microvolt = <712500>;
246e7a09590STomeu Vizoso		regulator-max-microvolt = <1500000>;
247e7a09590STomeu Vizoso		regulator-name = "vdd_gpu";
248e7a09590STomeu Vizoso		regulator-ramp-delay = <1000>;
249e7a09590STomeu Vizoso		vin-supply = <&vcc3v3_sys>;
250e7a09590STomeu Vizoso
251e7a09590STomeu Vizoso		regulator-state-mem {
252e7a09590STomeu Vizoso			regulator-off-in-suspend;
253e7a09590STomeu Vizoso		};
254e7a09590STomeu Vizoso	};
255e7a09590STomeu Vizoso
256e7a09590STomeu Vizoso	rk808: pmic@1b {
257e7a09590STomeu Vizoso		compatible = "rockchip,rk808";
258e7a09590STomeu Vizoso		reg = <0x1b>;
2593e2f0bb7SRobin Murphy		clock-output-names = "xin32k", "rtc_clko_wifi";
260e7a09590STomeu Vizoso		#clock-cells = <1>;
261e7a09590STomeu Vizoso		interrupt-parent = <&gpio1>;
262e7a09590STomeu Vizoso		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
263e7a09590STomeu Vizoso		pinctrl-names = "default";
264e7a09590STomeu Vizoso		pinctrl-0 = <&pmic_int_l>;
265e7a09590STomeu Vizoso		rockchip,system-power-controller;
266e7a09590STomeu Vizoso		wakeup-source;
267e7a09590STomeu Vizoso
268e7a09590STomeu Vizoso		vcc1-supply = <&vcc3v3_sys>;
269e7a09590STomeu Vizoso		vcc2-supply = <&vcc3v3_sys>;
270e7a09590STomeu Vizoso		vcc3-supply = <&vcc3v3_sys>;
271e7a09590STomeu Vizoso		vcc4-supply = <&vcc3v3_sys>;
272e7a09590STomeu Vizoso		vcc6-supply = <&vcc3v3_sys>;
273e7a09590STomeu Vizoso		vcc7-supply = <&vcc3v3_sys>;
274e7a09590STomeu Vizoso		vcc8-supply = <&vcc3v3_sys>;
275e7a09590STomeu Vizoso		vcc9-supply = <&vcc3v3_sys>;
276e7a09590STomeu Vizoso		vcc10-supply = <&vcc3v3_sys>;
277e7a09590STomeu Vizoso		vcc11-supply = <&vcc3v3_sys>;
278e7a09590STomeu Vizoso		vcc12-supply = <&vcc3v3_sys>;
279e7a09590STomeu Vizoso		vddio-supply = <&vcc_3v0>;
280e7a09590STomeu Vizoso
281e7a09590STomeu Vizoso		regulators {
282e7a09590STomeu Vizoso			vdd_center: DCDC_REG1 {
283e7a09590STomeu Vizoso				regulator-always-on;
284e7a09590STomeu Vizoso				regulator-boot-on;
285e7a09590STomeu Vizoso				regulator-min-microvolt = <750000>;
286e7a09590STomeu Vizoso				regulator-max-microvolt = <1350000>;
287e7a09590STomeu Vizoso				regulator-name = "vdd_center";
288e7a09590STomeu Vizoso				regulator-ramp-delay = <6001>;
289e7a09590STomeu Vizoso
290e7a09590STomeu Vizoso				regulator-state-mem {
291e7a09590STomeu Vizoso					regulator-off-in-suspend;
292e7a09590STomeu Vizoso				};
293e7a09590STomeu Vizoso			};
294e7a09590STomeu Vizoso
295e7a09590STomeu Vizoso			vdd_cpu_l: DCDC_REG2 {
296e7a09590STomeu Vizoso				regulator-always-on;
297e7a09590STomeu Vizoso				regulator-boot-on;
298e7a09590STomeu Vizoso				regulator-min-microvolt = <750000>;
299e7a09590STomeu Vizoso				regulator-max-microvolt = <1350000>;
300e7a09590STomeu Vizoso				regulator-name = "vdd_cpu_l";
301e7a09590STomeu Vizoso				regulator-ramp-delay = <6001>;
302e7a09590STomeu Vizoso
303e7a09590STomeu Vizoso				regulator-state-mem {
304e7a09590STomeu Vizoso					regulator-off-in-suspend;
305e7a09590STomeu Vizoso				};
306e7a09590STomeu Vizoso			};
307e7a09590STomeu Vizoso
308e7a09590STomeu Vizoso			vcc_ddr: DCDC_REG3 {
309e7a09590STomeu Vizoso				regulator-always-on;
310e7a09590STomeu Vizoso				regulator-boot-on;
311e7a09590STomeu Vizoso				regulator-name = "vcc_ddr";
312e7a09590STomeu Vizoso
313e7a09590STomeu Vizoso				regulator-state-mem {
314e7a09590STomeu Vizoso					regulator-on-in-suspend;
315e7a09590STomeu Vizoso				};
316e7a09590STomeu Vizoso			};
317e7a09590STomeu Vizoso
318e7a09590STomeu Vizoso			vcc_1v8: DCDC_REG4 {
319e7a09590STomeu Vizoso				regulator-always-on;
320e7a09590STomeu Vizoso				regulator-boot-on;
321e7a09590STomeu Vizoso				regulator-min-microvolt = <1800000>;
322e7a09590STomeu Vizoso				regulator-max-microvolt = <1800000>;
323e7a09590STomeu Vizoso				regulator-name = "vcc_1v8";
324e7a09590STomeu Vizoso
325e7a09590STomeu Vizoso				regulator-state-mem {
326e7a09590STomeu Vizoso					regulator-on-in-suspend;
327e7a09590STomeu Vizoso					regulator-suspend-microvolt = <1800000>;
328e7a09590STomeu Vizoso				};
329e7a09590STomeu Vizoso			};
330e7a09590STomeu Vizoso
331e7a09590STomeu Vizoso			vcc1v8_cam: LDO_REG1 {
332e7a09590STomeu Vizoso				regulator-always-on;
333e7a09590STomeu Vizoso				regulator-boot-on;
334e7a09590STomeu Vizoso				regulator-min-microvolt = <1800000>;
335e7a09590STomeu Vizoso				regulator-max-microvolt = <1800000>;
336e7a09590STomeu Vizoso				regulator-name = "vcc1v8_cam";
337e7a09590STomeu Vizoso
338e7a09590STomeu Vizoso				regulator-state-mem {
339e7a09590STomeu Vizoso					regulator-off-in-suspend;
340e7a09590STomeu Vizoso				};
341e7a09590STomeu Vizoso			};
342e7a09590STomeu Vizoso
343e7a09590STomeu Vizoso			vcc3v0_touch: LDO_REG2 {
344e7a09590STomeu Vizoso				regulator-always-on;
345e7a09590STomeu Vizoso				regulator-boot-on;
346e7a09590STomeu Vizoso				regulator-min-microvolt = <3000000>;
347e7a09590STomeu Vizoso				regulator-max-microvolt = <3000000>;
348e7a09590STomeu Vizoso				regulator-name = "vcc3v0_touch";
349e7a09590STomeu Vizoso
350e7a09590STomeu Vizoso				regulator-state-mem {
351e7a09590STomeu Vizoso					regulator-off-in-suspend;
352e7a09590STomeu Vizoso				};
353e7a09590STomeu Vizoso			};
354e7a09590STomeu Vizoso
355e7a09590STomeu Vizoso			vcc1v8_pmupll: LDO_REG3 {
356e7a09590STomeu Vizoso				regulator-always-on;
357e7a09590STomeu Vizoso				regulator-boot-on;
358e7a09590STomeu Vizoso				regulator-min-microvolt = <1800000>;
359e7a09590STomeu Vizoso				regulator-max-microvolt = <1800000>;
360e7a09590STomeu Vizoso				regulator-name = "vcc1v8_pmupll";
361e7a09590STomeu Vizoso
362e7a09590STomeu Vizoso				regulator-state-mem {
363e7a09590STomeu Vizoso					regulator-on-in-suspend;
364e7a09590STomeu Vizoso					regulator-suspend-microvolt = <1800000>;
365e7a09590STomeu Vizoso				};
366e7a09590STomeu Vizoso			};
367e7a09590STomeu Vizoso
368e7a09590STomeu Vizoso			vcc_sdio: LDO_REG4 {
369e7a09590STomeu Vizoso				regulator-always-on;
370e7a09590STomeu Vizoso				regulator-boot-on;
371e7a09590STomeu Vizoso				regulator-init-microvolt = <3000000>;
372e7a09590STomeu Vizoso				regulator-min-microvolt = <1800000>;
373e7a09590STomeu Vizoso				regulator-max-microvolt = <3300000>;
374e7a09590STomeu Vizoso				regulator-name = "vcc_sdio";
375e7a09590STomeu Vizoso
376e7a09590STomeu Vizoso				regulator-state-mem {
377e7a09590STomeu Vizoso					regulator-on-in-suspend;
378e7a09590STomeu Vizoso					regulator-suspend-microvolt = <3000000>;
379e7a09590STomeu Vizoso				};
380e7a09590STomeu Vizoso			};
381e7a09590STomeu Vizoso
382e7a09590STomeu Vizoso			vcca3v0_codec: LDO_REG5 {
383e7a09590STomeu Vizoso				regulator-always-on;
384e7a09590STomeu Vizoso				regulator-boot-on;
385e7a09590STomeu Vizoso				regulator-min-microvolt = <3000000>;
386e7a09590STomeu Vizoso				regulator-max-microvolt = <3000000>;
387e7a09590STomeu Vizoso				regulator-name = "vcca3v0_codec";
388e7a09590STomeu Vizoso
389e7a09590STomeu Vizoso				regulator-state-mem {
390e7a09590STomeu Vizoso					regulator-off-in-suspend;
391e7a09590STomeu Vizoso				};
392e7a09590STomeu Vizoso			};
393e7a09590STomeu Vizoso
394e7a09590STomeu Vizoso			vcc_1v5: LDO_REG6 {
395e7a09590STomeu Vizoso				regulator-always-on;
396e7a09590STomeu Vizoso				regulator-boot-on;
397e7a09590STomeu Vizoso				regulator-min-microvolt = <1500000>;
398e7a09590STomeu Vizoso				regulator-max-microvolt = <1500000>;
399e7a09590STomeu Vizoso				regulator-name = "vcc_1v5";
400e7a09590STomeu Vizoso
401e7a09590STomeu Vizoso				regulator-state-mem {
402e7a09590STomeu Vizoso					regulator-on-in-suspend;
403e7a09590STomeu Vizoso					regulator-suspend-microvolt = <1500000>;
404e7a09590STomeu Vizoso				};
405e7a09590STomeu Vizoso			};
406e7a09590STomeu Vizoso
407e7a09590STomeu Vizoso			vcca1v8_codec: LDO_REG7 {
408e7a09590STomeu Vizoso				regulator-always-on;
409e7a09590STomeu Vizoso				regulator-boot-on;
410e7a09590STomeu Vizoso				regulator-min-microvolt = <1800000>;
411e7a09590STomeu Vizoso				regulator-max-microvolt = <1800000>;
412e7a09590STomeu Vizoso				regulator-name = "vcca1v8_codec";
413e7a09590STomeu Vizoso
414e7a09590STomeu Vizoso				regulator-state-mem {
415e7a09590STomeu Vizoso					regulator-off-in-suspend;
416e7a09590STomeu Vizoso				};
417e7a09590STomeu Vizoso			};
418e7a09590STomeu Vizoso
419e7a09590STomeu Vizoso			vcc_3v0: LDO_REG8 {
420e7a09590STomeu Vizoso				regulator-always-on;
421e7a09590STomeu Vizoso				regulator-boot-on;
422e7a09590STomeu Vizoso				regulator-min-microvolt = <3000000>;
423e7a09590STomeu Vizoso				regulator-max-microvolt = <3000000>;
424e7a09590STomeu Vizoso				regulator-name = "vcc_3v0";
425e7a09590STomeu Vizoso
426e7a09590STomeu Vizoso				regulator-state-mem {
427e7a09590STomeu Vizoso					regulator-on-in-suspend;
428e7a09590STomeu Vizoso					regulator-suspend-microvolt = <3000000>;
429e7a09590STomeu Vizoso				};
430e7a09590STomeu Vizoso			};
431e7a09590STomeu Vizoso
432e7a09590STomeu Vizoso			vcc3v3_s3: SWITCH_REG1 {
433e7a09590STomeu Vizoso				regulator-always-on;
434e7a09590STomeu Vizoso				regulator-boot-on;
435e7a09590STomeu Vizoso				regulator-name = "vcc3v3_s3";
436e7a09590STomeu Vizoso
437e7a09590STomeu Vizoso				regulator-state-mem {
438e7a09590STomeu Vizoso					regulator-off-in-suspend;
439e7a09590STomeu Vizoso				};
440e7a09590STomeu Vizoso			};
441e7a09590STomeu Vizoso
442e7a09590STomeu Vizoso			vcc3v3_s0: SWITCH_REG2 {
443e7a09590STomeu Vizoso				regulator-always-on;
444e7a09590STomeu Vizoso				regulator-boot-on;
445e7a09590STomeu Vizoso				regulator-name = "vcc3v3_s0";
446e7a09590STomeu Vizoso
447e7a09590STomeu Vizoso				regulator-state-mem {
448e7a09590STomeu Vizoso					regulator-off-in-suspend;
449e7a09590STomeu Vizoso				};
450e7a09590STomeu Vizoso			};
451e7a09590STomeu Vizoso		};
452e7a09590STomeu Vizoso	};
453e7a09590STomeu Vizoso};
454e7a09590STomeu Vizoso
455e7a09590STomeu Vizoso&i2c1 {
456e7a09590STomeu Vizoso	clock-frequency = <200000>;
457e7a09590STomeu Vizoso	i2c-scl-rising-time-ns = <150>;
458e7a09590STomeu Vizoso	i2c-scl-falling-time-ns = <30>;
459e7a09590STomeu Vizoso	status = "okay";
460e7a09590STomeu Vizoso};
461e7a09590STomeu Vizoso
462e7a09590STomeu Vizoso&i2c2 {
463e7a09590STomeu Vizoso	status = "okay";
464e7a09590STomeu Vizoso};
465e7a09590STomeu Vizoso
466e7a09590STomeu Vizoso&i2c4 {
467e7a09590STomeu Vizoso	clock-frequency = <400000>;
468e7a09590STomeu Vizoso	i2c-scl-rising-time-ns = <160>;
469e7a09590STomeu Vizoso	i2c-scl-falling-time-ns = <30>;
470e7a09590STomeu Vizoso	status = "okay";
471e7a09590STomeu Vizoso
472e7a09590STomeu Vizoso	fusb0: typec-portc@22 {
473e7a09590STomeu Vizoso		compatible = "fcs,fusb302";
474e7a09590STomeu Vizoso		reg = <0x22>;
475e7a09590STomeu Vizoso		interrupt-parent = <&gpio1>;
476e7a09590STomeu Vizoso		interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
477e7a09590STomeu Vizoso		pinctrl-names = "default";
478e7a09590STomeu Vizoso		pinctrl-0 = <&fusb0_int>;
479e7a09590STomeu Vizoso		vbus-supply = <&vbus_typec>;
480e7a09590STomeu Vizoso	};
481e7a09590STomeu Vizoso};
482e7a09590STomeu Vizoso
483e7a09590STomeu Vizoso&i2c7 {
484e7a09590STomeu Vizoso	status = "okay";
485e7a09590STomeu Vizoso};
486e7a09590STomeu Vizoso
487f94ffd95SRobin Murphy&i2s2 {
488f94ffd95SRobin Murphy	status = "okay";
489f94ffd95SRobin Murphy};
490f94ffd95SRobin Murphy
491e7a09590STomeu Vizoso&io_domains {
492e7a09590STomeu Vizoso	bt656-supply = <&vcc_1v8>;
493e7a09590STomeu Vizoso	audio-supply = <&vcca1v8_codec>;
494e7a09590STomeu Vizoso	sdmmc-supply = <&vcc_sdio>;
495e7a09590STomeu Vizoso	gpio1830-supply = <&vcc_3v0>;
496e7a09590STomeu Vizoso	status = "okay";
497e7a09590STomeu Vizoso};
498e7a09590STomeu Vizoso
499e7a09590STomeu Vizoso&pcie_phy {
500e7a09590STomeu Vizoso	assigned-clock-parents = <&cru SCLK_PCIEPHY_REF100M>;
501e7a09590STomeu Vizoso	assigned-clock-rates = <100000000>;
502e7a09590STomeu Vizoso	assigned-clocks = <&cru SCLK_PCIEPHY_REF>;
503e7a09590STomeu Vizoso	status = "okay";
504e7a09590STomeu Vizoso};
505e7a09590STomeu Vizoso
506e7a09590STomeu Vizoso&pcie0 {
507e7a09590STomeu Vizoso	ep-gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>;
508e7a09590STomeu Vizoso	max-link-speed = <2>;
509876816b2SRobin Murphy	num-lanes = <2>;
510876816b2SRobin Murphy	vpcie0v9-supply = <&vcca0v9_s3>;
511876816b2SRobin Murphy	vpcie1v8-supply = <&vcca1v8_s3>;
512e7a09590STomeu Vizoso	status = "okay";
513e7a09590STomeu Vizoso};
514e7a09590STomeu Vizoso
515e7a09590STomeu Vizoso&pinctrl {
516e7a09590STomeu Vizoso	fusb30x {
517e7a09590STomeu Vizoso		fusb0_int: fusb0-int {
518e7a09590STomeu Vizoso			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
519e7a09590STomeu Vizoso		};
520e7a09590STomeu Vizoso	};
521e7a09590STomeu Vizoso
522e7a09590STomeu Vizoso	gpio-leds {
523e7a09590STomeu Vizoso		leds_gpio: leds-gpio {
524e7a09590STomeu Vizoso			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
525e7a09590STomeu Vizoso		};
526e7a09590STomeu Vizoso	};
527e7a09590STomeu Vizoso
528737157f9SJohan Jonker	gmac {
5291a4e6203SRobin Murphy		phy_intb: phy-intb {
5301a4e6203SRobin Murphy			rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
5311a4e6203SRobin Murphy		};
5321a4e6203SRobin Murphy
5331a4e6203SRobin Murphy		phy_rstb: phy-rstb {
5341a4e6203SRobin Murphy			rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
5351a4e6203SRobin Murphy		};
5361a4e6203SRobin Murphy	};
5371a4e6203SRobin Murphy
538e7a09590STomeu Vizoso	pmic {
539e7a09590STomeu Vizoso		cpu_b_sleep: cpu-b-sleep {
540e7a09590STomeu Vizoso			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
541e7a09590STomeu Vizoso		};
542e7a09590STomeu Vizoso
543e7a09590STomeu Vizoso		gpu_sleep: gpu-sleep {
544e7a09590STomeu Vizoso			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
545e7a09590STomeu Vizoso		};
546e7a09590STomeu Vizoso
547e7a09590STomeu Vizoso		pmic_int_l: pmic-int-l {
548e7a09590STomeu Vizoso			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
549e7a09590STomeu Vizoso		};
550e7a09590STomeu Vizoso	};
551e7a09590STomeu Vizoso
552e7a09590STomeu Vizoso	rockchip-key {
553e7a09590STomeu Vizoso		power_key: power-key {
554e7a09590STomeu Vizoso			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
555e7a09590STomeu Vizoso		};
556e7a09590STomeu Vizoso	};
557e7a09590STomeu Vizoso
5583e2f0bb7SRobin Murphy	sdio {
5593e2f0bb7SRobin Murphy		bt_host_wake_l: bt-host-wake-l {
5603e2f0bb7SRobin Murphy			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
5613e2f0bb7SRobin Murphy		};
5623e2f0bb7SRobin Murphy
5633e2f0bb7SRobin Murphy		bt_reg_on_h: bt-reg-on-h {
5643e2f0bb7SRobin Murphy			/* external pullup to VCC1V8_PMUPLL */
5653e2f0bb7SRobin Murphy			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
5663e2f0bb7SRobin Murphy		};
5673e2f0bb7SRobin Murphy
5683e2f0bb7SRobin Murphy		bt_wake_l: bt-wake-l {
5693e2f0bb7SRobin Murphy			rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
5703e2f0bb7SRobin Murphy		};
5713e2f0bb7SRobin Murphy
572e7a09590STomeu Vizoso		wifi_reg_on_h: wifi-reg_on-h {
573e7a09590STomeu Vizoso			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
574e7a09590STomeu Vizoso		};
575e7a09590STomeu Vizoso	};
57610f595eeSRobin Murphy
57710f595eeSRobin Murphy	sdmmc {
57810f595eeSRobin Murphy		sdmmc0_det_l: sdmmc0-det-l {
57910f595eeSRobin Murphy			rockchip,pins = <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
58010f595eeSRobin Murphy		};
58110f595eeSRobin Murphy
58210f595eeSRobin Murphy		sdmmc0_pwr_h: sdmmc0-pwr-h {
58310f595eeSRobin Murphy			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
58410f595eeSRobin Murphy		};
58510f595eeSRobin Murphy	};
586e7a09590STomeu Vizoso};
587e7a09590STomeu Vizoso
588e7a09590STomeu Vizoso&pmu_io_domains {
589e7a09590STomeu Vizoso	pmu1830-supply = <&vcc_3v0>;
590e7a09590STomeu Vizoso	status = "okay";
591e7a09590STomeu Vizoso};
592e7a09590STomeu Vizoso
593e7a09590STomeu Vizoso&pwm0 {
594e7a09590STomeu Vizoso	status = "okay";
595e7a09590STomeu Vizoso};
596e7a09590STomeu Vizoso
597e7a09590STomeu Vizoso&pwm1 {
598e7a09590STomeu Vizoso	status = "okay";
599e7a09590STomeu Vizoso};
600e7a09590STomeu Vizoso
601e7a09590STomeu Vizoso&pwm2 {
602e7a09590STomeu Vizoso	pinctrl-names = "active";
603e7a09590STomeu Vizoso	pinctrl-0 = <&pwm2_pin_pull_down>;
604e7a09590STomeu Vizoso	status = "okay";
605e7a09590STomeu Vizoso};
606e7a09590STomeu Vizoso
607e7a09590STomeu Vizoso&saradc {
608e7a09590STomeu Vizoso	vref-supply = <&vcca1v8_s3>;
609e7a09590STomeu Vizoso	status = "okay";
610e7a09590STomeu Vizoso};
611e7a09590STomeu Vizoso
612e7a09590STomeu Vizoso&sdhci {
613e7a09590STomeu Vizoso	bus-width = <8>;
614c62ffaf5SRobin Murphy	mmc-hs200-1_8v;
615e7a09590STomeu Vizoso	non-removable;
616e7a09590STomeu Vizoso	status = "okay";
617e7a09590STomeu Vizoso};
618e7a09590STomeu Vizoso
619e7a09590STomeu Vizoso&sdio0 {
620e7a09590STomeu Vizoso	bus-width = <4>;
621e7a09590STomeu Vizoso	cap-sd-highspeed;
622e7a09590STomeu Vizoso	cap-sdio-irq;
623e7a09590STomeu Vizoso	keep-power-in-suspend;
624e7a09590STomeu Vizoso	mmc-pwrseq = <&sdio_pwrseq>;
625e7a09590STomeu Vizoso	non-removable;
626e7a09590STomeu Vizoso	pinctrl-names = "default";
627e7a09590STomeu Vizoso	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
628e7a09590STomeu Vizoso	sd-uhs-sdr104;
629e7a09590STomeu Vizoso	status = "okay";
630e7a09590STomeu Vizoso};
631e7a09590STomeu Vizoso
632e7a09590STomeu Vizoso&sdmmc {
633e7a09590STomeu Vizoso	bus-width = <4>;
634e7a09590STomeu Vizoso	cap-sd-highspeed;
635e7a09590STomeu Vizoso	cap-mmc-highspeed;
63610f595eeSRobin Murphy	cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
637e7a09590STomeu Vizoso	disable-wp;
638e7a09590STomeu Vizoso	pinctrl-names = "default";
63910f595eeSRobin Murphy	pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc0_det_l>;
640e7a09590STomeu Vizoso	sd-uhs-sdr104;
641e7a09590STomeu Vizoso	vmmc-supply = <&vcc3v0_sd>;
642e7a09590STomeu Vizoso	vqmmc-supply = <&vcc_sdio>;
643e7a09590STomeu Vizoso	status = "okay";
644e7a09590STomeu Vizoso};
645e7a09590STomeu Vizoso
646e7a09590STomeu Vizoso&tcphy0 {
647e7a09590STomeu Vizoso	status = "okay";
648e7a09590STomeu Vizoso};
649e7a09590STomeu Vizoso
650e7a09590STomeu Vizoso&tcphy1 {
651e7a09590STomeu Vizoso	status = "okay";
652e7a09590STomeu Vizoso};
653e7a09590STomeu Vizoso
654e7a09590STomeu Vizoso&tsadc {
655e7a09590STomeu Vizoso	/* tshut mode 0:CRU 1:GPIO */
656e7a09590STomeu Vizoso	rockchip,hw-tshut-mode = <1>;
657e7a09590STomeu Vizoso	/* tshut polarity 0:LOW 1:HIGH */
658e7a09590STomeu Vizoso	rockchip,hw-tshut-polarity = <1>;
659e7a09590STomeu Vizoso	status = "okay";
660e7a09590STomeu Vizoso};
661e7a09590STomeu Vizoso
662e7a09590STomeu Vizoso&u2phy0 {
663e7a09590STomeu Vizoso	status = "okay";
664e7a09590STomeu Vizoso};
665e7a09590STomeu Vizoso
666e7a09590STomeu Vizoso&u2phy0_host {
667e7a09590STomeu Vizoso	status = "okay";
668e7a09590STomeu Vizoso};
669e7a09590STomeu Vizoso
670e7a09590STomeu Vizoso&u2phy0_otg {
671e7a09590STomeu Vizoso	status = "okay";
672e7a09590STomeu Vizoso};
673e7a09590STomeu Vizoso
674e7a09590STomeu Vizoso&u2phy1 {
675e7a09590STomeu Vizoso	status = "okay";
676e7a09590STomeu Vizoso};
677e7a09590STomeu Vizoso
678e7a09590STomeu Vizoso&u2phy1_host {
679e7a09590STomeu Vizoso	status = "okay";
680e7a09590STomeu Vizoso};
681e7a09590STomeu Vizoso
682e7a09590STomeu Vizoso&u2phy1_otg {
683e7a09590STomeu Vizoso	status = "okay";
684e7a09590STomeu Vizoso};
685e7a09590STomeu Vizoso
686e7a09590STomeu Vizoso&uart0 {
687e7a09590STomeu Vizoso	pinctrl-names = "default";
688e7a09590STomeu Vizoso	pinctrl-0 = <&uart0_xfer &uart0_rts &uart0_cts>;
689e7a09590STomeu Vizoso	status = "okay";
6903e2f0bb7SRobin Murphy
6913e2f0bb7SRobin Murphy	bluetooth {
6923e2f0bb7SRobin Murphy		compatible = "brcm,bcm43438-bt";
6933e2f0bb7SRobin Murphy		clocks = <&rk808 1>;
6943e2f0bb7SRobin Murphy		clock-names = "lpo";
6953e2f0bb7SRobin Murphy		device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
6963e2f0bb7SRobin Murphy		host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
6973e2f0bb7SRobin Murphy		shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
6983e2f0bb7SRobin Murphy		max-speed = <4000000>;
6993e2f0bb7SRobin Murphy		pinctrl-names = "default";
7003e2f0bb7SRobin Murphy		pinctrl-0 = <&bt_reg_on_h &bt_host_wake_l &bt_wake_l>;
7013e2f0bb7SRobin Murphy		vbat-supply = <&vcc3v3_sys>;
7023e2f0bb7SRobin Murphy		vddio-supply = <&vcc_1v8>;
7033e2f0bb7SRobin Murphy	};
704e7a09590STomeu Vizoso};
705e7a09590STomeu Vizoso
706e7a09590STomeu Vizoso&uart2 {
707e7a09590STomeu Vizoso	status = "okay";
708e7a09590STomeu Vizoso};
709e7a09590STomeu Vizoso
710e7a09590STomeu Vizoso&usbdrd3_0 {
711e7a09590STomeu Vizoso	status = "okay";
712e7a09590STomeu Vizoso};
713e7a09590STomeu Vizoso
714e7a09590STomeu Vizoso&usbdrd3_1 {
715e7a09590STomeu Vizoso	status = "okay";
716e7a09590STomeu Vizoso};
717e7a09590STomeu Vizoso
718e7a09590STomeu Vizoso&usbdrd_dwc3_0 {
719e7a09590STomeu Vizoso	status = "okay";
720e7a09590STomeu Vizoso};
721e7a09590STomeu Vizoso
722e7a09590STomeu Vizoso&usbdrd_dwc3_1 {
723e7a09590STomeu Vizoso	dr_mode = "host";
724e7a09590STomeu Vizoso	status = "okay";
725e7a09590STomeu Vizoso};
726e7a09590STomeu Vizoso
727e7a09590STomeu Vizoso&usb_host0_ehci {
728e7a09590STomeu Vizoso	status = "okay";
729e7a09590STomeu Vizoso};
730e7a09590STomeu Vizoso
731e7a09590STomeu Vizoso&usb_host0_ohci {
732e7a09590STomeu Vizoso	status = "okay";
733e7a09590STomeu Vizoso};
734e7a09590STomeu Vizoso
735e7a09590STomeu Vizoso&usb_host1_ehci {
736e7a09590STomeu Vizoso	status = "okay";
737e7a09590STomeu Vizoso};
738e7a09590STomeu Vizoso
739e7a09590STomeu Vizoso&usb_host1_ohci {
740e7a09590STomeu Vizoso	status = "okay";
741e7a09590STomeu Vizoso};
742e7a09590STomeu Vizoso
743e7a09590STomeu Vizoso&vopb {
744e7a09590STomeu Vizoso	status = "okay";
745e7a09590STomeu Vizoso};
746e7a09590STomeu Vizoso
747e7a09590STomeu Vizoso&vopb_mmu {
748e7a09590STomeu Vizoso	status = "okay";
749e7a09590STomeu Vizoso};
750e7a09590STomeu Vizoso
751e7a09590STomeu Vizoso&vopl {
752e7a09590STomeu Vizoso	status = "okay";
753e7a09590STomeu Vizoso};
754e7a09590STomeu Vizoso
755e7a09590STomeu Vizoso&vopl_mmu {
756e7a09590STomeu Vizoso	status = "okay";
757e7a09590STomeu Vizoso};
758