xref: /openbmc/linux/arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts (revision 8c2e09b9a2f58baf99b4f88d12ef8751f8b0822b)
1674ef1d0SIcenowy Zheng// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2674ef1d0SIcenowy Zheng/*
3674ef1d0SIcenowy Zheng * Copyright (C) 2019 Icenowy Zheng <icenowy@aosc.xyz>
4674ef1d0SIcenowy Zheng *
5674ef1d0SIcenowy Zheng */
6674ef1d0SIcenowy Zheng
7674ef1d0SIcenowy Zheng/dts-v1/;
8674ef1d0SIcenowy Zheng
9674ef1d0SIcenowy Zheng#include "sun50i-a64.dtsi"
10674ef1d0SIcenowy Zheng#include "sun50i-a64-cpu-opp.dtsi"
11674ef1d0SIcenowy Zheng
12674ef1d0SIcenowy Zheng#include <dt-bindings/gpio/gpio.h>
13674ef1d0SIcenowy Zheng#include <dt-bindings/input/input.h>
14674ef1d0SIcenowy Zheng#include <dt-bindings/pwm/pwm.h>
15674ef1d0SIcenowy Zheng
16674ef1d0SIcenowy Zheng/ {
17bdb574e5SIcenowy Zheng	model = "PineTab, Development Sample";
18674ef1d0SIcenowy Zheng	compatible = "pine64,pinetab", "allwinner,sun50i-a64";
19674ef1d0SIcenowy Zheng
20674ef1d0SIcenowy Zheng	aliases {
21674ef1d0SIcenowy Zheng		serial0 = &uart0;
22674ef1d0SIcenowy Zheng		ethernet0 = &rtl8723cs;
23674ef1d0SIcenowy Zheng	};
24674ef1d0SIcenowy Zheng
25674ef1d0SIcenowy Zheng	backlight: backlight {
26674ef1d0SIcenowy Zheng		compatible = "pwm-backlight";
27674ef1d0SIcenowy Zheng		pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
28674ef1d0SIcenowy Zheng		brightness-levels = <0 16 18 20 22 24 26 29 32 35 38 42 46 51 56 62 68 75 83 91 100>;
29674ef1d0SIcenowy Zheng		default-brightness-level = <15>;
30674ef1d0SIcenowy Zheng		enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
31674ef1d0SIcenowy Zheng		power-supply = <&vdd_bl>;
32674ef1d0SIcenowy Zheng	};
33674ef1d0SIcenowy Zheng
34674ef1d0SIcenowy Zheng	chosen {
35674ef1d0SIcenowy Zheng		stdout-path = "serial0:115200n8";
36674ef1d0SIcenowy Zheng	};
37674ef1d0SIcenowy Zheng
38*8c2e09b9SDang Huynh	hdmi-connector {
39*8c2e09b9SDang Huynh		compatible = "hdmi-connector";
40*8c2e09b9SDang Huynh		type = "c";
41*8c2e09b9SDang Huynh
42*8c2e09b9SDang Huynh		port {
43*8c2e09b9SDang Huynh			hdmi_con_in: endpoint {
44*8c2e09b9SDang Huynh				remote-endpoint = <&hdmi_out_con>;
45*8c2e09b9SDang Huynh			};
46*8c2e09b9SDang Huynh		};
47*8c2e09b9SDang Huynh	};
48*8c2e09b9SDang Huynh
49674ef1d0SIcenowy Zheng	i2c-csi {
50674ef1d0SIcenowy Zheng		compatible = "i2c-gpio";
51674ef1d0SIcenowy Zheng		sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* PE13 */
52674ef1d0SIcenowy Zheng		scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; /* PE12 */
53674ef1d0SIcenowy Zheng		i2c-gpio,delay-us = <5>;
54674ef1d0SIcenowy Zheng		#address-cells = <1>;
55674ef1d0SIcenowy Zheng		#size-cells = <0>;
56674ef1d0SIcenowy Zheng
57674ef1d0SIcenowy Zheng		/* Rear camera */
58674ef1d0SIcenowy Zheng		ov5640: camera@3c {
59674ef1d0SIcenowy Zheng			compatible = "ovti,ov5640";
60674ef1d0SIcenowy Zheng			reg = <0x3c>;
61674ef1d0SIcenowy Zheng			pinctrl-names = "default";
62674ef1d0SIcenowy Zheng			pinctrl-0 = <&csi_mclk_pin>;
63674ef1d0SIcenowy Zheng			clocks = <&ccu CLK_CSI_MCLK>;
64674ef1d0SIcenowy Zheng			clock-names = "xclk";
65674ef1d0SIcenowy Zheng
66674ef1d0SIcenowy Zheng			AVDD-supply = <&reg_dldo3>;
67674ef1d0SIcenowy Zheng			DOVDD-supply = <&reg_aldo1>;
68674ef1d0SIcenowy Zheng			DVDD-supply = <&reg_eldo3>;
69674ef1d0SIcenowy Zheng			reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* PE14 */
70674ef1d0SIcenowy Zheng			powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */
71674ef1d0SIcenowy Zheng
72674ef1d0SIcenowy Zheng			port {
73674ef1d0SIcenowy Zheng				ov5640_ep: endpoint {
74674ef1d0SIcenowy Zheng					remote-endpoint = <&csi_ep>;
75674ef1d0SIcenowy Zheng					bus-width = <8>;
76674ef1d0SIcenowy Zheng					hsync-active = <1>; /* Active high */
77674ef1d0SIcenowy Zheng					vsync-active = <0>; /* Active low */
78674ef1d0SIcenowy Zheng					data-active = <1>;  /* Active high */
79674ef1d0SIcenowy Zheng					pclk-sample = <1>;  /* Rising */
80674ef1d0SIcenowy Zheng				};
81674ef1d0SIcenowy Zheng			};
82674ef1d0SIcenowy Zheng		};
83674ef1d0SIcenowy Zheng	};
84674ef1d0SIcenowy Zheng
85674ef1d0SIcenowy Zheng	speaker_amp: audio-amplifier {
86674ef1d0SIcenowy Zheng		compatible = "simple-audio-amplifier";
87674ef1d0SIcenowy Zheng		enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
88674ef1d0SIcenowy Zheng		sound-name-prefix = "Speaker Amp";
89674ef1d0SIcenowy Zheng	};
90674ef1d0SIcenowy Zheng
9135ce5b87SMaxime Ripard	vdd_bl: regulator {
92674ef1d0SIcenowy Zheng		compatible = "regulator-fixed";
93674ef1d0SIcenowy Zheng		regulator-name = "bl-3v3";
94674ef1d0SIcenowy Zheng		regulator-min-microvolt = <3300000>;
95674ef1d0SIcenowy Zheng		regulator-max-microvolt = <3300000>;
96674ef1d0SIcenowy Zheng		gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
97674ef1d0SIcenowy Zheng		enable-active-high;
98674ef1d0SIcenowy Zheng	};
99674ef1d0SIcenowy Zheng
100674ef1d0SIcenowy Zheng	wifi_pwrseq: wifi_pwrseq {
101674ef1d0SIcenowy Zheng		compatible = "mmc-pwrseq-simple";
102674ef1d0SIcenowy Zheng		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
103674ef1d0SIcenowy Zheng		post-power-on-delay-ms = <200>;
104674ef1d0SIcenowy Zheng	};
105674ef1d0SIcenowy Zheng};
106674ef1d0SIcenowy Zheng
107674ef1d0SIcenowy Zheng&codec {
108674ef1d0SIcenowy Zheng	status = "okay";
109674ef1d0SIcenowy Zheng};
110674ef1d0SIcenowy Zheng
111674ef1d0SIcenowy Zheng&codec_analog {
1125f39dd23SSamuel Holland	cpvdd-supply = <&reg_eldo1>;
113674ef1d0SIcenowy Zheng	status = "okay";
114674ef1d0SIcenowy Zheng};
115674ef1d0SIcenowy Zheng
116674ef1d0SIcenowy Zheng&cpu0 {
117674ef1d0SIcenowy Zheng	cpu-supply = <&reg_dcdc2>;
118674ef1d0SIcenowy Zheng};
119674ef1d0SIcenowy Zheng
120674ef1d0SIcenowy Zheng&cpu1 {
121674ef1d0SIcenowy Zheng	cpu-supply = <&reg_dcdc2>;
122674ef1d0SIcenowy Zheng};
123674ef1d0SIcenowy Zheng
124674ef1d0SIcenowy Zheng&cpu2 {
125674ef1d0SIcenowy Zheng	cpu-supply = <&reg_dcdc2>;
126674ef1d0SIcenowy Zheng};
127674ef1d0SIcenowy Zheng
128674ef1d0SIcenowy Zheng&cpu3 {
129674ef1d0SIcenowy Zheng	cpu-supply = <&reg_dcdc2>;
130674ef1d0SIcenowy Zheng};
131674ef1d0SIcenowy Zheng
132674ef1d0SIcenowy Zheng&csi {
133674ef1d0SIcenowy Zheng	status = "okay";
134674ef1d0SIcenowy Zheng
135674ef1d0SIcenowy Zheng	port {
136674ef1d0SIcenowy Zheng		csi_ep: endpoint {
137674ef1d0SIcenowy Zheng			remote-endpoint = <&ov5640_ep>;
138674ef1d0SIcenowy Zheng			bus-width = <8>;
139674ef1d0SIcenowy Zheng			hsync-active = <1>; /* Active high */
140674ef1d0SIcenowy Zheng			vsync-active = <0>; /* Active low */
141674ef1d0SIcenowy Zheng			data-active = <1>;  /* Active high */
142674ef1d0SIcenowy Zheng			pclk-sample = <1>;  /* Rising */
143674ef1d0SIcenowy Zheng		};
144674ef1d0SIcenowy Zheng	};
145674ef1d0SIcenowy Zheng};
146674ef1d0SIcenowy Zheng
147674ef1d0SIcenowy Zheng&dai {
148674ef1d0SIcenowy Zheng	status = "okay";
149674ef1d0SIcenowy Zheng};
150674ef1d0SIcenowy Zheng
151674ef1d0SIcenowy Zheng&de {
152674ef1d0SIcenowy Zheng	status = "okay";
153674ef1d0SIcenowy Zheng};
154674ef1d0SIcenowy Zheng
155674ef1d0SIcenowy Zheng&dphy {
156674ef1d0SIcenowy Zheng	status = "okay";
157674ef1d0SIcenowy Zheng};
158674ef1d0SIcenowy Zheng
159674ef1d0SIcenowy Zheng&dsi {
160674ef1d0SIcenowy Zheng	vcc-dsi-supply = <&reg_dldo1>;
161674ef1d0SIcenowy Zheng	status = "okay";
162674ef1d0SIcenowy Zheng
163674ef1d0SIcenowy Zheng	panel@0 {
164674ef1d0SIcenowy Zheng		compatible = "feixin,k101-im2ba02";
165674ef1d0SIcenowy Zheng		reg = <0>;
166674ef1d0SIcenowy Zheng		avdd-supply = <&reg_dc1sw>;
167674ef1d0SIcenowy Zheng		dvdd-supply = <&reg_dc1sw>;
168674ef1d0SIcenowy Zheng		cvdd-supply = <&reg_ldo_io1>;
169674ef1d0SIcenowy Zheng		reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */
170674ef1d0SIcenowy Zheng		backlight = <&backlight>;
171674ef1d0SIcenowy Zheng	};
172674ef1d0SIcenowy Zheng};
173674ef1d0SIcenowy Zheng
174674ef1d0SIcenowy Zheng&ehci0 {
175674ef1d0SIcenowy Zheng	status = "okay";
176674ef1d0SIcenowy Zheng};
177674ef1d0SIcenowy Zheng
178674ef1d0SIcenowy Zheng&ehci1 {
179674ef1d0SIcenowy Zheng	status = "okay";
180674ef1d0SIcenowy Zheng};
181674ef1d0SIcenowy Zheng
182674ef1d0SIcenowy Zheng&i2c0 {
183674ef1d0SIcenowy Zheng	status = "okay";
184674ef1d0SIcenowy Zheng
185674ef1d0SIcenowy Zheng	touchscreen@5d {
186674ef1d0SIcenowy Zheng		compatible = "goodix,gt9271";
187674ef1d0SIcenowy Zheng		reg = <0x5d>;
188674ef1d0SIcenowy Zheng		interrupt-parent = <&pio>;
189674ef1d0SIcenowy Zheng		interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */
190674ef1d0SIcenowy Zheng		irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
191674ef1d0SIcenowy Zheng		reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */
192674ef1d0SIcenowy Zheng		AVDD28-supply = <&reg_ldo_io1>;
193674ef1d0SIcenowy Zheng	};
194674ef1d0SIcenowy Zheng};
195674ef1d0SIcenowy Zheng
196674ef1d0SIcenowy Zheng&i2c0_pins {
197674ef1d0SIcenowy Zheng	bias-pull-up;
198674ef1d0SIcenowy Zheng};
199674ef1d0SIcenowy Zheng
200674ef1d0SIcenowy Zheng&i2c1 {
201674ef1d0SIcenowy Zheng	status = "okay";
202674ef1d0SIcenowy Zheng
203674ef1d0SIcenowy Zheng	/* TODO: add Bochs BMA223 accelerometer here */
204674ef1d0SIcenowy Zheng};
205674ef1d0SIcenowy Zheng
206674ef1d0SIcenowy Zheng&lradc {
207674ef1d0SIcenowy Zheng	vref-supply = <&reg_aldo3>;
208674ef1d0SIcenowy Zheng	status = "okay";
209674ef1d0SIcenowy Zheng
210674ef1d0SIcenowy Zheng	button-200 {
211674ef1d0SIcenowy Zheng		label = "Volume Up";
212674ef1d0SIcenowy Zheng		linux,code = <KEY_VOLUMEUP>;
213674ef1d0SIcenowy Zheng		channel = <0>;
214674ef1d0SIcenowy Zheng		voltage = <200000>;
215674ef1d0SIcenowy Zheng	};
216674ef1d0SIcenowy Zheng
217674ef1d0SIcenowy Zheng	button-400 {
218674ef1d0SIcenowy Zheng		label = "Volume Down";
219674ef1d0SIcenowy Zheng		linux,code = <KEY_VOLUMEDOWN>;
220674ef1d0SIcenowy Zheng		channel = <0>;
221674ef1d0SIcenowy Zheng		voltage = <400000>;
222674ef1d0SIcenowy Zheng	};
223674ef1d0SIcenowy Zheng};
224674ef1d0SIcenowy Zheng
225674ef1d0SIcenowy Zheng&mixer1 {
226674ef1d0SIcenowy Zheng	status = "okay";
227674ef1d0SIcenowy Zheng};
228674ef1d0SIcenowy Zheng
229674ef1d0SIcenowy Zheng&mmc0 {
230674ef1d0SIcenowy Zheng	pinctrl-names = "default";
231674ef1d0SIcenowy Zheng	pinctrl-0 = <&mmc0_pins>;
232674ef1d0SIcenowy Zheng	vmmc-supply = <&reg_dcdc1>;
233674ef1d0SIcenowy Zheng	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
234674ef1d0SIcenowy Zheng	disable-wp;
235674ef1d0SIcenowy Zheng	bus-width = <4>;
236674ef1d0SIcenowy Zheng	status = "okay";
237674ef1d0SIcenowy Zheng};
238674ef1d0SIcenowy Zheng
239674ef1d0SIcenowy Zheng&mmc1 {
240674ef1d0SIcenowy Zheng	pinctrl-names = "default";
241674ef1d0SIcenowy Zheng	pinctrl-0 = <&mmc1_pins>;
242674ef1d0SIcenowy Zheng	vmmc-supply = <&reg_dldo4>;
243674ef1d0SIcenowy Zheng	vqmmc-supply = <&reg_eldo1>;
244674ef1d0SIcenowy Zheng	mmc-pwrseq = <&wifi_pwrseq>;
245674ef1d0SIcenowy Zheng	bus-width = <4>;
246674ef1d0SIcenowy Zheng	non-removable;
247674ef1d0SIcenowy Zheng	status = "okay";
248674ef1d0SIcenowy Zheng
249674ef1d0SIcenowy Zheng	rtl8723cs: wifi@1 {
250674ef1d0SIcenowy Zheng		reg = <1>;
251674ef1d0SIcenowy Zheng	};
252674ef1d0SIcenowy Zheng};
253674ef1d0SIcenowy Zheng
254674ef1d0SIcenowy Zheng&mmc2 {
255674ef1d0SIcenowy Zheng	pinctrl-names = "default";
256674ef1d0SIcenowy Zheng	pinctrl-0 = <&mmc2_pins>;
257674ef1d0SIcenowy Zheng	vmmc-supply = <&reg_dcdc1>;
258674ef1d0SIcenowy Zheng	vqmmc-supply = <&reg_dcdc1>;
259674ef1d0SIcenowy Zheng	bus-width = <8>;
260674ef1d0SIcenowy Zheng	non-removable;
261674ef1d0SIcenowy Zheng	cap-mmc-hw-reset;
262674ef1d0SIcenowy Zheng	status = "okay";
263674ef1d0SIcenowy Zheng};
264674ef1d0SIcenowy Zheng
265674ef1d0SIcenowy Zheng&ohci0 {
266674ef1d0SIcenowy Zheng	status = "okay";
267674ef1d0SIcenowy Zheng};
268674ef1d0SIcenowy Zheng
269674ef1d0SIcenowy Zheng&pwm {
270674ef1d0SIcenowy Zheng	status = "okay";
271674ef1d0SIcenowy Zheng};
272674ef1d0SIcenowy Zheng
273674ef1d0SIcenowy Zheng&r_rsb {
274674ef1d0SIcenowy Zheng	status = "okay";
275674ef1d0SIcenowy Zheng
276674ef1d0SIcenowy Zheng	axp803: pmic@3a3 {
277674ef1d0SIcenowy Zheng		compatible = "x-powers,axp803";
278674ef1d0SIcenowy Zheng		reg = <0x3a3>;
279674ef1d0SIcenowy Zheng		interrupt-parent = <&r_intc>;
28073088dfeSSamuel Holland		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
281674ef1d0SIcenowy Zheng		x-powers,drive-vbus-en;
282674ef1d0SIcenowy Zheng	};
283674ef1d0SIcenowy Zheng};
284674ef1d0SIcenowy Zheng
285674ef1d0SIcenowy Zheng#include "axp803.dtsi"
286674ef1d0SIcenowy Zheng
287674ef1d0SIcenowy Zheng&ac_power_supply {
288674ef1d0SIcenowy Zheng	status = "okay";
289674ef1d0SIcenowy Zheng};
290674ef1d0SIcenowy Zheng
291674ef1d0SIcenowy Zheng&battery_power_supply {
292674ef1d0SIcenowy Zheng	status = "okay";
293674ef1d0SIcenowy Zheng};
294674ef1d0SIcenowy Zheng
295674ef1d0SIcenowy Zheng&reg_aldo1 {
296674ef1d0SIcenowy Zheng	regulator-min-microvolt = <2800000>;
297674ef1d0SIcenowy Zheng	regulator-max-microvolt = <2800000>;
298674ef1d0SIcenowy Zheng	regulator-name = "dovdd-csi";
299674ef1d0SIcenowy Zheng};
300674ef1d0SIcenowy Zheng
301674ef1d0SIcenowy Zheng&reg_aldo2 {
302674ef1d0SIcenowy Zheng	regulator-always-on;
303674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1800000>;
304674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
305674ef1d0SIcenowy Zheng	regulator-name = "vcc-pl";
306674ef1d0SIcenowy Zheng};
307674ef1d0SIcenowy Zheng
308674ef1d0SIcenowy Zheng&reg_aldo3 {
309674ef1d0SIcenowy Zheng	regulator-always-on;
310674ef1d0SIcenowy Zheng	regulator-min-microvolt = <2700000>;
311674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
312674ef1d0SIcenowy Zheng	regulator-name = "vcc-pll-avcc";
313674ef1d0SIcenowy Zheng};
314674ef1d0SIcenowy Zheng
315674ef1d0SIcenowy Zheng&reg_dc1sw {
316674ef1d0SIcenowy Zheng	regulator-name = "vcc-lcd";
317674ef1d0SIcenowy Zheng};
318674ef1d0SIcenowy Zheng
319674ef1d0SIcenowy Zheng&reg_dcdc1 {
320674ef1d0SIcenowy Zheng	regulator-always-on;
321674ef1d0SIcenowy Zheng	regulator-min-microvolt = <3300000>;
322674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
323674ef1d0SIcenowy Zheng	regulator-name = "vcc-3v3";
324674ef1d0SIcenowy Zheng};
325674ef1d0SIcenowy Zheng
326674ef1d0SIcenowy Zheng&reg_dcdc2 {
327674ef1d0SIcenowy Zheng	regulator-always-on;
328674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1000000>;
329674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1300000>;
330674ef1d0SIcenowy Zheng	regulator-name = "vdd-cpux";
331674ef1d0SIcenowy Zheng};
332674ef1d0SIcenowy Zheng
333674ef1d0SIcenowy Zheng/* DCDC3 is polyphased with DCDC2 */
334674ef1d0SIcenowy Zheng
335674ef1d0SIcenowy Zheng&reg_dcdc5 {
336674ef1d0SIcenowy Zheng	regulator-always-on;
337674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1200000>;
338674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1200000>;
339674ef1d0SIcenowy Zheng	regulator-name = "vcc-dram";
340674ef1d0SIcenowy Zheng};
341674ef1d0SIcenowy Zheng
342674ef1d0SIcenowy Zheng&reg_dcdc6 {
343674ef1d0SIcenowy Zheng	regulator-always-on;
344674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1100000>;
345674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1100000>;
346674ef1d0SIcenowy Zheng	regulator-name = "vdd-sys";
347674ef1d0SIcenowy Zheng};
348674ef1d0SIcenowy Zheng
349674ef1d0SIcenowy Zheng&reg_dldo1 {
350674ef1d0SIcenowy Zheng	regulator-always-on;
351674ef1d0SIcenowy Zheng	regulator-min-microvolt = <3300000>;
352674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
353674ef1d0SIcenowy Zheng	regulator-name = "vcc-hdmi-dsi-sensor";
354674ef1d0SIcenowy Zheng};
355674ef1d0SIcenowy Zheng
356674ef1d0SIcenowy Zheng&reg_dldo3 {
357674ef1d0SIcenowy Zheng	regulator-min-microvolt = <2800000>;
358674ef1d0SIcenowy Zheng	regulator-max-microvolt = <2800000>;
359674ef1d0SIcenowy Zheng	regulator-name = "avdd-csi";
360674ef1d0SIcenowy Zheng};
361674ef1d0SIcenowy Zheng
362674ef1d0SIcenowy Zheng&reg_dldo4 {
363674ef1d0SIcenowy Zheng	regulator-min-microvolt = <3300000>;
364674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
365674ef1d0SIcenowy Zheng	regulator-name = "vcc-wifi";
366674ef1d0SIcenowy Zheng};
367674ef1d0SIcenowy Zheng
368674ef1d0SIcenowy Zheng&reg_drivevbus {
369674ef1d0SIcenowy Zheng	regulator-name = "usb0-vbus";
370674ef1d0SIcenowy Zheng	status = "okay";
371674ef1d0SIcenowy Zheng};
372674ef1d0SIcenowy Zheng
373674ef1d0SIcenowy Zheng&reg_eldo1 {
374674ef1d0SIcenowy Zheng	regulator-always-on;
375674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1800000>;
376674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1800000>;
377674ef1d0SIcenowy Zheng	regulator-name = "cpvdd";
378674ef1d0SIcenowy Zheng};
379674ef1d0SIcenowy Zheng
380674ef1d0SIcenowy Zheng&reg_eldo2 {
381674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1800000>;
382674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1800000>;
383674ef1d0SIcenowy Zheng	regulator-name = "vcca-1v8";
384674ef1d0SIcenowy Zheng};
385674ef1d0SIcenowy Zheng
386674ef1d0SIcenowy Zheng&reg_eldo3 {
387674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1800000>;
388674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1800000>;
389674ef1d0SIcenowy Zheng	regulator-name = "dvdd-1v8-csi";
390674ef1d0SIcenowy Zheng};
391674ef1d0SIcenowy Zheng
392674ef1d0SIcenowy Zheng&reg_fldo1 {
393674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1200000>;
394674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1200000>;
395674ef1d0SIcenowy Zheng	regulator-name = "vcc-1v2-hsic";
396674ef1d0SIcenowy Zheng};
397674ef1d0SIcenowy Zheng
398674ef1d0SIcenowy Zheng&reg_fldo2 {
399674ef1d0SIcenowy Zheng	regulator-always-on;
400674ef1d0SIcenowy Zheng	regulator-min-microvolt = <1100000>;
401674ef1d0SIcenowy Zheng	regulator-max-microvolt = <1100000>;
402674ef1d0SIcenowy Zheng	regulator-name = "vdd-cpus";
403674ef1d0SIcenowy Zheng};
404674ef1d0SIcenowy Zheng
405674ef1d0SIcenowy Zheng&reg_ldo_io0 {
406674ef1d0SIcenowy Zheng	regulator-min-microvolt = <3300000>;
407674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
408674ef1d0SIcenowy Zheng	regulator-name = "vcc-usb";
409674ef1d0SIcenowy Zheng	status = "okay";
410674ef1d0SIcenowy Zheng};
411674ef1d0SIcenowy Zheng
412674ef1d0SIcenowy Zheng&reg_ldo_io1 {
413674ef1d0SIcenowy Zheng	regulator-min-microvolt = <3300000>;
414674ef1d0SIcenowy Zheng	regulator-max-microvolt = <3300000>;
415674ef1d0SIcenowy Zheng	regulator-enable-ramp-delay = <3500000>;
416674ef1d0SIcenowy Zheng	regulator-name = "vcc-touchscreen";
417674ef1d0SIcenowy Zheng	status = "okay";
418674ef1d0SIcenowy Zheng};
419674ef1d0SIcenowy Zheng
420674ef1d0SIcenowy Zheng&reg_rtc_ldo {
421674ef1d0SIcenowy Zheng	regulator-name = "vcc-rtc";
422674ef1d0SIcenowy Zheng};
423674ef1d0SIcenowy Zheng
424*8c2e09b9SDang Huynh&simplefb_hdmi {
425*8c2e09b9SDang Huynh	vcc-hdmi-supply = <&reg_dldo1>;
426*8c2e09b9SDang Huynh};
427*8c2e09b9SDang Huynh
428*8c2e09b9SDang Huynh&hdmi {
429*8c2e09b9SDang Huynh	hvcc-supply = <&reg_dldo1>;
430*8c2e09b9SDang Huynh	status = "okay";
431*8c2e09b9SDang Huynh};
432*8c2e09b9SDang Huynh
433*8c2e09b9SDang Huynh&hdmi_out {
434*8c2e09b9SDang Huynh	hdmi_out_con: endpoint {
435*8c2e09b9SDang Huynh		remote-endpoint = <&hdmi_con_in>;
436*8c2e09b9SDang Huynh	};
437*8c2e09b9SDang Huynh};
438*8c2e09b9SDang Huynh
439674ef1d0SIcenowy Zheng&sound {
440674ef1d0SIcenowy Zheng	status = "okay";
441674ef1d0SIcenowy Zheng	simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
442674ef1d0SIcenowy Zheng	simple-audio-card,widgets = "Microphone", "Internal Microphone Left",
443674ef1d0SIcenowy Zheng				    "Microphone", "Internal Microphone Right",
444674ef1d0SIcenowy Zheng				    "Headphone", "Headphone Jack",
445674ef1d0SIcenowy Zheng				    "Speaker", "Internal Speaker";
446674ef1d0SIcenowy Zheng	simple-audio-card,routing =
447631e6a35SSamuel Holland			"Left DAC", "DACL",
448631e6a35SSamuel Holland			"Right DAC", "DACR",
449674ef1d0SIcenowy Zheng			"Speaker Amp INL", "LINEOUT",
450674ef1d0SIcenowy Zheng			"Speaker Amp INR", "LINEOUT",
451674ef1d0SIcenowy Zheng			"Internal Speaker", "Speaker Amp OUTL",
452674ef1d0SIcenowy Zheng			"Internal Speaker", "Speaker Amp OUTR",
453674ef1d0SIcenowy Zheng			"Headphone Jack", "HP",
454631e6a35SSamuel Holland			"ADCL", "Left ADC",
455631e6a35SSamuel Holland			"ADCR", "Right ADC",
456674ef1d0SIcenowy Zheng			"Internal Microphone Left", "MBIAS",
457674ef1d0SIcenowy Zheng			"MIC1", "Internal Microphone Left",
458674ef1d0SIcenowy Zheng			"Internal Microphone Right", "HBIAS",
459674ef1d0SIcenowy Zheng			"MIC2", "Internal Microphone Right";
460674ef1d0SIcenowy Zheng};
461674ef1d0SIcenowy Zheng
462674ef1d0SIcenowy Zheng&uart0 {
463674ef1d0SIcenowy Zheng	pinctrl-names = "default";
464674ef1d0SIcenowy Zheng	pinctrl-0 = <&uart0_pb_pins>;
465674ef1d0SIcenowy Zheng	status = "okay";
466674ef1d0SIcenowy Zheng};
467674ef1d0SIcenowy Zheng
468674ef1d0SIcenowy Zheng&usb_otg {
469674ef1d0SIcenowy Zheng	dr_mode = "otg";
470674ef1d0SIcenowy Zheng	status = "okay";
471674ef1d0SIcenowy Zheng};
472674ef1d0SIcenowy Zheng
473674ef1d0SIcenowy Zheng&usb_power_supply {
474674ef1d0SIcenowy Zheng	status = "okay";
475674ef1d0SIcenowy Zheng};
476674ef1d0SIcenowy Zheng
477674ef1d0SIcenowy Zheng&usbphy {
478674ef1d0SIcenowy Zheng	usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
479674ef1d0SIcenowy Zheng	usb0_vbus_power-supply = <&usb_power_supply>;
480674ef1d0SIcenowy Zheng	usb0_vbus-supply = <&reg_drivevbus>;
481674ef1d0SIcenowy Zheng	usb1_vbus-supply = <&reg_ldo_io0>;
482674ef1d0SIcenowy Zheng	status = "okay";
483674ef1d0SIcenowy Zheng};
484