xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/da850-lego-ev3.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Device tree for LEGO MINDSTORMS EV3
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright (C) 2017 David Lechner <david@lechnology.com>
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun/dts-v1/;
9*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
10*4882a593Smuzhiyun#include <dt-bindings/input/linux-event-codes.h>
11*4882a593Smuzhiyun#include <dt-bindings/pwm/pwm.h>
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun#include "da850.dtsi"
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun/ {
16*4882a593Smuzhiyun	compatible = "lego,ev3", "ti,da850";
17*4882a593Smuzhiyun	model = "LEGO MINDSTORMS EV3";
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	aliases {
20*4882a593Smuzhiyun		serial1 = &serial1;
21*4882a593Smuzhiyun	};
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun	memory@c0000000 {
24*4882a593Smuzhiyun		device_type = "memory";
25*4882a593Smuzhiyun		reg = <0xc0000000 0x04000000>;
26*4882a593Smuzhiyun	};
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun	/*
29*4882a593Smuzhiyun	 * The buttons on the EV3 are mapped to keyboard keys.
30*4882a593Smuzhiyun	 */
31*4882a593Smuzhiyun	gpio_keys {
32*4882a593Smuzhiyun		compatible = "gpio-keys";
33*4882a593Smuzhiyun		label = "EV3 Brick Buttons";
34*4882a593Smuzhiyun		pinctrl-names = "default";
35*4882a593Smuzhiyun		pinctrl-0 = <&button_bias>;
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		center {
38*4882a593Smuzhiyun			label = "Center";
39*4882a593Smuzhiyun			linux,code = <KEY_ENTER>;
40*4882a593Smuzhiyun			gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
41*4882a593Smuzhiyun		};
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun		left {
44*4882a593Smuzhiyun			label = "Left";
45*4882a593Smuzhiyun			linux,code = <KEY_LEFT>;
46*4882a593Smuzhiyun			gpios = <&gpio 102 GPIO_ACTIVE_HIGH>;
47*4882a593Smuzhiyun		};
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun		back {
50*4882a593Smuzhiyun			label = "Back";
51*4882a593Smuzhiyun			linux,code = <KEY_BACKSPACE>;
52*4882a593Smuzhiyun			gpios = <&gpio 106 GPIO_ACTIVE_HIGH>;
53*4882a593Smuzhiyun		};
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun		right {
56*4882a593Smuzhiyun			label = "Right";
57*4882a593Smuzhiyun			linux,code = <KEY_RIGHT>;
58*4882a593Smuzhiyun			gpios = <&gpio 124 GPIO_ACTIVE_HIGH>;
59*4882a593Smuzhiyun		};
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun		down {
62*4882a593Smuzhiyun			label = "Down";
63*4882a593Smuzhiyun			linux,code = <KEY_DOWN>;
64*4882a593Smuzhiyun			gpios = <&gpio 126 GPIO_ACTIVE_HIGH>;
65*4882a593Smuzhiyun		};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun		up {
68*4882a593Smuzhiyun			label = "Up";
69*4882a593Smuzhiyun			linux,code = <KEY_UP>;
70*4882a593Smuzhiyun			gpios = <&gpio 127 GPIO_ACTIVE_HIGH>;
71*4882a593Smuzhiyun		};
72*4882a593Smuzhiyun	};
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun	/*
75*4882a593Smuzhiyun	 * The EV3 has two built-in bi-color LEDs behind the buttons.
76*4882a593Smuzhiyun	 */
77*4882a593Smuzhiyun	leds {
78*4882a593Smuzhiyun		compatible = "gpio-leds";
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun		left_green {
81*4882a593Smuzhiyun			label = "led0:green:brick-status";
82*4882a593Smuzhiyun			/* GP6[13] */
83*4882a593Smuzhiyun			gpios = <&gpio 103 GPIO_ACTIVE_HIGH>;
84*4882a593Smuzhiyun			linux,default-trigger = "default-on";
85*4882a593Smuzhiyun		};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun		right_red {
88*4882a593Smuzhiyun			label = "led1:red:brick-status";
89*4882a593Smuzhiyun			/* GP6[7] */
90*4882a593Smuzhiyun			gpios = <&gpio 108 GPIO_ACTIVE_HIGH>;
91*4882a593Smuzhiyun			linux,default-trigger = "default-on";
92*4882a593Smuzhiyun		};
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun		left_red {
95*4882a593Smuzhiyun			label = "led0:red:brick-status";
96*4882a593Smuzhiyun			/* GP6[12] */
97*4882a593Smuzhiyun			gpios = <&gpio 109 GPIO_ACTIVE_HIGH>;
98*4882a593Smuzhiyun			linux,default-trigger = "default-on";
99*4882a593Smuzhiyun		};
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun		right_green {
102*4882a593Smuzhiyun			label = "led1:green:brick-status";
103*4882a593Smuzhiyun			/* GP6[14] */
104*4882a593Smuzhiyun			gpios = <&gpio 110 GPIO_ACTIVE_HIGH>;
105*4882a593Smuzhiyun			linux,default-trigger = "default-on";
106*4882a593Smuzhiyun		};
107*4882a593Smuzhiyun	};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	/*
110*4882a593Smuzhiyun	 * The EV3 is powered down by turning off the main 5V supply.
111*4882a593Smuzhiyun	 */
112*4882a593Smuzhiyun	gpio-poweroff {
113*4882a593Smuzhiyun		compatible = "gpio-poweroff";
114*4882a593Smuzhiyun		gpios = <&gpio 107 GPIO_ACTIVE_LOW>;
115*4882a593Smuzhiyun	};
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun	sound {
118*4882a593Smuzhiyun		compatible = "pwm-beeper";
119*4882a593Smuzhiyun		pinctrl-names = "default";
120*4882a593Smuzhiyun		pinctrl-0 = <&ehrpwm0b_pins>;
121*4882a593Smuzhiyun		pwms = <&ehrpwm0 1 1000000 0>;
122*4882a593Smuzhiyun		amp-supply = <&amp>;
123*4882a593Smuzhiyun	};
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun	cvdd: regulator0 {
126*4882a593Smuzhiyun		compatible = "regulator-fixed";
127*4882a593Smuzhiyun		regulator-name = "cvdd";
128*4882a593Smuzhiyun		regulator-min-microvolt = <1200000>;
129*4882a593Smuzhiyun		regulator-max-microvolt = <1200000>;
130*4882a593Smuzhiyun		regulator-always-on;
131*4882a593Smuzhiyun		regulator-boot-on;
132*4882a593Smuzhiyun	};
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun	/*
135*4882a593Smuzhiyun	 * This is a 5V current limiting regulator that is shared by USB,
136*4882a593Smuzhiyun	 * the sensor (input) ports, the motor (output) ports and the A/DC.
137*4882a593Smuzhiyun	 */
138*4882a593Smuzhiyun	vcc5v: regulator1 {
139*4882a593Smuzhiyun		compatible = "regulator-fixed";
140*4882a593Smuzhiyun		regulator-name = "vcc5v";
141*4882a593Smuzhiyun		regulator-min-microvolt = <5000000>;
142*4882a593Smuzhiyun		regulator-max-microvolt = <5000000>;
143*4882a593Smuzhiyun		gpio = <&gpio 101 0>;
144*4882a593Smuzhiyun		over-current-gpios = <&gpio 99 GPIO_ACTIVE_LOW>;
145*4882a593Smuzhiyun		enable-active-high;
146*4882a593Smuzhiyun		regulator-boot-on;
147*4882a593Smuzhiyun	};
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun	/*
150*4882a593Smuzhiyun	 * This is a simple voltage divider on VCC5V to provide a 2.5V
151*4882a593Smuzhiyun	 * reference signal to the ADC.
152*4882a593Smuzhiyun	 */
153*4882a593Smuzhiyun	adc_ref: regulator2 {
154*4882a593Smuzhiyun		compatible = "regulator-fixed";
155*4882a593Smuzhiyun		regulator-name = "adc ref";
156*4882a593Smuzhiyun		regulator-min-microvolt = <2500000>;
157*4882a593Smuzhiyun		regulator-max-microvolt = <2500000>;
158*4882a593Smuzhiyun		regulator-boot-on;
159*4882a593Smuzhiyun		vin-supply = <&vcc5v>;
160*4882a593Smuzhiyun	};
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun	/*
163*4882a593Smuzhiyun	 * This is the amplifier for the speaker.
164*4882a593Smuzhiyun	 */
165*4882a593Smuzhiyun	amp: regulator3 {
166*4882a593Smuzhiyun		compatible = "regulator-fixed";
167*4882a593Smuzhiyun		regulator-name = "amp";
168*4882a593Smuzhiyun		gpio = <&gpio 111 GPIO_ACTIVE_HIGH>;
169*4882a593Smuzhiyun		enable-active-high;
170*4882a593Smuzhiyun	};
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun	/*
173*4882a593Smuzhiyun	 * The EV3 can use 6-AA batteries or a rechargeable Li-ion battery pack.
174*4882a593Smuzhiyun	 */
175*4882a593Smuzhiyun	battery {
176*4882a593Smuzhiyun		compatible = "lego,ev3-battery";
177*4882a593Smuzhiyun		io-channels = <&adc 4>, <&adc 3>;
178*4882a593Smuzhiyun		io-channel-names = "voltage", "current";
179*4882a593Smuzhiyun		rechargeable-gpios = <&gpio 136 GPIO_ACTIVE_LOW>;
180*4882a593Smuzhiyun	};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun	bt_slow_clk: bt-clock {
183*4882a593Smuzhiyun		pinctrl-names = "default";
184*4882a593Smuzhiyun		pinctrl-0 = <&ecap2_pins>, <&bt_clock_bias>;
185*4882a593Smuzhiyun		compatible = "pwm-clock";
186*4882a593Smuzhiyun		#clock-cells = <0>;
187*4882a593Smuzhiyun		clock-frequency = <32768>;
188*4882a593Smuzhiyun		pwms = <&ecap2 0 30518 0>;
189*4882a593Smuzhiyun	};
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun	/* ARM local RAM */
192*4882a593Smuzhiyun	memory@ffff0000 {
193*4882a593Smuzhiyun		compatible = "syscon", "simple-mfd";
194*4882a593Smuzhiyun		reg = <0xffff0000 0x2000>; /* 8k */
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun		/*
197*4882a593Smuzhiyun		 * The I2C bootloader looks for this magic value to either
198*4882a593Smuzhiyun		 * boot normally or boot into a firmware update mode.
199*4882a593Smuzhiyun		 */
200*4882a593Smuzhiyun		reboot-mode {
201*4882a593Smuzhiyun			compatible = "syscon-reboot-mode";
202*4882a593Smuzhiyun			offset = <0x1ffc>;
203*4882a593Smuzhiyun			mode-normal = <0x00000000>;
204*4882a593Smuzhiyun			mode-loader = <0x5555aaaa>;
205*4882a593Smuzhiyun		};
206*4882a593Smuzhiyun	};
207*4882a593Smuzhiyun};
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun&ref_clk {
210*4882a593Smuzhiyun	clock-frequency = <24000000>;
211*4882a593Smuzhiyun};
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun&cpu {
214*4882a593Smuzhiyun	cpu-supply = <&cvdd>;
215*4882a593Smuzhiyun};
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun/* since we have a fixed regulator, we can't run at these points */
218*4882a593Smuzhiyun&opp_100 {
219*4882a593Smuzhiyun	status = "disabled";
220*4882a593Smuzhiyun};
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun&opp_200 {
223*4882a593Smuzhiyun	status = "disabled";
224*4882a593Smuzhiyun};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun/*
227*4882a593Smuzhiyun * The SoC is actually the 456MHz version, but because of the fixed regulator
228*4882a593Smuzhiyun * This is the fastest we can go.
229*4882a593Smuzhiyun */
230*4882a593Smuzhiyun&opp_375 {
231*4882a593Smuzhiyun	status = "okay";
232*4882a593Smuzhiyun};
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun&pmx_core {
235*4882a593Smuzhiyun	status = "okay";
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun	ev3_lcd_pins: pinmux_lcd {
238*4882a593Smuzhiyun		pinctrl-single,bits = <
239*4882a593Smuzhiyun			/* SIMO, CLK */
240*4882a593Smuzhiyun			0x14 0x00100100 0x00f00f00
241*4882a593Smuzhiyun		>;
242*4882a593Smuzhiyun	};
243*4882a593Smuzhiyun};
244*4882a593Smuzhiyun
245*4882a593Smuzhiyun&pinconf {
246*4882a593Smuzhiyun	status = "okay";
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun	/* Buttons have external pulldown resistors */
249*4882a593Smuzhiyun	button_bias: button-bias-groups {
250*4882a593Smuzhiyun		disable {
251*4882a593Smuzhiyun			groups = "cp5", "cp24", "cp25", "cp28";
252*4882a593Smuzhiyun			bias-disable;
253*4882a593Smuzhiyun		};
254*4882a593Smuzhiyun	};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun	bt_clock_bias: bt-clock-bias-groups {
257*4882a593Smuzhiyun		disable {
258*4882a593Smuzhiyun			groups = "cp2";
259*4882a593Smuzhiyun			bias-disable;
260*4882a593Smuzhiyun		};
261*4882a593Smuzhiyun	};
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun	bt_pic_bias: bt-pic-bias-groups {
264*4882a593Smuzhiyun		disable {
265*4882a593Smuzhiyun			groups = "cp20";
266*4882a593Smuzhiyun			bias-disable;
267*4882a593Smuzhiyun		};
268*4882a593Smuzhiyun	};
269*4882a593Smuzhiyun};
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun/* Input port 1 */
272*4882a593Smuzhiyun&serial1 {
273*4882a593Smuzhiyun	status = "okay";
274*4882a593Smuzhiyun	pinctrl-names = "default";
275*4882a593Smuzhiyun	pinctrl-0 = <&serial1_rxtx_pins>;
276*4882a593Smuzhiyun};
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun&serial2 {
279*4882a593Smuzhiyun	pinctrl-names = "default";
280*4882a593Smuzhiyun	pinctrl-0 = <&serial2_rxtx_pins>, <&serial2_rtscts_pins>, <&bt_pic_bias>;
281*4882a593Smuzhiyun	status = "okay";
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun	bluetooth {
284*4882a593Smuzhiyun		compatible = "ti,cc2560";
285*4882a593Smuzhiyun		clocks = <&bt_slow_clk>;
286*4882a593Smuzhiyun		clock-names = "ext_clock";
287*4882a593Smuzhiyun		enable-gpios = <&gpio 73 GPIO_ACTIVE_HIGH>;
288*4882a593Smuzhiyun		max-speed = <2000000>;
289*4882a593Smuzhiyun		nvmem-cells = <&bdaddr>;
290*4882a593Smuzhiyun		nvmem-cell-names = "bd-address";
291*4882a593Smuzhiyun	};
292*4882a593Smuzhiyun};
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun&rtc0 {
295*4882a593Smuzhiyun	status = "okay";
296*4882a593Smuzhiyun};
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun&i2c0 {
299*4882a593Smuzhiyun	status = "okay";
300*4882a593Smuzhiyun	clock-frequency = <400000>;
301*4882a593Smuzhiyun	pinctrl-names = "default";
302*4882a593Smuzhiyun	pinctrl-0 = <&i2c0_pins>;
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun	/*
305*4882a593Smuzhiyun	 * EEPROM contains the first stage bootloader, HW ID and Bluetooth MAC.
306*4882a593Smuzhiyun	 */
307*4882a593Smuzhiyun	eeprom@50 {
308*4882a593Smuzhiyun		compatible = "microchip,24c128", "atmel,24c128";
309*4882a593Smuzhiyun		pagesize = <64>;
310*4882a593Smuzhiyun		read-only;
311*4882a593Smuzhiyun		reg = <0x50>;
312*4882a593Smuzhiyun		#address-cells = <1>;
313*4882a593Smuzhiyun		#size-cells = <1>;
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun		bdaddr: bdaddr@3f06 {
316*4882a593Smuzhiyun			reg = <0x3f06 0x06>;
317*4882a593Smuzhiyun		};
318*4882a593Smuzhiyun	};
319*4882a593Smuzhiyun};
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun&wdt {
322*4882a593Smuzhiyun	status = "okay";
323*4882a593Smuzhiyun};
324*4882a593Smuzhiyun
325*4882a593Smuzhiyun&mmc0 {
326*4882a593Smuzhiyun	status = "okay";
327*4882a593Smuzhiyun	max-frequency = <50000000>;
328*4882a593Smuzhiyun	bus-width = <4>;
329*4882a593Smuzhiyun	cd-gpios = <&gpio 94 GPIO_ACTIVE_LOW>;
330*4882a593Smuzhiyun	pinctrl-names = "default";
331*4882a593Smuzhiyun	pinctrl-0 = <&mmc0_pins>;
332*4882a593Smuzhiyun};
333*4882a593Smuzhiyun
334*4882a593Smuzhiyun&spi0 {
335*4882a593Smuzhiyun	status = "okay";
336*4882a593Smuzhiyun	pinctrl-names = "default";
337*4882a593Smuzhiyun	pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>, <&spi0_cs3_pin>;
338*4882a593Smuzhiyun
339*4882a593Smuzhiyun	flash@0 {
340*4882a593Smuzhiyun		compatible = "n25q128a13", "jedec,spi-nor";
341*4882a593Smuzhiyun		reg = <0>;
342*4882a593Smuzhiyun		spi-max-frequency = <50000000>;
343*4882a593Smuzhiyun		ti,spi-wdelay = <8>;
344*4882a593Smuzhiyun
345*4882a593Smuzhiyun		/* Partitions are based on the official firmware from LEGO */
346*4882a593Smuzhiyun		partitions {
347*4882a593Smuzhiyun			compatible = "fixed-partitions";
348*4882a593Smuzhiyun			#address-cells = <1>;
349*4882a593Smuzhiyun			#size-cells = <1>;
350*4882a593Smuzhiyun
351*4882a593Smuzhiyun			partition@0 {
352*4882a593Smuzhiyun				label = "U-Boot";
353*4882a593Smuzhiyun				reg = <0 0x40000>;
354*4882a593Smuzhiyun			};
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun			partition@40000 {
357*4882a593Smuzhiyun				label = "U-Boot Env";
358*4882a593Smuzhiyun				reg = <0x40000 0x10000>;
359*4882a593Smuzhiyun			};
360*4882a593Smuzhiyun
361*4882a593Smuzhiyun			partition@50000 {
362*4882a593Smuzhiyun				label = "Kernel";
363*4882a593Smuzhiyun				reg = <0x50000 0x200000>;
364*4882a593Smuzhiyun			};
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun			partition@250000 {
367*4882a593Smuzhiyun				label = "Filesystem";
368*4882a593Smuzhiyun				reg = <0x250000 0xa50000>;
369*4882a593Smuzhiyun			};
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun			partition@cb0000 {
372*4882a593Smuzhiyun				label = "Storage";
373*4882a593Smuzhiyun				reg = <0xcb0000 0x2f0000>;
374*4882a593Smuzhiyun			};
375*4882a593Smuzhiyun		};
376*4882a593Smuzhiyun	};
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun	adc: adc@3 {
379*4882a593Smuzhiyun		compatible = "ti,ads7957";
380*4882a593Smuzhiyun		reg = <3>;
381*4882a593Smuzhiyun		#io-channel-cells = <1>;
382*4882a593Smuzhiyun		spi-max-frequency = <1000000>;
383*4882a593Smuzhiyun		ti,spi-wdelay = <63>;
384*4882a593Smuzhiyun		vref-supply = <&adc_ref>;
385*4882a593Smuzhiyun	};
386*4882a593Smuzhiyun};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun&spi1 {
389*4882a593Smuzhiyun	status = "okay";
390*4882a593Smuzhiyun	pinctrl-0 = <&ev3_lcd_pins>;
391*4882a593Smuzhiyun	pinctrl-names = "default";
392*4882a593Smuzhiyun	cs-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun	display@0{
395*4882a593Smuzhiyun		compatible = "lego,ev3-lcd";
396*4882a593Smuzhiyun		reg = <0>;
397*4882a593Smuzhiyun		spi-max-frequency = <10000000>;
398*4882a593Smuzhiyun		a0-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
399*4882a593Smuzhiyun		reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
400*4882a593Smuzhiyun	};
401*4882a593Smuzhiyun};
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun&ecap2 {
404*4882a593Smuzhiyun	status = "okay";
405*4882a593Smuzhiyun};
406*4882a593Smuzhiyun
407*4882a593Smuzhiyun&ehrpwm0 {
408*4882a593Smuzhiyun	status = "okay";
409*4882a593Smuzhiyun};
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun&gpio {
412*4882a593Smuzhiyun	status = "okay";
413*4882a593Smuzhiyun
414*4882a593Smuzhiyun	/* Don't pull down battery voltage adc io channel */
415*4882a593Smuzhiyun	batt_volt_en {
416*4882a593Smuzhiyun		gpio-hog;
417*4882a593Smuzhiyun		gpios = <6 GPIO_ACTIVE_HIGH>;
418*4882a593Smuzhiyun		output-high;
419*4882a593Smuzhiyun	};
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun	/* Don't impede Bluetooth clock signal */
422*4882a593Smuzhiyun	bt_clock_en {
423*4882a593Smuzhiyun		gpio-hog;
424*4882a593Smuzhiyun		gpios = <5 GPIO_ACTIVE_HIGH>;
425*4882a593Smuzhiyun		input;
426*4882a593Smuzhiyun	};
427*4882a593Smuzhiyun
428*4882a593Smuzhiyun	/*
429*4882a593Smuzhiyun	 * There is a PIC microcontroller for interfacing with an Apple MFi
430*4882a593Smuzhiyun	 * chip. This interferes with normal Bluetooth operation, so we need
431*4882a593Smuzhiyun	 * to make sure it is turned off. Note: The publicly available
432*4882a593Smuzhiyun	 * schematics from LEGO don't show that these pins are connected to
433*4882a593Smuzhiyun	 * anything, but they are present in the source code from LEGO.
434*4882a593Smuzhiyun	 */
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun	bt_pic_en {
437*4882a593Smuzhiyun		gpio-hog;
438*4882a593Smuzhiyun		gpios = <51 GPIO_ACTIVE_HIGH>;
439*4882a593Smuzhiyun		output-low;
440*4882a593Smuzhiyun	};
441*4882a593Smuzhiyun
442*4882a593Smuzhiyun	bt_pic_rst {
443*4882a593Smuzhiyun		gpio-hog;
444*4882a593Smuzhiyun		gpios = <78 GPIO_ACTIVE_HIGH>;
445*4882a593Smuzhiyun		output-high;
446*4882a593Smuzhiyun	};
447*4882a593Smuzhiyun
448*4882a593Smuzhiyun	bt_pic_cts {
449*4882a593Smuzhiyun		gpio-hog;
450*4882a593Smuzhiyun		gpios = <87 GPIO_ACTIVE_HIGH>;
451*4882a593Smuzhiyun		input;
452*4882a593Smuzhiyun	};
453*4882a593Smuzhiyun};
454*4882a593Smuzhiyun
455*4882a593Smuzhiyun&usb_phy {
456*4882a593Smuzhiyun	status = "okay";
457*4882a593Smuzhiyun};
458*4882a593Smuzhiyun
459*4882a593Smuzhiyun&usb0 {
460*4882a593Smuzhiyun	status = "okay";
461*4882a593Smuzhiyun};
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun&usb1 {
464*4882a593Smuzhiyun	status = "okay";
465*4882a593Smuzhiyun	vbus-supply = <&vcc5v>;
466*4882a593Smuzhiyun};
467