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 = <&>; 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