14afbce84SLiang Chen// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
24afbce84SLiang Chen/*
34afbce84SLiang Chen * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
44afbce84SLiang Chen */
54afbce84SLiang Chen
64afbce84SLiang Chen/dts-v1/;
74afbce84SLiang Chen#include <dt-bindings/gpio/gpio.h>
84afbce84SLiang Chen#include <dt-bindings/input/input.h>
94afbce84SLiang Chen#include <dt-bindings/pinctrl/rockchip.h>
104afbce84SLiang Chen#include "px30.dtsi"
114afbce84SLiang Chen
124afbce84SLiang Chen/ {
134afbce84SLiang Chen	model = "Rockchip PX30 EVB";
144afbce84SLiang Chen	compatible = "rockchip,px30-evb", "rockchip,px30";
154afbce84SLiang Chen
1678b8513bSHeiko Stuebner	aliases {
1778b8513bSHeiko Stuebner		mmc0 = &sdmmc;
1878b8513bSHeiko Stuebner		mmc1 = &sdio;
1978b8513bSHeiko Stuebner		mmc2 = &emmc;
2078b8513bSHeiko Stuebner	};
2178b8513bSHeiko Stuebner
224afbce84SLiang Chen	chosen {
239003aacbSHeiko Stuebner		stdout-path = "serial5:115200n8";
244afbce84SLiang Chen	};
254afbce84SLiang Chen
264afbce84SLiang Chen	adc-keys {
274afbce84SLiang Chen		compatible = "adc-keys";
284afbce84SLiang Chen		io-channels = <&saradc 2>;
294afbce84SLiang Chen		io-channel-names = "buttons";
304afbce84SLiang Chen		keyup-threshold-microvolt = <1800000>;
314afbce84SLiang Chen		poll-interval = <100>;
324afbce84SLiang Chen
33*f2bd2e76SJohan Jonker		button-esc {
344afbce84SLiang Chen			label = "esc";
354afbce84SLiang Chen			linux,code = <KEY_ESC>;
364afbce84SLiang Chen			press-threshold-microvolt = <1310000>;
374afbce84SLiang Chen		};
384afbce84SLiang Chen
39*f2bd2e76SJohan Jonker		button-home {
404afbce84SLiang Chen			label = "home";
414afbce84SLiang Chen			linux,code = <KEY_HOME>;
424afbce84SLiang Chen			press-threshold-microvolt = <624000>;
434afbce84SLiang Chen		};
444afbce84SLiang Chen
45*f2bd2e76SJohan Jonker		button-menu {
464afbce84SLiang Chen			label = "menu";
474afbce84SLiang Chen			linux,code = <KEY_MENU>;
484afbce84SLiang Chen			press-threshold-microvolt = <987000>;
494afbce84SLiang Chen		};
504afbce84SLiang Chen
51*f2bd2e76SJohan Jonker		button-down {
524afbce84SLiang Chen			label = "volume down";
534afbce84SLiang Chen			linux,code = <KEY_VOLUMEDOWN>;
544afbce84SLiang Chen			press-threshold-microvolt = <300000>;
554afbce84SLiang Chen		};
564afbce84SLiang Chen
57*f2bd2e76SJohan Jonker		button-up {
584afbce84SLiang Chen			label = "volume up";
594afbce84SLiang Chen			linux,code = <KEY_VOLUMEUP>;
604afbce84SLiang Chen			press-threshold-microvolt = <17000>;
614afbce84SLiang Chen		};
624afbce84SLiang Chen	};
634afbce84SLiang Chen
644afbce84SLiang Chen	backlight: backlight {
654afbce84SLiang Chen		compatible = "pwm-backlight";
664afbce84SLiang Chen		pwms = <&pwm1 0 25000 0>;
67915b6a8bSHeiko Stuebner		power-supply = <&vcc3v3_lcd>;
684afbce84SLiang Chen	};
694afbce84SLiang Chen
7079fd8ba2SHeiko Stuebner	emmc_pwrseq: emmc-pwrseq {
7179fd8ba2SHeiko Stuebner		compatible = "mmc-pwrseq-emmc";
7279fd8ba2SHeiko Stuebner		pinctrl-0 = <&emmc_reset>;
7379fd8ba2SHeiko Stuebner		pinctrl-names = "default";
7479fd8ba2SHeiko Stuebner		reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
7579fd8ba2SHeiko Stuebner	};
7679fd8ba2SHeiko Stuebner
774afbce84SLiang Chen	sdio_pwrseq: sdio-pwrseq {
784afbce84SLiang Chen		compatible = "mmc-pwrseq-simple";
794afbce84SLiang Chen		pinctrl-names = "default";
804afbce84SLiang Chen		pinctrl-0 = <&wifi_enable_h>;
814afbce84SLiang Chen
824afbce84SLiang Chen		/*
834afbce84SLiang Chen		 * On the module itself this is one of these (depending
844afbce84SLiang Chen		 * on the actual card populated):
854afbce84SLiang Chen		 * - SDIO_RESET_L_WL_REG_ON
864afbce84SLiang Chen		 * - PDN (power down when low)
874afbce84SLiang Chen		 */
884afbce84SLiang Chen		reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>; /* GPIO3_A4 */
894afbce84SLiang Chen	};
904afbce84SLiang Chen
914afbce84SLiang Chen	vcc5v0_sys: vccsys {
924afbce84SLiang Chen		compatible = "regulator-fixed";
934afbce84SLiang Chen		regulator-name = "vcc5v0_sys";
944afbce84SLiang Chen		regulator-always-on;
954afbce84SLiang Chen		regulator-boot-on;
964afbce84SLiang Chen		regulator-min-microvolt = <5000000>;
974afbce84SLiang Chen		regulator-max-microvolt = <5000000>;
984afbce84SLiang Chen	};
994afbce84SLiang Chen};
1004afbce84SLiang Chen
101915b6a8bSHeiko Stuebner&cpu0 {
102915b6a8bSHeiko Stuebner	cpu-supply = <&vdd_arm>;
103915b6a8bSHeiko Stuebner};
104915b6a8bSHeiko Stuebner
105915b6a8bSHeiko Stuebner&cpu1 {
106915b6a8bSHeiko Stuebner	cpu-supply = <&vdd_arm>;
107915b6a8bSHeiko Stuebner};
108915b6a8bSHeiko Stuebner
109915b6a8bSHeiko Stuebner&cpu2 {
110915b6a8bSHeiko Stuebner	cpu-supply = <&vdd_arm>;
111915b6a8bSHeiko Stuebner};
112915b6a8bSHeiko Stuebner
113915b6a8bSHeiko Stuebner&cpu3 {
114915b6a8bSHeiko Stuebner	cpu-supply = <&vdd_arm>;
115915b6a8bSHeiko Stuebner};
116915b6a8bSHeiko Stuebner
117474a7739SHeiko Stuebner&csi_dphy {
118474a7739SHeiko Stuebner	status = "okay";
119474a7739SHeiko Stuebner};
120474a7739SHeiko Stuebner
1214afbce84SLiang Chen&display_subsystem {
1224afbce84SLiang Chen	status = "okay";
1234afbce84SLiang Chen};
1244afbce84SLiang Chen
125110f0271SHeiko Stuebner&dsi {
126110f0271SHeiko Stuebner	status = "okay";
127110f0271SHeiko Stuebner
128110f0271SHeiko Stuebner	ports {
129110f0271SHeiko Stuebner		mipi_out: port@1 {
130110f0271SHeiko Stuebner			reg = <1>;
131110f0271SHeiko Stuebner
132110f0271SHeiko Stuebner			mipi_out_panel: endpoint {
133110f0271SHeiko Stuebner				remote-endpoint = <&mipi_in_panel>;
134110f0271SHeiko Stuebner			};
135110f0271SHeiko Stuebner		};
136110f0271SHeiko Stuebner	};
137110f0271SHeiko Stuebner
138110f0271SHeiko Stuebner	panel@0 {
139110f0271SHeiko Stuebner		compatible = "xinpeng,xpp055c272";
140110f0271SHeiko Stuebner		reg = <0>;
141110f0271SHeiko Stuebner		backlight = <&backlight>;
142110f0271SHeiko Stuebner		iovcc-supply = <&vcc_1v8>;
143110f0271SHeiko Stuebner		vci-supply = <&vcc3v3_lcd>;
144110f0271SHeiko Stuebner
145110f0271SHeiko Stuebner		port {
146110f0271SHeiko Stuebner			mipi_in_panel: endpoint {
147110f0271SHeiko Stuebner				remote-endpoint = <&mipi_out_panel>;
148110f0271SHeiko Stuebner			};
149110f0271SHeiko Stuebner		};
150110f0271SHeiko Stuebner	};
151110f0271SHeiko Stuebner};
152110f0271SHeiko Stuebner
153110f0271SHeiko Stuebner&dsi_dphy {
154110f0271SHeiko Stuebner	status = "okay";
155110f0271SHeiko Stuebner};
156110f0271SHeiko Stuebner
1574afbce84SLiang Chen&emmc {
1584afbce84SLiang Chen	cap-mmc-highspeed;
1594afbce84SLiang Chen	mmc-hs200-1_8v;
1604afbce84SLiang Chen	non-removable;
16179fd8ba2SHeiko Stuebner	mmc-pwrseq = <&emmc_pwrseq>;
162915b6a8bSHeiko Stuebner	vmmc-supply = <&vcc_3v0>;
163915b6a8bSHeiko Stuebner	vqmmc-supply = <&vccio_flash>;
1644afbce84SLiang Chen	status = "okay";
1654afbce84SLiang Chen};
1664afbce84SLiang Chen
1674afbce84SLiang Chen&gmac {
1684afbce84SLiang Chen	clock_in_out = "output";
169915b6a8bSHeiko Stuebner	phy-supply = <&vcc_rmii>;
1704afbce84SLiang Chen	snps,reset-gpio = <&gpio2 13 GPIO_ACTIVE_LOW>;
1714afbce84SLiang Chen	snps,reset-active-low;
1724afbce84SLiang Chen	snps,reset-delays-us = <0 50000 50000>;
1734afbce84SLiang Chen	status = "okay";
1744afbce84SLiang Chen};
1754afbce84SLiang Chen
1760c556deaSHeiko Stuebner&gpu {
1770c556deaSHeiko Stuebner	mali-supply = <&vdd_log>;
1780c556deaSHeiko Stuebner	status = "okay";
1790c556deaSHeiko Stuebner};
1800c556deaSHeiko Stuebner
1814afbce84SLiang Chen&i2c0 {
1824afbce84SLiang Chen	status = "okay";
183915b6a8bSHeiko Stuebner
184915b6a8bSHeiko Stuebner	rk809: pmic@20 {
185915b6a8bSHeiko Stuebner		compatible = "rockchip,rk809";
186915b6a8bSHeiko Stuebner		reg = <0x20>;
187915b6a8bSHeiko Stuebner		interrupt-parent = <&gpio0>;
188915b6a8bSHeiko Stuebner		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
189915b6a8bSHeiko Stuebner		pinctrl-names = "default";
190915b6a8bSHeiko Stuebner		pinctrl-0 = <&pmic_int>;
191915b6a8bSHeiko Stuebner		rockchip,system-power-controller;
192915b6a8bSHeiko Stuebner		wakeup-source;
193915b6a8bSHeiko Stuebner		#clock-cells = <0>;
194915b6a8bSHeiko Stuebner		clock-output-names = "xin32k";
195915b6a8bSHeiko Stuebner
196915b6a8bSHeiko Stuebner		vcc1-supply = <&vcc5v0_sys>;
197915b6a8bSHeiko Stuebner		vcc2-supply = <&vcc5v0_sys>;
198915b6a8bSHeiko Stuebner		vcc3-supply = <&vcc5v0_sys>;
199915b6a8bSHeiko Stuebner		vcc4-supply = <&vcc5v0_sys>;
200915b6a8bSHeiko Stuebner		vcc5-supply = <&vcc3v3_sys>;
201915b6a8bSHeiko Stuebner		vcc6-supply = <&vcc3v3_sys>;
202915b6a8bSHeiko Stuebner		vcc7-supply = <&vcc3v3_sys>;
203915b6a8bSHeiko Stuebner		vcc8-supply = <&vcc3v3_sys>;
204915b6a8bSHeiko Stuebner		vcc9-supply = <&vcc5v0_sys>;
205915b6a8bSHeiko Stuebner
206915b6a8bSHeiko Stuebner		regulators {
207915b6a8bSHeiko Stuebner			vdd_log: DCDC_REG1 {
208915b6a8bSHeiko Stuebner				regulator-name = "vdd_log";
209915b6a8bSHeiko Stuebner				regulator-min-microvolt = <950000>;
210915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1350000>;
211915b6a8bSHeiko Stuebner				regulator-ramp-delay = <6001>;
212915b6a8bSHeiko Stuebner				regulator-always-on;
213915b6a8bSHeiko Stuebner				regulator-boot-on;
214915b6a8bSHeiko Stuebner
215915b6a8bSHeiko Stuebner				regulator-state-mem {
216915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
217915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <950000>;
218915b6a8bSHeiko Stuebner				};
219915b6a8bSHeiko Stuebner			};
220915b6a8bSHeiko Stuebner
221915b6a8bSHeiko Stuebner			vdd_arm: DCDC_REG2 {
222915b6a8bSHeiko Stuebner				regulator-name = "vdd_arm";
223915b6a8bSHeiko Stuebner				regulator-min-microvolt = <950000>;
224915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1350000>;
225915b6a8bSHeiko Stuebner				regulator-ramp-delay = <6001>;
226915b6a8bSHeiko Stuebner				regulator-always-on;
227915b6a8bSHeiko Stuebner				regulator-boot-on;
228915b6a8bSHeiko Stuebner
229915b6a8bSHeiko Stuebner				regulator-state-mem {
230915b6a8bSHeiko Stuebner					regulator-off-in-suspend;
231915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <950000>;
232915b6a8bSHeiko Stuebner				};
233915b6a8bSHeiko Stuebner			};
234915b6a8bSHeiko Stuebner
235915b6a8bSHeiko Stuebner			vcc_ddr: DCDC_REG3 {
236915b6a8bSHeiko Stuebner				regulator-name = "vcc_ddr";
237915b6a8bSHeiko Stuebner				regulator-always-on;
238915b6a8bSHeiko Stuebner				regulator-boot-on;
239915b6a8bSHeiko Stuebner
240915b6a8bSHeiko Stuebner				regulator-state-mem {
241915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
242915b6a8bSHeiko Stuebner				};
243915b6a8bSHeiko Stuebner			};
244915b6a8bSHeiko Stuebner
245915b6a8bSHeiko Stuebner			vcc_3v0: vcc_rmii: DCDC_REG4 {
246915b6a8bSHeiko Stuebner				regulator-name = "vcc_3v0";
247915b6a8bSHeiko Stuebner				regulator-min-microvolt = <3000000>;
248915b6a8bSHeiko Stuebner				regulator-max-microvolt = <3000000>;
249915b6a8bSHeiko Stuebner				regulator-always-on;
250915b6a8bSHeiko Stuebner				regulator-boot-on;
251915b6a8bSHeiko Stuebner
252915b6a8bSHeiko Stuebner				regulator-state-mem {
253915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
254915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <3000000>;
255915b6a8bSHeiko Stuebner				};
256915b6a8bSHeiko Stuebner			};
257915b6a8bSHeiko Stuebner
258915b6a8bSHeiko Stuebner			vcc3v3_sys: DCDC_REG5 {
259915b6a8bSHeiko Stuebner				regulator-name = "vcc3v3_sys";
260915b6a8bSHeiko Stuebner				regulator-min-microvolt = <3300000>;
261915b6a8bSHeiko Stuebner				regulator-max-microvolt = <3300000>;
262915b6a8bSHeiko Stuebner				regulator-always-on;
263915b6a8bSHeiko Stuebner				regulator-boot-on;
264915b6a8bSHeiko Stuebner
265915b6a8bSHeiko Stuebner				regulator-state-mem {
266915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
267915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <3300000>;
268915b6a8bSHeiko Stuebner				};
269915b6a8bSHeiko Stuebner			};
270915b6a8bSHeiko Stuebner
271915b6a8bSHeiko Stuebner			vcc_1v0: LDO_REG1 {
272915b6a8bSHeiko Stuebner				regulator-name = "vcc_1v0";
273915b6a8bSHeiko Stuebner				regulator-min-microvolt = <1000000>;
274915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1000000>;
275915b6a8bSHeiko Stuebner				regulator-always-on;
276915b6a8bSHeiko Stuebner				regulator-boot-on;
277915b6a8bSHeiko Stuebner
278915b6a8bSHeiko Stuebner				regulator-state-mem {
279915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
280915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <1000000>;
281915b6a8bSHeiko Stuebner				};
282915b6a8bSHeiko Stuebner			};
283915b6a8bSHeiko Stuebner
284915b6a8bSHeiko Stuebner			vcc_1v8: vccio_flash: vccio_sdio: LDO_REG2 {
285915b6a8bSHeiko Stuebner				regulator-name = "vcc_1v8";
286915b6a8bSHeiko Stuebner				regulator-min-microvolt = <1800000>;
287915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1800000>;
288915b6a8bSHeiko Stuebner				regulator-always-on;
289915b6a8bSHeiko Stuebner				regulator-boot-on;
290915b6a8bSHeiko Stuebner
291915b6a8bSHeiko Stuebner				regulator-state-mem {
292915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
293915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <1800000>;
294915b6a8bSHeiko Stuebner				};
295915b6a8bSHeiko Stuebner			};
296915b6a8bSHeiko Stuebner
297915b6a8bSHeiko Stuebner			vdd_1v0: LDO_REG3 {
298915b6a8bSHeiko Stuebner				regulator-name = "vdd_1v0";
299915b6a8bSHeiko Stuebner				regulator-min-microvolt = <1000000>;
300915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1000000>;
301915b6a8bSHeiko Stuebner				regulator-always-on;
302915b6a8bSHeiko Stuebner				regulator-boot-on;
303915b6a8bSHeiko Stuebner
304915b6a8bSHeiko Stuebner				regulator-state-mem {
305915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
306915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <1000000>;
307915b6a8bSHeiko Stuebner				};
308915b6a8bSHeiko Stuebner			};
309915b6a8bSHeiko Stuebner
310915b6a8bSHeiko Stuebner			vcc3v0_pmu: LDO_REG4 {
311915b6a8bSHeiko Stuebner				regulator-name = "vcc3v0_pmu";
312915b6a8bSHeiko Stuebner				regulator-min-microvolt = <3000000>;
313915b6a8bSHeiko Stuebner				regulator-max-microvolt = <3000000>;
314915b6a8bSHeiko Stuebner				regulator-always-on;
315915b6a8bSHeiko Stuebner				regulator-boot-on;
316915b6a8bSHeiko Stuebner
317915b6a8bSHeiko Stuebner				regulator-state-mem {
318915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
319915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <3000000>;
320915b6a8bSHeiko Stuebner				};
321915b6a8bSHeiko Stuebner			};
322915b6a8bSHeiko Stuebner
323915b6a8bSHeiko Stuebner			vccio_sd: LDO_REG5 {
324915b6a8bSHeiko Stuebner				regulator-name = "vccio_sd";
325915b6a8bSHeiko Stuebner				regulator-min-microvolt = <1800000>;
326915b6a8bSHeiko Stuebner				regulator-max-microvolt = <3300000>;
327915b6a8bSHeiko Stuebner				regulator-always-on;
328915b6a8bSHeiko Stuebner				regulator-boot-on;
329915b6a8bSHeiko Stuebner
330915b6a8bSHeiko Stuebner				regulator-state-mem {
331915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
332915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <3300000>;
333915b6a8bSHeiko Stuebner				};
334915b6a8bSHeiko Stuebner			};
335915b6a8bSHeiko Stuebner
336915b6a8bSHeiko Stuebner			vcc_sd: LDO_REG6 {
337915b6a8bSHeiko Stuebner				regulator-name = "vcc_sd";
338915b6a8bSHeiko Stuebner				regulator-min-microvolt = <3300000>;
339915b6a8bSHeiko Stuebner				regulator-max-microvolt = <3300000>;
340915b6a8bSHeiko Stuebner				regulator-boot-on;
341915b6a8bSHeiko Stuebner
342915b6a8bSHeiko Stuebner				regulator-state-mem {
343915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
344915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <3300000>;
345915b6a8bSHeiko Stuebner				};
346915b6a8bSHeiko Stuebner			};
347915b6a8bSHeiko Stuebner
348915b6a8bSHeiko Stuebner			vcc2v8_dvp: LDO_REG7 {
349915b6a8bSHeiko Stuebner				regulator-name = "vcc2v8_dvp";
350915b6a8bSHeiko Stuebner				regulator-min-microvolt = <2800000>;
351915b6a8bSHeiko Stuebner				regulator-max-microvolt = <2800000>;
352915b6a8bSHeiko Stuebner				regulator-boot-on;
353915b6a8bSHeiko Stuebner
354915b6a8bSHeiko Stuebner				regulator-state-mem {
355915b6a8bSHeiko Stuebner					regulator-off-in-suspend;
356915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <2800000>;
357915b6a8bSHeiko Stuebner				};
358915b6a8bSHeiko Stuebner			};
359915b6a8bSHeiko Stuebner
360915b6a8bSHeiko Stuebner			vcc1v8_dvp: LDO_REG8 {
361915b6a8bSHeiko Stuebner				regulator-name = "vcc1v8_dvp";
362915b6a8bSHeiko Stuebner				regulator-min-microvolt = <1800000>;
363915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1800000>;
364915b6a8bSHeiko Stuebner				regulator-boot-on;
365915b6a8bSHeiko Stuebner
366915b6a8bSHeiko Stuebner				regulator-state-mem {
367915b6a8bSHeiko Stuebner					regulator-on-in-suspend;
368915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <1800000>;
369915b6a8bSHeiko Stuebner				};
370915b6a8bSHeiko Stuebner			};
371915b6a8bSHeiko Stuebner
372915b6a8bSHeiko Stuebner			vcc1v5_dvp: LDO_REG9 {
373915b6a8bSHeiko Stuebner				regulator-name = "vcc1v5_dvp";
374915b6a8bSHeiko Stuebner				regulator-min-microvolt = <1500000>;
375915b6a8bSHeiko Stuebner				regulator-max-microvolt = <1500000>;
376915b6a8bSHeiko Stuebner				regulator-boot-on;
377915b6a8bSHeiko Stuebner
378915b6a8bSHeiko Stuebner				regulator-state-mem {
379915b6a8bSHeiko Stuebner					regulator-off-in-suspend;
380915b6a8bSHeiko Stuebner					regulator-suspend-microvolt = <1500000>;
381915b6a8bSHeiko Stuebner				};
382915b6a8bSHeiko Stuebner			};
383915b6a8bSHeiko Stuebner
384915b6a8bSHeiko Stuebner			vcc3v3_lcd: SWITCH_REG1 {
385915b6a8bSHeiko Stuebner				regulator-name = "vcc3v3_lcd";
386915b6a8bSHeiko Stuebner				regulator-boot-on;
387915b6a8bSHeiko Stuebner			};
388915b6a8bSHeiko Stuebner
389915b6a8bSHeiko Stuebner			vcc5v0_host: SWITCH_REG2 {
390915b6a8bSHeiko Stuebner				regulator-name = "vcc5v0_host";
391915b6a8bSHeiko Stuebner				regulator-always-on;
392915b6a8bSHeiko Stuebner				regulator-boot-on;
393915b6a8bSHeiko Stuebner			};
394915b6a8bSHeiko Stuebner		};
395915b6a8bSHeiko Stuebner	};
3964afbce84SLiang Chen};
3974afbce84SLiang Chen
39852462ac6SHeiko Stuebner&i2c1 {
39952462ac6SHeiko Stuebner	status = "okay";
40052462ac6SHeiko Stuebner
40152462ac6SHeiko Stuebner	sensor@d {
40252462ac6SHeiko Stuebner		compatible = "asahi-kasei,ak8963";
40352462ac6SHeiko Stuebner		reg = <0x0d>;
40452462ac6SHeiko Stuebner		gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
40552462ac6SHeiko Stuebner		vdd-supply = <&vcc3v0_pmu>;
40652462ac6SHeiko Stuebner		mount-matrix = "1", /* x0 */
40752462ac6SHeiko Stuebner			       "0", /* y0 */
40852462ac6SHeiko Stuebner			       "0", /* z0 */
40952462ac6SHeiko Stuebner			       "0", /* x1 */
41052462ac6SHeiko Stuebner			       "1", /* y1 */
41152462ac6SHeiko Stuebner			       "0", /* z1 */
41252462ac6SHeiko Stuebner			       "0", /* x2 */
41352462ac6SHeiko Stuebner			       "0", /* y2 */
41452462ac6SHeiko Stuebner			       "1"; /* z2 */
41552462ac6SHeiko Stuebner	};
41652462ac6SHeiko Stuebner
41752462ac6SHeiko Stuebner	touchscreen@14 {
41852462ac6SHeiko Stuebner		compatible = "goodix,gt1151";
41952462ac6SHeiko Stuebner		reg = <0x14>;
42052462ac6SHeiko Stuebner		interrupt-parent = <&gpio0>;
42152462ac6SHeiko Stuebner		interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
42252462ac6SHeiko Stuebner		irq-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
42352462ac6SHeiko Stuebner		reset-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
42452462ac6SHeiko Stuebner		VDDIO-supply = <&vcc3v3_lcd>;
42552462ac6SHeiko Stuebner	};
42652462ac6SHeiko Stuebner
42752462ac6SHeiko Stuebner	sensor@4c {
42852462ac6SHeiko Stuebner		compatible = "fsl,mma7660";
42952462ac6SHeiko Stuebner		reg = <0x4c>;
43052462ac6SHeiko Stuebner		interrupt-parent = <&gpio0>;
43152462ac6SHeiko Stuebner		interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>;
43252462ac6SHeiko Stuebner	};
43352462ac6SHeiko Stuebner};
43452462ac6SHeiko Stuebner
435474a7739SHeiko Stuebner&i2c2 {
436474a7739SHeiko Stuebner	status = "okay";
437474a7739SHeiko Stuebner
438474a7739SHeiko Stuebner	clock-frequency = <100000>;
439474a7739SHeiko Stuebner
440474a7739SHeiko Stuebner	/* These are relatively safe rise/fall times; TODO: measure */
441474a7739SHeiko Stuebner	i2c-scl-falling-time-ns = <50>;
442474a7739SHeiko Stuebner	i2c-scl-rising-time-ns = <300>;
443474a7739SHeiko Stuebner
444474a7739SHeiko Stuebner	ov5695: ov5695@36 {
445474a7739SHeiko Stuebner		compatible = "ovti,ov5695";
446474a7739SHeiko Stuebner		reg = <0x36>;
447474a7739SHeiko Stuebner		avdd-supply = <&vcc2v8_dvp>;
448474a7739SHeiko Stuebner		clocks = <&cru SCLK_CIF_OUT>;
449474a7739SHeiko Stuebner		clock-names = "xvclk";
450474a7739SHeiko Stuebner		dvdd-supply = <&vcc1v5_dvp>;
451474a7739SHeiko Stuebner		dovdd-supply = <&vcc1v8_dvp>;
452474a7739SHeiko Stuebner		pinctrl-names = "default";
453921890caSTommaso Merciai		pinctrl-0 = <&cif_clkout_m0 &mipi_pdn>;
45419d4aaf6STommaso Merciai		reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>;
455474a7739SHeiko Stuebner
456474a7739SHeiko Stuebner		port {
457474a7739SHeiko Stuebner			ucam_out: endpoint {
458474a7739SHeiko Stuebner				remote-endpoint = <&mipi_in_ucam>;
459474a7739SHeiko Stuebner				data-lanes = <1 2>;
460474a7739SHeiko Stuebner			};
461474a7739SHeiko Stuebner		};
462474a7739SHeiko Stuebner	};
463474a7739SHeiko Stuebner};
464474a7739SHeiko Stuebner
4654afbce84SLiang Chen&i2s1_2ch {
4664afbce84SLiang Chen	status = "okay";
4674afbce84SLiang Chen};
4684afbce84SLiang Chen
4694afbce84SLiang Chen&io_domains {
4704afbce84SLiang Chen	status = "okay";
471915b6a8bSHeiko Stuebner
472915b6a8bSHeiko Stuebner	vccio1-supply = <&vccio_sdio>;
473915b6a8bSHeiko Stuebner	vccio2-supply = <&vccio_sd>;
474915b6a8bSHeiko Stuebner	vccio3-supply = <&vcc_3v0>;
475915b6a8bSHeiko Stuebner	vccio4-supply = <&vcc3v0_pmu>;
476915b6a8bSHeiko Stuebner	vccio5-supply = <&vcc_3v0>;
477915b6a8bSHeiko Stuebner	vccio6-supply = <&vccio_flash>;
4784afbce84SLiang Chen};
4794afbce84SLiang Chen
480474a7739SHeiko Stuebner&isp {
481474a7739SHeiko Stuebner	status = "okay";
482474a7739SHeiko Stuebner
483474a7739SHeiko Stuebner	ports {
484474a7739SHeiko Stuebner		port@0 {
485474a7739SHeiko Stuebner			mipi_in_ucam: endpoint@0 {
486474a7739SHeiko Stuebner				reg = <0>;
487474a7739SHeiko Stuebner				data-lanes = <1 2>;
488474a7739SHeiko Stuebner				remote-endpoint = <&ucam_out>;
489474a7739SHeiko Stuebner			};
490474a7739SHeiko Stuebner		};
491474a7739SHeiko Stuebner	};
492474a7739SHeiko Stuebner};
493474a7739SHeiko Stuebner
494474a7739SHeiko Stuebner&isp_mmu {
495474a7739SHeiko Stuebner	status = "okay";
496474a7739SHeiko Stuebner};
497474a7739SHeiko Stuebner
4984afbce84SLiang Chen&pinctrl {
4994afbce84SLiang Chen	headphone {
5004afbce84SLiang Chen		hp_det: hp-det {
5014afbce84SLiang Chen			rockchip,pins =
5024afbce84SLiang Chen				<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
5034afbce84SLiang Chen		};
5044afbce84SLiang Chen	};
5054afbce84SLiang Chen
50679fd8ba2SHeiko Stuebner	emmc {
50779fd8ba2SHeiko Stuebner		emmc_reset: emmc-reset {
50879fd8ba2SHeiko Stuebner			rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
50979fd8ba2SHeiko Stuebner		};
51079fd8ba2SHeiko Stuebner	};
51179fd8ba2SHeiko Stuebner
5124afbce84SLiang Chen	pmic {
5134afbce84SLiang Chen		pmic_int: pmic_int {
5144afbce84SLiang Chen			rockchip,pins =
5154afbce84SLiang Chen				<0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
5164afbce84SLiang Chen		};
5174afbce84SLiang Chen
5184afbce84SLiang Chen		soc_slppin_gpio: soc_slppin_gpio {
5194afbce84SLiang Chen			rockchip,pins =
5204afbce84SLiang Chen				<0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
5214afbce84SLiang Chen		};
5224afbce84SLiang Chen
5234afbce84SLiang Chen		soc_slppin_slp: soc_slppin_slp {
5244afbce84SLiang Chen			rockchip,pins =
525d64420e8SHeiko Stuebner				<0 RK_PA4 1 &pcfg_pull_none>;
5264afbce84SLiang Chen		};
5274afbce84SLiang Chen
5284afbce84SLiang Chen		soc_slppin_rst: soc_slppin_rst {
5294afbce84SLiang Chen			rockchip,pins =
530d64420e8SHeiko Stuebner				<0 RK_PA4 2 &pcfg_pull_none>;
5314afbce84SLiang Chen		};
5324afbce84SLiang Chen	};
5334afbce84SLiang Chen
5344afbce84SLiang Chen	sdio-pwrseq {
5354afbce84SLiang Chen		wifi_enable_h: wifi-enable-h {
5364afbce84SLiang Chen			rockchip,pins =
5374afbce84SLiang Chen				<0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
5384afbce84SLiang Chen		};
5394afbce84SLiang Chen	};
5408cde9667STommaso Merciai
5418cde9667STommaso Merciai	cif-m0 {
5428cde9667STommaso Merciai		cif_clkout_m0: cif-clkout-m0 {
5438cde9667STommaso Merciai			rockchip,pins =
5448cde9667STommaso Merciai				<2 RK_PB3 1 &pcfg_pull_none_12ma>;
5458cde9667STommaso Merciai		};
5468cde9667STommaso Merciai	};
547921890caSTommaso Merciai
548921890caSTommaso Merciai	mipi {
549921890caSTommaso Merciai		mipi_pdn: mipi-pdn {
550921890caSTommaso Merciai			rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
551921890caSTommaso Merciai		};
552921890caSTommaso Merciai	};
5534afbce84SLiang Chen};
5544afbce84SLiang Chen
5554afbce84SLiang Chen&pmu_io_domains {
5564afbce84SLiang Chen	status = "okay";
557915b6a8bSHeiko Stuebner
558915b6a8bSHeiko Stuebner	pmuio1-supply = <&vcc3v0_pmu>;
559915b6a8bSHeiko Stuebner	pmuio2-supply = <&vcc3v0_pmu>;
5604afbce84SLiang Chen};
5614afbce84SLiang Chen
5624afbce84SLiang Chen&pwm1 {
5634afbce84SLiang Chen	status = "okay";
5644afbce84SLiang Chen};
5654afbce84SLiang Chen
5664afbce84SLiang Chen&saradc {
567915b6a8bSHeiko Stuebner	vref-supply = <&vcc_1v8>;
5684afbce84SLiang Chen	status = "okay";
5694afbce84SLiang Chen};
5704afbce84SLiang Chen
5714afbce84SLiang Chen&sdmmc {
5724afbce84SLiang Chen	cap-mmc-highspeed;
5734afbce84SLiang Chen	cap-sd-highspeed;
5744afbce84SLiang Chen	card-detect-delay = <800>;
5754afbce84SLiang Chen	sd-uhs-sdr12;
5764afbce84SLiang Chen	sd-uhs-sdr25;
5774afbce84SLiang Chen	sd-uhs-sdr50;
5784afbce84SLiang Chen	sd-uhs-sdr104;
579915b6a8bSHeiko Stuebner	vmmc-supply = <&vcc_sd>;
580915b6a8bSHeiko Stuebner	vqmmc-supply = <&vccio_sd>;
5814afbce84SLiang Chen	status = "okay";
5824afbce84SLiang Chen};
5834afbce84SLiang Chen
5844afbce84SLiang Chen&sdio {
5854afbce84SLiang Chen	cap-sd-highspeed;
5864afbce84SLiang Chen	keep-power-in-suspend;
5874afbce84SLiang Chen	non-removable;
5884afbce84SLiang Chen	mmc-pwrseq = <&sdio_pwrseq>;
5894afbce84SLiang Chen	sd-uhs-sdr104;
5904afbce84SLiang Chen	status = "okay";
5914afbce84SLiang Chen};
5924afbce84SLiang Chen
59367dd31f7SHeiko Stuebner&tsadc {
59467dd31f7SHeiko Stuebner	rockchip,hw-tshut-mode = <1>;
59567dd31f7SHeiko Stuebner	rockchip,hw-tshut-polarity = <1>;
59667dd31f7SHeiko Stuebner	status = "okay";
59767dd31f7SHeiko Stuebner};
59867dd31f7SHeiko Stuebner
5990815dc22SHeiko Stuebner&u2phy {
6000815dc22SHeiko Stuebner	status = "okay";
6010815dc22SHeiko Stuebner
6020815dc22SHeiko Stuebner	u2phy_host: host-port {
6030815dc22SHeiko Stuebner		status = "okay";
6040815dc22SHeiko Stuebner	};
6050815dc22SHeiko Stuebner
6060815dc22SHeiko Stuebner	u2phy_otg: otg-port {
6070815dc22SHeiko Stuebner		status = "okay";
6080815dc22SHeiko Stuebner	};
6090815dc22SHeiko Stuebner};
6100815dc22SHeiko Stuebner
6114afbce84SLiang Chen&uart1 {
6124afbce84SLiang Chen	pinctrl-names = "default";
6134afbce84SLiang Chen	pinctrl-0 = <&uart1_xfer &uart1_cts>;
6144afbce84SLiang Chen	status = "okay";
6154afbce84SLiang Chen};
6164afbce84SLiang Chen
6179003aacbSHeiko Stuebner&uart5 {
6184afbce84SLiang Chen	status = "okay";
6194afbce84SLiang Chen};
6204afbce84SLiang Chen
6212ed30cfcSHeiko Stuebner&usb20_otg {
6222ed30cfcSHeiko Stuebner	status = "okay";
6232ed30cfcSHeiko Stuebner};
6242ed30cfcSHeiko Stuebner
6254afbce84SLiang Chen&usb_host0_ehci {
6264afbce84SLiang Chen	status = "okay";
6274afbce84SLiang Chen};
6284afbce84SLiang Chen
6294afbce84SLiang Chen&usb_host0_ohci {
6304afbce84SLiang Chen	status = "okay";
6314afbce84SLiang Chen};
6324afbce84SLiang Chen
6334afbce84SLiang Chen&vopb {
6344afbce84SLiang Chen	status = "okay";
6354afbce84SLiang Chen};
6364afbce84SLiang Chen
6374afbce84SLiang Chen&vopb_mmu {
6384afbce84SLiang Chen	status = "okay";
6394afbce84SLiang Chen};
6404afbce84SLiang Chen
6414afbce84SLiang Chen&vopl {
6424afbce84SLiang Chen	status = "okay";
6434afbce84SLiang Chen};
6444afbce84SLiang Chen
6454afbce84SLiang Chen&vopl_mmu {
6464afbce84SLiang Chen	status = "okay";
6474afbce84SLiang Chen};
648