162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Device tree for LEGO MINDSTORMS EV3
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2017 David Lechner <david@lechnology.com>
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/dts-v1/;
962306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
1062306a36Sopenharmony_ci#include <dt-bindings/input/linux-event-codes.h>
1162306a36Sopenharmony_ci#include <dt-bindings/pwm/pwm.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include "da850.dtsi"
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/ {
1662306a36Sopenharmony_ci	compatible = "lego,ev3", "ti,da850";
1762306a36Sopenharmony_ci	model = "LEGO MINDSTORMS EV3";
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	aliases {
2062306a36Sopenharmony_ci		serial1 = &serial1;
2162306a36Sopenharmony_ci	};
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	memory@c0000000 {
2462306a36Sopenharmony_ci		device_type = "memory";
2562306a36Sopenharmony_ci		reg = <0xc0000000 0x04000000>;
2662306a36Sopenharmony_ci	};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	/*
2962306a36Sopenharmony_ci	 * The buttons on the EV3 are mapped to keyboard keys.
3062306a36Sopenharmony_ci	 */
3162306a36Sopenharmony_ci	gpio_keys {
3262306a36Sopenharmony_ci		compatible = "gpio-keys";
3362306a36Sopenharmony_ci		label = "EV3 Brick Buttons";
3462306a36Sopenharmony_ci		pinctrl-names = "default";
3562306a36Sopenharmony_ci		pinctrl-0 = <&button_bias>;
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci		center {
3862306a36Sopenharmony_ci			label = "Center";
3962306a36Sopenharmony_ci			linux,code = <KEY_ENTER>;
4062306a36Sopenharmony_ci			gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
4162306a36Sopenharmony_ci		};
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci		left {
4462306a36Sopenharmony_ci			label = "Left";
4562306a36Sopenharmony_ci			linux,code = <KEY_LEFT>;
4662306a36Sopenharmony_ci			gpios = <&gpio 102 GPIO_ACTIVE_HIGH>;
4762306a36Sopenharmony_ci		};
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci		back {
5062306a36Sopenharmony_ci			label = "Back";
5162306a36Sopenharmony_ci			linux,code = <KEY_BACKSPACE>;
5262306a36Sopenharmony_ci			gpios = <&gpio 106 GPIO_ACTIVE_HIGH>;
5362306a36Sopenharmony_ci		};
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci		right {
5662306a36Sopenharmony_ci			label = "Right";
5762306a36Sopenharmony_ci			linux,code = <KEY_RIGHT>;
5862306a36Sopenharmony_ci			gpios = <&gpio 124 GPIO_ACTIVE_HIGH>;
5962306a36Sopenharmony_ci		};
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci		down {
6262306a36Sopenharmony_ci			label = "Down";
6362306a36Sopenharmony_ci			linux,code = <KEY_DOWN>;
6462306a36Sopenharmony_ci			gpios = <&gpio 126 GPIO_ACTIVE_HIGH>;
6562306a36Sopenharmony_ci		};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci		up {
6862306a36Sopenharmony_ci			label = "Up";
6962306a36Sopenharmony_ci			linux,code = <KEY_UP>;
7062306a36Sopenharmony_ci			gpios = <&gpio 127 GPIO_ACTIVE_HIGH>;
7162306a36Sopenharmony_ci		};
7262306a36Sopenharmony_ci	};
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci	/*
7562306a36Sopenharmony_ci	 * The EV3 has two built-in bi-color LEDs behind the buttons.
7662306a36Sopenharmony_ci	 */
7762306a36Sopenharmony_ci	leds {
7862306a36Sopenharmony_ci		compatible = "gpio-leds";
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci		left_green {
8162306a36Sopenharmony_ci			label = "led0:green:brick-status";
8262306a36Sopenharmony_ci			/* GP6[13] */
8362306a36Sopenharmony_ci			gpios = <&gpio 103 GPIO_ACTIVE_HIGH>;
8462306a36Sopenharmony_ci			linux,default-trigger = "default-on";
8562306a36Sopenharmony_ci		};
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci		right_red {
8862306a36Sopenharmony_ci			label = "led1:red:brick-status";
8962306a36Sopenharmony_ci			/* GP6[7] */
9062306a36Sopenharmony_ci			gpios = <&gpio 108 GPIO_ACTIVE_HIGH>;
9162306a36Sopenharmony_ci			linux,default-trigger = "default-on";
9262306a36Sopenharmony_ci		};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci		left_red {
9562306a36Sopenharmony_ci			label = "led0:red:brick-status";
9662306a36Sopenharmony_ci			/* GP6[12] */
9762306a36Sopenharmony_ci			gpios = <&gpio 109 GPIO_ACTIVE_HIGH>;
9862306a36Sopenharmony_ci			linux,default-trigger = "default-on";
9962306a36Sopenharmony_ci		};
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci		right_green {
10262306a36Sopenharmony_ci			label = "led1:green:brick-status";
10362306a36Sopenharmony_ci			/* GP6[14] */
10462306a36Sopenharmony_ci			gpios = <&gpio 110 GPIO_ACTIVE_HIGH>;
10562306a36Sopenharmony_ci			linux,default-trigger = "default-on";
10662306a36Sopenharmony_ci		};
10762306a36Sopenharmony_ci	};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci	/*
11062306a36Sopenharmony_ci	 * The EV3 is powered down by turning off the main 5V supply.
11162306a36Sopenharmony_ci	 */
11262306a36Sopenharmony_ci	gpio-poweroff {
11362306a36Sopenharmony_ci		compatible = "gpio-poweroff";
11462306a36Sopenharmony_ci		gpios = <&gpio 107 GPIO_ACTIVE_LOW>;
11562306a36Sopenharmony_ci	};
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci	sound {
11862306a36Sopenharmony_ci		compatible = "pwm-beeper";
11962306a36Sopenharmony_ci		pinctrl-names = "default";
12062306a36Sopenharmony_ci		pinctrl-0 = <&ehrpwm0b_pins>;
12162306a36Sopenharmony_ci		pwms = <&ehrpwm0 1 1000000 0>;
12262306a36Sopenharmony_ci		amp-supply = <&amp>;
12362306a36Sopenharmony_ci	};
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci	cvdd: regulator0 {
12662306a36Sopenharmony_ci		compatible = "regulator-fixed";
12762306a36Sopenharmony_ci		regulator-name = "cvdd";
12862306a36Sopenharmony_ci		regulator-min-microvolt = <1200000>;
12962306a36Sopenharmony_ci		regulator-max-microvolt = <1200000>;
13062306a36Sopenharmony_ci		regulator-always-on;
13162306a36Sopenharmony_ci		regulator-boot-on;
13262306a36Sopenharmony_ci	};
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci	/*
13562306a36Sopenharmony_ci	 * This is a 5V current limiting regulator that is shared by USB,
13662306a36Sopenharmony_ci	 * the sensor (input) ports, the motor (output) ports and the A/DC.
13762306a36Sopenharmony_ci	 */
13862306a36Sopenharmony_ci	vcc5v: regulator1 {
13962306a36Sopenharmony_ci		compatible = "regulator-fixed";
14062306a36Sopenharmony_ci		regulator-name = "vcc5v";
14162306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
14262306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
14362306a36Sopenharmony_ci		gpio = <&gpio 101 0>;
14462306a36Sopenharmony_ci		over-current-gpios = <&gpio 99 GPIO_ACTIVE_LOW>;
14562306a36Sopenharmony_ci		enable-active-high;
14662306a36Sopenharmony_ci		regulator-boot-on;
14762306a36Sopenharmony_ci	};
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci	/*
15062306a36Sopenharmony_ci	 * This is a simple voltage divider on VCC5V to provide a 2.5V
15162306a36Sopenharmony_ci	 * reference signal to the ADC.
15262306a36Sopenharmony_ci	 */
15362306a36Sopenharmony_ci	adc_ref: regulator2 {
15462306a36Sopenharmony_ci		compatible = "regulator-fixed";
15562306a36Sopenharmony_ci		regulator-name = "adc ref";
15662306a36Sopenharmony_ci		regulator-min-microvolt = <2500000>;
15762306a36Sopenharmony_ci		regulator-max-microvolt = <2500000>;
15862306a36Sopenharmony_ci		regulator-boot-on;
15962306a36Sopenharmony_ci		vin-supply = <&vcc5v>;
16062306a36Sopenharmony_ci	};
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci	/*
16362306a36Sopenharmony_ci	 * This is the amplifier for the speaker.
16462306a36Sopenharmony_ci	 */
16562306a36Sopenharmony_ci	amp: regulator3 {
16662306a36Sopenharmony_ci		compatible = "regulator-fixed";
16762306a36Sopenharmony_ci		regulator-name = "amp";
16862306a36Sopenharmony_ci		gpio = <&gpio 111 GPIO_ACTIVE_HIGH>;
16962306a36Sopenharmony_ci		enable-active-high;
17062306a36Sopenharmony_ci	};
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci	/*
17362306a36Sopenharmony_ci	 * The EV3 can use 6-AA batteries or a rechargeable Li-ion battery pack.
17462306a36Sopenharmony_ci	 */
17562306a36Sopenharmony_ci	battery {
17662306a36Sopenharmony_ci		compatible = "lego,ev3-battery";
17762306a36Sopenharmony_ci		io-channels = <&adc 4>, <&adc 3>;
17862306a36Sopenharmony_ci		io-channel-names = "voltage", "current";
17962306a36Sopenharmony_ci		rechargeable-gpios = <&gpio 136 GPIO_ACTIVE_LOW>;
18062306a36Sopenharmony_ci	};
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci	bt_slow_clk: bt-clock {
18362306a36Sopenharmony_ci		pinctrl-names = "default";
18462306a36Sopenharmony_ci		pinctrl-0 = <&ecap2_pins>, <&bt_clock_bias>;
18562306a36Sopenharmony_ci		compatible = "pwm-clock";
18662306a36Sopenharmony_ci		#clock-cells = <0>;
18762306a36Sopenharmony_ci		clock-frequency = <32768>;
18862306a36Sopenharmony_ci		pwms = <&ecap2 0 30518 0>;
18962306a36Sopenharmony_ci	};
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci	/* ARM local RAM */
19262306a36Sopenharmony_ci	memory@ffff0000 {
19362306a36Sopenharmony_ci		compatible = "syscon", "simple-mfd";
19462306a36Sopenharmony_ci		reg = <0xffff0000 0x2000>; /* 8k */
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci		/*
19762306a36Sopenharmony_ci		 * The I2C bootloader looks for this magic value to either
19862306a36Sopenharmony_ci		 * boot normally or boot into a firmware update mode.
19962306a36Sopenharmony_ci		 */
20062306a36Sopenharmony_ci		reboot-mode {
20162306a36Sopenharmony_ci			compatible = "syscon-reboot-mode";
20262306a36Sopenharmony_ci			offset = <0x1ffc>;
20362306a36Sopenharmony_ci			mode-normal = <0x00000000>;
20462306a36Sopenharmony_ci			mode-loader = <0x5555aaaa>;
20562306a36Sopenharmony_ci		};
20662306a36Sopenharmony_ci	};
20762306a36Sopenharmony_ci};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci&ref_clk {
21062306a36Sopenharmony_ci	clock-frequency = <24000000>;
21162306a36Sopenharmony_ci};
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci&cpu {
21462306a36Sopenharmony_ci	cpu-supply = <&cvdd>;
21562306a36Sopenharmony_ci};
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci/* since we have a fixed regulator, we can't run at these points */
21862306a36Sopenharmony_ci&opp_100 {
21962306a36Sopenharmony_ci	status = "disabled";
22062306a36Sopenharmony_ci};
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci&opp_200 {
22362306a36Sopenharmony_ci	status = "disabled";
22462306a36Sopenharmony_ci};
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci/*
22762306a36Sopenharmony_ci * The SoC is actually the 456MHz version, but because of the fixed regulator
22862306a36Sopenharmony_ci * This is the fastest we can go.
22962306a36Sopenharmony_ci */
23062306a36Sopenharmony_ci&opp_375 {
23162306a36Sopenharmony_ci	status = "okay";
23262306a36Sopenharmony_ci};
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci&pmx_core {
23562306a36Sopenharmony_ci	status = "okay";
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci	ev3_lcd_pins: lcd-pins {
23862306a36Sopenharmony_ci		pinctrl-single,bits = <
23962306a36Sopenharmony_ci			/* SIMO, CLK */
24062306a36Sopenharmony_ci			0x14 0x00100100 0x00f00f00
24162306a36Sopenharmony_ci		>;
24262306a36Sopenharmony_ci	};
24362306a36Sopenharmony_ci};
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci&pinconf {
24662306a36Sopenharmony_ci	status = "okay";
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci	/* Buttons have external pulldown resistors */
24962306a36Sopenharmony_ci	button_bias: button-bias-groups {
25062306a36Sopenharmony_ci		disable {
25162306a36Sopenharmony_ci			groups = "cp5", "cp24", "cp25", "cp28";
25262306a36Sopenharmony_ci			bias-disable;
25362306a36Sopenharmony_ci		};
25462306a36Sopenharmony_ci	};
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci	bt_clock_bias: bt-clock-bias-groups {
25762306a36Sopenharmony_ci		disable {
25862306a36Sopenharmony_ci			groups = "cp2";
25962306a36Sopenharmony_ci			bias-disable;
26062306a36Sopenharmony_ci		};
26162306a36Sopenharmony_ci	};
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci	bt_pic_bias: bt-pic-bias-groups {
26462306a36Sopenharmony_ci		disable {
26562306a36Sopenharmony_ci			groups = "cp20";
26662306a36Sopenharmony_ci			bias-disable;
26762306a36Sopenharmony_ci		};
26862306a36Sopenharmony_ci	};
26962306a36Sopenharmony_ci};
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ci/* Input port 1 */
27262306a36Sopenharmony_ci&serial1 {
27362306a36Sopenharmony_ci	status = "okay";
27462306a36Sopenharmony_ci	pinctrl-names = "default";
27562306a36Sopenharmony_ci	pinctrl-0 = <&serial1_rxtx_pins>;
27662306a36Sopenharmony_ci};
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_ci&serial2 {
27962306a36Sopenharmony_ci	pinctrl-names = "default";
28062306a36Sopenharmony_ci	pinctrl-0 = <&serial2_rxtx_pins>, <&serial2_rtscts_pins>, <&bt_pic_bias>;
28162306a36Sopenharmony_ci	status = "okay";
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci	bluetooth {
28462306a36Sopenharmony_ci		compatible = "ti,cc2560";
28562306a36Sopenharmony_ci		clocks = <&bt_slow_clk>;
28662306a36Sopenharmony_ci		clock-names = "ext_clock";
28762306a36Sopenharmony_ci		enable-gpios = <&gpio 73 GPIO_ACTIVE_HIGH>;
28862306a36Sopenharmony_ci		max-speed = <2000000>;
28962306a36Sopenharmony_ci		nvmem-cells = <&bdaddr>;
29062306a36Sopenharmony_ci		nvmem-cell-names = "bd-address";
29162306a36Sopenharmony_ci	};
29262306a36Sopenharmony_ci};
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ci&rtc0 {
29562306a36Sopenharmony_ci	status = "okay";
29662306a36Sopenharmony_ci};
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ci&i2c0 {
29962306a36Sopenharmony_ci	status = "okay";
30062306a36Sopenharmony_ci	clock-frequency = <400000>;
30162306a36Sopenharmony_ci	pinctrl-names = "default";
30262306a36Sopenharmony_ci	pinctrl-0 = <&i2c0_pins>;
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ci	/*
30562306a36Sopenharmony_ci	 * EEPROM contains the first stage bootloader, HW ID and Bluetooth MAC.
30662306a36Sopenharmony_ci	 */
30762306a36Sopenharmony_ci	eeprom@50 {
30862306a36Sopenharmony_ci		compatible = "microchip,24c128", "atmel,24c128";
30962306a36Sopenharmony_ci		pagesize = <64>;
31062306a36Sopenharmony_ci		read-only;
31162306a36Sopenharmony_ci		reg = <0x50>;
31262306a36Sopenharmony_ci		#address-cells = <1>;
31362306a36Sopenharmony_ci		#size-cells = <1>;
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ci		bdaddr: bdaddr@3f06 {
31662306a36Sopenharmony_ci			reg = <0x3f06 0x06>;
31762306a36Sopenharmony_ci		};
31862306a36Sopenharmony_ci	};
31962306a36Sopenharmony_ci};
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci&wdt {
32262306a36Sopenharmony_ci	status = "okay";
32362306a36Sopenharmony_ci};
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci&mmc0 {
32662306a36Sopenharmony_ci	status = "okay";
32762306a36Sopenharmony_ci	max-frequency = <50000000>;
32862306a36Sopenharmony_ci	bus-width = <4>;
32962306a36Sopenharmony_ci	cd-gpios = <&gpio 94 GPIO_ACTIVE_LOW>;
33062306a36Sopenharmony_ci	pinctrl-names = "default";
33162306a36Sopenharmony_ci	pinctrl-0 = <&mmc0_pins>;
33262306a36Sopenharmony_ci};
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci&spi0 {
33562306a36Sopenharmony_ci	status = "okay";
33662306a36Sopenharmony_ci	pinctrl-names = "default";
33762306a36Sopenharmony_ci	pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>, <&spi0_cs3_pin>;
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci	flash@0 {
34062306a36Sopenharmony_ci		compatible = "n25q128a13", "jedec,spi-nor";
34162306a36Sopenharmony_ci		reg = <0>;
34262306a36Sopenharmony_ci		spi-max-frequency = <50000000>;
34362306a36Sopenharmony_ci		ti,spi-wdelay = <8>;
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci		/* Partitions are based on the official firmware from LEGO */
34662306a36Sopenharmony_ci		partitions {
34762306a36Sopenharmony_ci			compatible = "fixed-partitions";
34862306a36Sopenharmony_ci			#address-cells = <1>;
34962306a36Sopenharmony_ci			#size-cells = <1>;
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci			partition@0 {
35262306a36Sopenharmony_ci				label = "U-Boot";
35362306a36Sopenharmony_ci				reg = <0 0x40000>;
35462306a36Sopenharmony_ci			};
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci			partition@40000 {
35762306a36Sopenharmony_ci				label = "U-Boot Env";
35862306a36Sopenharmony_ci				reg = <0x40000 0x10000>;
35962306a36Sopenharmony_ci			};
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci			partition@50000 {
36262306a36Sopenharmony_ci				label = "Kernel";
36362306a36Sopenharmony_ci				reg = <0x50000 0x200000>;
36462306a36Sopenharmony_ci			};
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ci			partition@250000 {
36762306a36Sopenharmony_ci				label = "Filesystem";
36862306a36Sopenharmony_ci				reg = <0x250000 0xa50000>;
36962306a36Sopenharmony_ci			};
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci			partition@cb0000 {
37262306a36Sopenharmony_ci				label = "Storage";
37362306a36Sopenharmony_ci				reg = <0xcb0000 0x2f0000>;
37462306a36Sopenharmony_ci			};
37562306a36Sopenharmony_ci		};
37662306a36Sopenharmony_ci	};
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci	adc: adc@3 {
37962306a36Sopenharmony_ci		compatible = "ti,ads7957";
38062306a36Sopenharmony_ci		reg = <3>;
38162306a36Sopenharmony_ci		#io-channel-cells = <1>;
38262306a36Sopenharmony_ci		spi-max-frequency = <1000000>;
38362306a36Sopenharmony_ci		ti,spi-wdelay = <63>;
38462306a36Sopenharmony_ci		vref-supply = <&adc_ref>;
38562306a36Sopenharmony_ci	};
38662306a36Sopenharmony_ci};
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci&spi1 {
38962306a36Sopenharmony_ci	status = "okay";
39062306a36Sopenharmony_ci	pinctrl-0 = <&ev3_lcd_pins>;
39162306a36Sopenharmony_ci	pinctrl-names = "default";
39262306a36Sopenharmony_ci	cs-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci	display@0 {
39562306a36Sopenharmony_ci		compatible = "lego,ev3-lcd";
39662306a36Sopenharmony_ci		reg = <0>;
39762306a36Sopenharmony_ci		spi-max-frequency = <10000000>;
39862306a36Sopenharmony_ci		a0-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
39962306a36Sopenharmony_ci		reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
40062306a36Sopenharmony_ci	};
40162306a36Sopenharmony_ci};
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ci&ecap2 {
40462306a36Sopenharmony_ci	status = "okay";
40562306a36Sopenharmony_ci};
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci&ehrpwm0 {
40862306a36Sopenharmony_ci	status = "okay";
40962306a36Sopenharmony_ci};
41062306a36Sopenharmony_ci
41162306a36Sopenharmony_ci&gpio {
41262306a36Sopenharmony_ci	status = "okay";
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci	/* Don't pull down battery voltage adc io channel */
41562306a36Sopenharmony_ci	batt_volt_en {
41662306a36Sopenharmony_ci		gpio-hog;
41762306a36Sopenharmony_ci		gpios = <6 GPIO_ACTIVE_HIGH>;
41862306a36Sopenharmony_ci		output-high;
41962306a36Sopenharmony_ci	};
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci	/* Don't impede Bluetooth clock signal */
42262306a36Sopenharmony_ci	bt_clock_en {
42362306a36Sopenharmony_ci		gpio-hog;
42462306a36Sopenharmony_ci		gpios = <5 GPIO_ACTIVE_HIGH>;
42562306a36Sopenharmony_ci		input;
42662306a36Sopenharmony_ci	};
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci	/*
42962306a36Sopenharmony_ci	 * There is a PIC microcontroller for interfacing with an Apple MFi
43062306a36Sopenharmony_ci	 * chip. This interferes with normal Bluetooth operation, so we need
43162306a36Sopenharmony_ci	 * to make sure it is turned off. Note: The publicly available
43262306a36Sopenharmony_ci	 * schematics from LEGO don't show that these pins are connected to
43362306a36Sopenharmony_ci	 * anything, but they are present in the source code from LEGO.
43462306a36Sopenharmony_ci	 */
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ci	bt_pic_en {
43762306a36Sopenharmony_ci		gpio-hog;
43862306a36Sopenharmony_ci		gpios = <51 GPIO_ACTIVE_HIGH>;
43962306a36Sopenharmony_ci		output-low;
44062306a36Sopenharmony_ci	};
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_ci	bt_pic_rst {
44362306a36Sopenharmony_ci		gpio-hog;
44462306a36Sopenharmony_ci		gpios = <78 GPIO_ACTIVE_HIGH>;
44562306a36Sopenharmony_ci		output-high;
44662306a36Sopenharmony_ci	};
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ci	bt_pic_cts {
44962306a36Sopenharmony_ci		gpio-hog;
45062306a36Sopenharmony_ci		gpios = <87 GPIO_ACTIVE_HIGH>;
45162306a36Sopenharmony_ci		input;
45262306a36Sopenharmony_ci	};
45362306a36Sopenharmony_ci};
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ci&usb_phy {
45662306a36Sopenharmony_ci	status = "okay";
45762306a36Sopenharmony_ci};
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ci&usb0 {
46062306a36Sopenharmony_ci	status = "okay";
46162306a36Sopenharmony_ci};
46262306a36Sopenharmony_ci
46362306a36Sopenharmony_ci&usb1 {
46462306a36Sopenharmony_ci	status = "okay";
46562306a36Sopenharmony_ci	vbus-supply = <&vcc5v>;
46662306a36Sopenharmony_ci};
467