xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright (C) 2017 Touchless Biometric Systems AG
3*4882a593Smuzhiyun * Tomas Novotny <tomas@novotny.cz>
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms
6*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual
7*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a
8*4882a593Smuzhiyun * whole.
9*4882a593Smuzhiyun *
10*4882a593Smuzhiyun *  a) This file is free software; you can redistribute it and/or
11*4882a593Smuzhiyun *     modify it under the terms of the GNU General Public License as
12*4882a593Smuzhiyun *     published by the Free Software Foundation; either version 2 of the
13*4882a593Smuzhiyun *     License, or (at your option) any later version.
14*4882a593Smuzhiyun *
15*4882a593Smuzhiyun *     This file is distributed in the hope that it will be useful,
16*4882a593Smuzhiyun *     but WITHOUT ANY WARRANTY; without even the implied warranty of
17*4882a593Smuzhiyun *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*4882a593Smuzhiyun *     GNU General Public License for more details.
19*4882a593Smuzhiyun *
20*4882a593Smuzhiyun * Or, alternatively,
21*4882a593Smuzhiyun *
22*4882a593Smuzhiyun *  b) Permission is hereby granted, free of charge, to any person
23*4882a593Smuzhiyun *     obtaining a copy of this software and associated documentation
24*4882a593Smuzhiyun *     files (the "Software"), to deal in the Software without
25*4882a593Smuzhiyun *     restriction, including without limitation the rights to use,
26*4882a593Smuzhiyun *     copy, modify, merge, publish, distribute, sublicense, and/or
27*4882a593Smuzhiyun *     sell copies of the Software, and to permit persons to whom the
28*4882a593Smuzhiyun *     Software is furnished to do so, subject to the following
29*4882a593Smuzhiyun *     conditions:
30*4882a593Smuzhiyun *
31*4882a593Smuzhiyun *     The above copyright notice and this permission notice shall be
32*4882a593Smuzhiyun *     included in all copies or substantial portions of the Software.
33*4882a593Smuzhiyun *
34*4882a593Smuzhiyun *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35*4882a593Smuzhiyun *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
36*4882a593Smuzhiyun *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37*4882a593Smuzhiyun *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
38*4882a593Smuzhiyun *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39*4882a593Smuzhiyun *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
40*4882a593Smuzhiyun *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
41*4882a593Smuzhiyun *     OTHER DEALINGS IN THE SOFTWARE.
42*4882a593Smuzhiyun */
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun/dts-v1/;
45*4882a593Smuzhiyun#include "sun8i-a83t.dtsi"
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
48*4882a593Smuzhiyun#include <dt-bindings/pwm/pwm.h>
49*4882a593Smuzhiyun#include <dt-bindings/input/input.h>
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun/ {
52*4882a593Smuzhiyun	model = "TBS A711 Tablet";
53*4882a593Smuzhiyun	compatible = "tbs-biometrics,a711", "allwinner,sun8i-a83t";
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun	aliases {
56*4882a593Smuzhiyun		serial0 = &uart0;
57*4882a593Smuzhiyun		serial1 = &uart1;
58*4882a593Smuzhiyun	};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	chosen {
61*4882a593Smuzhiyun		stdout-path = "serial0:115200n8";
62*4882a593Smuzhiyun	};
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun	backlight: backlight {
65*4882a593Smuzhiyun		compatible = "pwm-backlight";
66*4882a593Smuzhiyun		pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
67*4882a593Smuzhiyun		enable-gpios = <&pio 3 29 GPIO_ACTIVE_HIGH>;
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun		brightness-levels = <0 1 2 4 8 16 32 64 128 255>;
70*4882a593Smuzhiyun		default-brightness-level = <9>;
71*4882a593Smuzhiyun	};
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun	panel {
74*4882a593Smuzhiyun		compatible = "tbs,a711-panel", "panel-lvds";
75*4882a593Smuzhiyun		backlight = <&backlight>;
76*4882a593Smuzhiyun		power-supply = <&reg_sw>;
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun		width-mm = <153>;
79*4882a593Smuzhiyun		height-mm = <90>;
80*4882a593Smuzhiyun		data-mapping = "vesa-24";
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun		panel-timing {
83*4882a593Smuzhiyun			/* 1024x600 @60Hz */
84*4882a593Smuzhiyun			clock-frequency = <52000000>;
85*4882a593Smuzhiyun			hactive = <1024>;
86*4882a593Smuzhiyun			vactive = <600>;
87*4882a593Smuzhiyun			hsync-len = <20>;
88*4882a593Smuzhiyun			hfront-porch = <180>;
89*4882a593Smuzhiyun			hback-porch = <160>;
90*4882a593Smuzhiyun			vfront-porch = <12>;
91*4882a593Smuzhiyun			vback-porch = <23>;
92*4882a593Smuzhiyun			vsync-len = <5>;
93*4882a593Smuzhiyun		};
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun		port {
96*4882a593Smuzhiyun			panel_input: endpoint {
97*4882a593Smuzhiyun				remote-endpoint = <&tcon0_out_lcd>;
98*4882a593Smuzhiyun			};
99*4882a593Smuzhiyun		};
100*4882a593Smuzhiyun	};
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun	reg_gps: reg-gps {
103*4882a593Smuzhiyun		compatible = "regulator-fixed";
104*4882a593Smuzhiyun		regulator-name = "gps";
105*4882a593Smuzhiyun		regulator-min-microvolt = <3000000>;
106*4882a593Smuzhiyun		regulator-max-microvolt = <3000000>;
107*4882a593Smuzhiyun	};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	reg_vbat: reg-vbat {
110*4882a593Smuzhiyun		compatible = "regulator-fixed";
111*4882a593Smuzhiyun		regulator-name = "vbat";
112*4882a593Smuzhiyun		regulator-min-microvolt = <3700000>;
113*4882a593Smuzhiyun		regulator-max-microvolt = <3700000>;
114*4882a593Smuzhiyun	};
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun	reg_vmain: reg-vmain {
117*4882a593Smuzhiyun		compatible = "regulator-fixed";
118*4882a593Smuzhiyun		regulator-name = "vmain";
119*4882a593Smuzhiyun		regulator-min-microvolt = <5000000>;
120*4882a593Smuzhiyun		regulator-max-microvolt = <5000000>;
121*4882a593Smuzhiyun		gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>;
122*4882a593Smuzhiyun		enable-active-high;
123*4882a593Smuzhiyun		vin-supply = <&reg_vbat>;
124*4882a593Smuzhiyun	};
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun	wifi_pwrseq: wifi_pwrseq {
127*4882a593Smuzhiyun		compatible = "mmc-pwrseq-simple";
128*4882a593Smuzhiyun		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 WL-PMU-EN */
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun		/*
131*4882a593Smuzhiyun		 * This is actually Bluetooth's clock, but we have to
132*4882a593Smuzhiyun		 * hook it up somewheere
133*4882a593Smuzhiyun		 */
134*4882a593Smuzhiyun		clocks = <&ac100_rtc 1>;
135*4882a593Smuzhiyun		clock-names = "ext_clock";
136*4882a593Smuzhiyun	};
137*4882a593Smuzhiyun};
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun&cpu0 {
140*4882a593Smuzhiyun	cpu-supply = <&reg_dcdc2>;
141*4882a593Smuzhiyun};
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun&cpu100 {
144*4882a593Smuzhiyun	cpu-supply = <&reg_dcdc3>;
145*4882a593Smuzhiyun};
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun&de {
148*4882a593Smuzhiyun	status = "okay";
149*4882a593Smuzhiyun};
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun/*
152*4882a593Smuzhiyun * An USB-2 hub is connected here, which also means we don't need to
153*4882a593Smuzhiyun * enable the OHCI controller.
154*4882a593Smuzhiyun */
155*4882a593Smuzhiyun&ehci0 {
156*4882a593Smuzhiyun	status = "okay";
157*4882a593Smuzhiyun};
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun/*
160*4882a593Smuzhiyun * There's a modem connected here that needs to be initialised before
161*4882a593Smuzhiyun * being able to be enumerated.
162*4882a593Smuzhiyun */
163*4882a593Smuzhiyun&ehci1 {
164*4882a593Smuzhiyun	status = "okay";
165*4882a593Smuzhiyun};
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun&i2c0 {
168*4882a593Smuzhiyun	clock-frequency = <400000>;
169*4882a593Smuzhiyun	status = "okay";
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun	touchscreen@38 {
172*4882a593Smuzhiyun		compatible = "edt,edt-ft5x06";
173*4882a593Smuzhiyun		reg = <0x38>;
174*4882a593Smuzhiyun		interrupt-parent = <&r_pio>;
175*4882a593Smuzhiyun		interrupts = <0 7 IRQ_TYPE_EDGE_FALLING>; /* PL7 */
176*4882a593Smuzhiyun		reset-gpios = <&pio 3 5 GPIO_ACTIVE_LOW>; /* PD5 */
177*4882a593Smuzhiyun		vcc-supply = <&reg_ldo_io0>;
178*4882a593Smuzhiyun		touchscreen-size-x = <1024>;
179*4882a593Smuzhiyun		touchscreen-size-y = <600>;
180*4882a593Smuzhiyun	};
181*4882a593Smuzhiyun};
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun&i2c1 {
184*4882a593Smuzhiyun	clock-frequency = <400000>;
185*4882a593Smuzhiyun	status = "okay";
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun	accelerometer@18 {
188*4882a593Smuzhiyun		compatible = "bosch,bma250";
189*4882a593Smuzhiyun		reg = <0x18>;
190*4882a593Smuzhiyun		interrupt-parent = <&pio>;
191*4882a593Smuzhiyun		interrupts = <7 10 IRQ_TYPE_EDGE_RISING>; /* PH10 / EINT10 */
192*4882a593Smuzhiyun	};
193*4882a593Smuzhiyun};
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun&mmc0 {
196*4882a593Smuzhiyun	vmmc-supply = <&reg_dcdc1>;
197*4882a593Smuzhiyun	pinctrl-names = "default";
198*4882a593Smuzhiyun	pinctrl-0 = <&mmc0_pins>;
199*4882a593Smuzhiyun	bus-width = <4>;
200*4882a593Smuzhiyun	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
201*4882a593Smuzhiyun	status = "okay";
202*4882a593Smuzhiyun};
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun&mmc1 {
205*4882a593Smuzhiyun	mmc-pwrseq = <&wifi_pwrseq>;
206*4882a593Smuzhiyun	bus-width = <4>;
207*4882a593Smuzhiyun	vmmc-supply = <&reg_dldo1>;
208*4882a593Smuzhiyun	vqmmc-supply = <&reg_dldo1>;
209*4882a593Smuzhiyun	non-removable;
210*4882a593Smuzhiyun	wakeup-source;
211*4882a593Smuzhiyun	keep-power-in-suspend;
212*4882a593Smuzhiyun	status = "okay";
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun	brcmf: wifi@1 {
215*4882a593Smuzhiyun		reg = <1>;
216*4882a593Smuzhiyun		compatible = "brcm,bcm4329-fmac";
217*4882a593Smuzhiyun		interrupt-parent = <&r_pio>;
218*4882a593Smuzhiyun		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 WL_WAKE_UP */
219*4882a593Smuzhiyun		interrupt-names = "host-wake";
220*4882a593Smuzhiyun	};
221*4882a593Smuzhiyun};
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun&mmc2 {
224*4882a593Smuzhiyun	pinctrl-0 = <&mmc2_8bit_emmc_pins>;
225*4882a593Smuzhiyun	pinctrl-names = "default";
226*4882a593Smuzhiyun	vmmc-supply = <&reg_dcdc1>;
227*4882a593Smuzhiyun	vqmmc-supply = <&reg_dcdc1>;
228*4882a593Smuzhiyun	bus-width = <8>;
229*4882a593Smuzhiyun	non-removable;
230*4882a593Smuzhiyun	cap-mmc-hw-reset;
231*4882a593Smuzhiyun	status = "okay";
232*4882a593Smuzhiyun};
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun&pwm {
235*4882a593Smuzhiyun	pinctrl-names = "default";
236*4882a593Smuzhiyun	pinctrl-0 = <&pwm_pin>;
237*4882a593Smuzhiyun	status = "okay";
238*4882a593Smuzhiyun};
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun&r_lradc {
241*4882a593Smuzhiyun	vref-supply = <&reg_aldo2>;
242*4882a593Smuzhiyun	status = "okay";
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun	button-210 {
245*4882a593Smuzhiyun		label = "Volume Up";
246*4882a593Smuzhiyun		linux,code = <KEY_VOLUMEUP>;
247*4882a593Smuzhiyun		channel = <0>;
248*4882a593Smuzhiyun		voltage = <210000>;
249*4882a593Smuzhiyun	};
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun	button-410 {
252*4882a593Smuzhiyun		label = "Volume Down";
253*4882a593Smuzhiyun		linux,code = <KEY_VOLUMEDOWN>;
254*4882a593Smuzhiyun		channel = <0>;
255*4882a593Smuzhiyun		voltage = <410000>;
256*4882a593Smuzhiyun	};
257*4882a593Smuzhiyun};
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun&r_rsb {
260*4882a593Smuzhiyun	status = "okay";
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun	axp81x: pmic@3a3 {
263*4882a593Smuzhiyun		compatible = "x-powers,axp813";
264*4882a593Smuzhiyun		reg = <0x3a3>;
265*4882a593Smuzhiyun		interrupt-parent = <&r_intc>;
266*4882a593Smuzhiyun		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
267*4882a593Smuzhiyun		swin-supply = <&reg_dcdc1>;
268*4882a593Smuzhiyun		x-powers,drive-vbus-en;
269*4882a593Smuzhiyun	};
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun	ac100: codec@e89 {
272*4882a593Smuzhiyun		compatible = "x-powers,ac100";
273*4882a593Smuzhiyun		reg = <0xe89>;
274*4882a593Smuzhiyun
275*4882a593Smuzhiyun		ac100_codec: codec {
276*4882a593Smuzhiyun			compatible = "x-powers,ac100-codec";
277*4882a593Smuzhiyun			interrupt-parent = <&r_pio>;
278*4882a593Smuzhiyun			interrupts = <0 12 IRQ_TYPE_LEVEL_LOW>; /* PL12 */
279*4882a593Smuzhiyun			#clock-cells = <0>;
280*4882a593Smuzhiyun			clock-output-names = "4M_adda";
281*4882a593Smuzhiyun		};
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun		ac100_rtc: rtc {
284*4882a593Smuzhiyun			compatible = "x-powers,ac100-rtc";
285*4882a593Smuzhiyun			interrupt-parent = <&r_intc>;
286*4882a593Smuzhiyun			interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
287*4882a593Smuzhiyun			clocks = <&ac100_codec>;
288*4882a593Smuzhiyun			#clock-cells = <1>;
289*4882a593Smuzhiyun			clock-output-names = "cko1_rtc",
290*4882a593Smuzhiyun					     "cko2_rtc",
291*4882a593Smuzhiyun					     "cko3_rtc";
292*4882a593Smuzhiyun		};
293*4882a593Smuzhiyun	};
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun};
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun#include "axp81x.dtsi"
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun&battery_power_supply {
300*4882a593Smuzhiyun	status = "okay";
301*4882a593Smuzhiyun};
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun&reg_aldo1 {
304*4882a593Smuzhiyun	regulator-min-microvolt = <1800000>;
305*4882a593Smuzhiyun	regulator-max-microvolt = <1800000>;
306*4882a593Smuzhiyun	regulator-name = "vcc-1.8";
307*4882a593Smuzhiyun};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun&reg_aldo2 {
310*4882a593Smuzhiyun	regulator-min-microvolt = <1800000>;
311*4882a593Smuzhiyun	regulator-max-microvolt = <1800000>;
312*4882a593Smuzhiyun	regulator-always-on;
313*4882a593Smuzhiyun	regulator-name = "vdd-drampll";
314*4882a593Smuzhiyun};
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun&reg_aldo3 {
317*4882a593Smuzhiyun	regulator-min-microvolt = <3000000>;
318*4882a593Smuzhiyun	regulator-max-microvolt = <3000000>;
319*4882a593Smuzhiyun	regulator-always-on;
320*4882a593Smuzhiyun	regulator-name = "avcc";
321*4882a593Smuzhiyun};
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun&reg_dcdc1 {
324*4882a593Smuzhiyun	regulator-min-microvolt = <3100000>;
325*4882a593Smuzhiyun	regulator-max-microvolt = <3100000>;
326*4882a593Smuzhiyun	regulator-always-on;
327*4882a593Smuzhiyun	regulator-name = "vcc-io";
328*4882a593Smuzhiyun};
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun&reg_dcdc2 {
331*4882a593Smuzhiyun	regulator-min-microvolt = <700000>;
332*4882a593Smuzhiyun	regulator-max-microvolt = <1100000>;
333*4882a593Smuzhiyun	regulator-always-on;
334*4882a593Smuzhiyun	regulator-name = "vdd-cpu-A";
335*4882a593Smuzhiyun};
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun&reg_dcdc3 {
338*4882a593Smuzhiyun	regulator-min-microvolt = <700000>;
339*4882a593Smuzhiyun	regulator-max-microvolt = <1100000>;
340*4882a593Smuzhiyun	regulator-always-on;
341*4882a593Smuzhiyun	regulator-name = "vdd-cpu-B";
342*4882a593Smuzhiyun};
343*4882a593Smuzhiyun
344*4882a593Smuzhiyun&reg_dcdc4 {
345*4882a593Smuzhiyun	regulator-min-microvolt = <700000>;
346*4882a593Smuzhiyun	regulator-max-microvolt = <1100000>;
347*4882a593Smuzhiyun	regulator-name = "vdd-gpu";
348*4882a593Smuzhiyun};
349*4882a593Smuzhiyun
350*4882a593Smuzhiyun&reg_dcdc5 {
351*4882a593Smuzhiyun	regulator-min-microvolt = <1200000>;
352*4882a593Smuzhiyun	regulator-max-microvolt = <1500000>;
353*4882a593Smuzhiyun	regulator-always-on;
354*4882a593Smuzhiyun	regulator-name = "vcc-dram";
355*4882a593Smuzhiyun};
356*4882a593Smuzhiyun
357*4882a593Smuzhiyun&reg_dcdc6 {
358*4882a593Smuzhiyun	regulator-min-microvolt = <900000>;
359*4882a593Smuzhiyun	regulator-max-microvolt = <900000>;
360*4882a593Smuzhiyun	regulator-always-on;
361*4882a593Smuzhiyun	regulator-name = "vdd-sys";
362*4882a593Smuzhiyun};
363*4882a593Smuzhiyun
364*4882a593Smuzhiyun&reg_dldo1 {
365*4882a593Smuzhiyun	regulator-min-microvolt = <3100000>;
366*4882a593Smuzhiyun	regulator-max-microvolt = <3100000>;
367*4882a593Smuzhiyun	regulator-name = "vcc-wifi-io";
368*4882a593Smuzhiyun};
369*4882a593Smuzhiyun
370*4882a593Smuzhiyun&reg_dldo2 {
371*4882a593Smuzhiyun	regulator-min-microvolt = <2800000>;
372*4882a593Smuzhiyun	regulator-max-microvolt = <4200000>;
373*4882a593Smuzhiyun	regulator-name = "vcc-mipi";
374*4882a593Smuzhiyun};
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun&reg_dldo3 {
377*4882a593Smuzhiyun	regulator-min-microvolt = <1800000>;
378*4882a593Smuzhiyun	regulator-max-microvolt = <1800000>;
379*4882a593Smuzhiyun	regulator-name = "vdd-csi";
380*4882a593Smuzhiyun};
381*4882a593Smuzhiyun
382*4882a593Smuzhiyun&reg_dldo4 {
383*4882a593Smuzhiyun	regulator-min-microvolt = <2800000>;
384*4882a593Smuzhiyun	regulator-max-microvolt = <2800000>;
385*4882a593Smuzhiyun	regulator-name = "avdd-csi";
386*4882a593Smuzhiyun};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun&reg_drivevbus {
389*4882a593Smuzhiyun	regulator-name = "usb0-vbus";
390*4882a593Smuzhiyun	status = "okay";
391*4882a593Smuzhiyun};
392*4882a593Smuzhiyun
393*4882a593Smuzhiyun&reg_eldo1 {
394*4882a593Smuzhiyun	regulator-min-microvolt = <1200000>;
395*4882a593Smuzhiyun	regulator-max-microvolt = <1800000>;
396*4882a593Smuzhiyun	regulator-name = "dvdd-csi-r";
397*4882a593Smuzhiyun};
398*4882a593Smuzhiyun
399*4882a593Smuzhiyun&reg_eldo2 {
400*4882a593Smuzhiyun	regulator-min-microvolt = <1800000>;
401*4882a593Smuzhiyun	regulator-max-microvolt = <1800000>;
402*4882a593Smuzhiyun	regulator-name = "vcc-dsi";
403*4882a593Smuzhiyun};
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun&reg_eldo3 {
406*4882a593Smuzhiyun	regulator-min-microvolt = <1200000>;
407*4882a593Smuzhiyun	regulator-max-microvolt = <1800000>;
408*4882a593Smuzhiyun	regulator-name = "dvdd-csi-f";
409*4882a593Smuzhiyun};
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun&reg_fldo1 {
412*4882a593Smuzhiyun	regulator-min-microvolt = <1200000>;
413*4882a593Smuzhiyun	regulator-max-microvolt = <1200000>;
414*4882a593Smuzhiyun	regulator-name = "vcc-hsic";
415*4882a593Smuzhiyun};
416*4882a593Smuzhiyun
417*4882a593Smuzhiyun&reg_fldo2 {
418*4882a593Smuzhiyun	regulator-min-microvolt = <700000>;
419*4882a593Smuzhiyun	regulator-max-microvolt = <1100000>;
420*4882a593Smuzhiyun	regulator-always-on;
421*4882a593Smuzhiyun	regulator-name = "vdd-cpus";
422*4882a593Smuzhiyun};
423*4882a593Smuzhiyun
424*4882a593Smuzhiyun&reg_ldo_io0 {
425*4882a593Smuzhiyun	regulator-min-microvolt = <3100000>;
426*4882a593Smuzhiyun	regulator-max-microvolt = <3100000>;
427*4882a593Smuzhiyun	regulator-name = "vcc-ctp";
428*4882a593Smuzhiyun	status = "okay";
429*4882a593Smuzhiyun};
430*4882a593Smuzhiyun
431*4882a593Smuzhiyun&reg_ldo_io1 {
432*4882a593Smuzhiyun	regulator-min-microvolt = <3100000>;
433*4882a593Smuzhiyun	regulator-max-microvolt = <3100000>;
434*4882a593Smuzhiyun	regulator-name = "vcc-vb";
435*4882a593Smuzhiyun	status = "okay";
436*4882a593Smuzhiyun};
437*4882a593Smuzhiyun
438*4882a593Smuzhiyun&reg_sw {
439*4882a593Smuzhiyun	regulator-min-microvolt = <3100000>;
440*4882a593Smuzhiyun	regulator-max-microvolt = <3100000>;
441*4882a593Smuzhiyun	regulator-name = "vcc-lcd";
442*4882a593Smuzhiyun};
443*4882a593Smuzhiyun
444*4882a593Smuzhiyun&tcon0 {
445*4882a593Smuzhiyun	pinctrl-names = "default";
446*4882a593Smuzhiyun	pinctrl-0 = <&lcd_lvds_pins>;
447*4882a593Smuzhiyun};
448*4882a593Smuzhiyun
449*4882a593Smuzhiyun&tcon0_out {
450*4882a593Smuzhiyun	tcon0_out_lcd: endpoint {
451*4882a593Smuzhiyun		remote-endpoint = <&panel_input>;
452*4882a593Smuzhiyun	};
453*4882a593Smuzhiyun};
454*4882a593Smuzhiyun
455*4882a593Smuzhiyun&uart0 {
456*4882a593Smuzhiyun	pinctrl-names = "default";
457*4882a593Smuzhiyun	pinctrl-0 = <&uart0_pb_pins>;
458*4882a593Smuzhiyun	status = "okay";
459*4882a593Smuzhiyun};
460*4882a593Smuzhiyun
461*4882a593Smuzhiyun/* There's the BT part of the AP6210 connected to that UART */
462*4882a593Smuzhiyun&uart1 {
463*4882a593Smuzhiyun	pinctrl-names = "default";
464*4882a593Smuzhiyun	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
465*4882a593Smuzhiyun	uart-has-rtscts;
466*4882a593Smuzhiyun	status = "okay";
467*4882a593Smuzhiyun
468*4882a593Smuzhiyun	bluetooth {
469*4882a593Smuzhiyun		compatible = "brcm,bcm20702a1";
470*4882a593Smuzhiyun		clocks = <&ac100_rtc 1>;
471*4882a593Smuzhiyun		clock-names = "lpo";
472*4882a593Smuzhiyun		vbat-supply = <&reg_vbat>;
473*4882a593Smuzhiyun		vddio-supply = <&reg_dldo1>;
474*4882a593Smuzhiyun		device-wakeup-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
475*4882a593Smuzhiyun		host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
476*4882a593Smuzhiyun		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
477*4882a593Smuzhiyun		max-speed = <1500000>;
478*4882a593Smuzhiyun	};
479*4882a593Smuzhiyun};
480*4882a593Smuzhiyun
481*4882a593Smuzhiyun&uart2 {
482*4882a593Smuzhiyun	pinctrl-names = "default";
483*4882a593Smuzhiyun	pinctrl-0 = <&uart2_pb_pins>;
484*4882a593Smuzhiyun	status = "okay";
485*4882a593Smuzhiyun
486*4882a593Smuzhiyun	gnss {
487*4882a593Smuzhiyun		compatible = "u-blox,neo-6m";
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun		v-bckp-supply = <&reg_rtc_ldo>;
490*4882a593Smuzhiyun		vcc-supply = <&reg_gps>;
491*4882a593Smuzhiyun		current-speed = <9600>;
492*4882a593Smuzhiyun	};
493*4882a593Smuzhiyun};
494*4882a593Smuzhiyun
495*4882a593Smuzhiyun&usb_otg {
496*4882a593Smuzhiyun	status = "okay";
497*4882a593Smuzhiyun};
498*4882a593Smuzhiyun
499*4882a593Smuzhiyun&usbphy {
500*4882a593Smuzhiyun	usb0_id_det-gpios = <&pio 7 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH11 */
501*4882a593Smuzhiyun	usb0_vbus_power-supply = <&usb_power_supply>;
502*4882a593Smuzhiyun	usb0_vbus-supply = <&reg_drivevbus>;
503*4882a593Smuzhiyun	usb1_vbus-supply = <&reg_vmain>;
504*4882a593Smuzhiyun	usb2_vbus-supply = <&reg_vmain>;
505*4882a593Smuzhiyun	status = "okay";
506*4882a593Smuzhiyun};
507