Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/arch/arm/boot/dts/ti/davinci/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 8 kB image not shown  

Quelle  da850-lego-ev3.dts   Sprache: unbekannt

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Device tree for LEGO MINDSTORMS EV3
 *
 * Copyright (C) 2017 David Lechner <david@lechnology.com>
 */

/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/pwm/pwm.h>

#include "da850.dtsi"

/ {
 compatible = "lego,ev3", "ti,da850";
 model = "LEGO MINDSTORMS EV3";

 aliases {
  serial1 = &serial1;
 };

 memory@c0000000 {
  device_type = "memory";
  reg = <0xc0000000 0x04000000>;
 };

 /*
  * The buttons on the EV3 are mapped to keyboard keys.
  */
 gpio_keys {
  compatible = "gpio-keys";
  label = "EV3 Brick Buttons";
  pinctrl-names = "default";
  pinctrl-0 = <&button_bias>;

  center {
   label = "Center";
   linux,code = <KEY_ENTER>;
   gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
  };

  left {
   label = "Left";
   linux,code = <KEY_LEFT>;
   gpios = <&gpio 102 GPIO_ACTIVE_HIGH>;
  };

  back {
   label = "Back";
   linux,code = <KEY_BACKSPACE>;
   gpios = <&gpio 106 GPIO_ACTIVE_HIGH>;
  };

  right {
   label = "Right";
   linux,code = <KEY_RIGHT>;
   gpios = <&gpio 124 GPIO_ACTIVE_HIGH>;
  };

  down {
   label = "Down";
   linux,code = <KEY_DOWN>;
   gpios = <&gpio 126 GPIO_ACTIVE_HIGH>;
  };

  up {
   label = "Up";
   linux,code = <KEY_UP>;
   gpios = <&gpio 127 GPIO_ACTIVE_HIGH>;
  };
 };

 /*
  * The EV3 has two built-in bi-color LEDs behind the buttons.
  */
 leds {
  compatible = "gpio-leds";

  left_green {
   label = "led0:green:brick-status";
   /* GP6[13] */
   gpios = <&gpio 103 GPIO_ACTIVE_HIGH>;
   linux,default-trigger = "default-on";
  };

  right_red {
   label = "led1:red:brick-status";
   /* GP6[7] */
   gpios = <&gpio 108 GPIO_ACTIVE_HIGH>;
   linux,default-trigger = "default-on";
  };

  left_red {
   label = "led0:red:brick-status";
   /* GP6[12] */
   gpios = <&gpio 109 GPIO_ACTIVE_HIGH>;
   linux,default-trigger = "default-on";
  };

  right_green {
   label = "led1:green:brick-status";
   /* GP6[14] */
   gpios = <&gpio 110 GPIO_ACTIVE_HIGH>;
   linux,default-trigger = "default-on";
  };
 };

 /*
  * The EV3 is powered down by turning off the main 5V supply.
  */
 gpio-poweroff {
  compatible = "gpio-poweroff";
  gpios = <&gpio 107 GPIO_ACTIVE_LOW>;
 };

 sound {
  compatible = "pwm-beeper";
  pinctrl-names = "default";
  pinctrl-0 = <&ehrpwm0b_pins>;
  pwms = <&ehrpwm0 1 1000000 0>;
  amp-supply = <&>;
 };

 cvdd: regulator0 {
  compatible = "regulator-fixed";
  regulator-name = "cvdd";
  regulator-min-microvolt = <1200000>;
  regulator-max-microvolt = <1200000>;
  regulator-always-on;
  regulator-boot-on;
 };

 /*
  * This is a 5V current limiting regulator that is shared by USB,
  * the sensor (input) ports, the motor (output) ports and the A/DC.
  */
 vcc5v: regulator1 {
  compatible = "regulator-fixed";
  regulator-name = "vcc5v";
  regulator-min-microvolt = <5000000>;
  regulator-max-microvolt = <5000000>;
  gpio = <&gpio 101 0>;
  over-current-gpios = <&gpio 99 GPIO_ACTIVE_LOW>;
  enable-active-high;
  regulator-boot-on;
 };

 /*
  * This is a simple voltage divider on VCC5V to provide a 2.5V
  * reference signal to the ADC.
  */
 adc_ref: regulator2 {
  compatible = "regulator-fixed";
  regulator-name = "adc ref";
  regulator-min-microvolt = <2500000>;
  regulator-max-microvolt = <2500000>;
  regulator-boot-on;
  vin-supply = <&vcc5v>;
 };

 /*
  * This is the amplifier for the speaker.
  */
 amp: regulator3 {
  compatible = "regulator-fixed";
  regulator-name = "amp";
  gpio = <&gpio 111 GPIO_ACTIVE_HIGH>;
  enable-active-high;
 };

 /*
  * The EV3 can use 6-AA batteries or a rechargeable Li-ion battery pack.
  */
 battery {
  compatible = "lego,ev3-battery";
  io-channels = <&adc 4>, <&adc 3>;
  io-channel-names = "voltage", "current";
  rechargeable-gpios = <&gpio 136 GPIO_ACTIVE_LOW>;
 };

 bt_slow_clk: bt-clock {
  pinctrl-names = "default";
  pinctrl-0 = <&ecap2_pins>, <&bt_clock_bias>;
  compatible = "pwm-clock";
  #clock-cells = <0>;
  clock-frequency = <32768>;
  pwms = <&ecap2 0 30518 0>;
 };

 /* ARM local RAM */
 memory@ffff0000 {
  compatible = "syscon", "simple-mfd";
  reg = <0xffff0000 0x2000>; /* 8k */

  /*
   * The I2C bootloader looks for this magic value to either
   * boot normally or boot into a firmware update mode.
   */
  reboot-mode {
   compatible = "syscon-reboot-mode";
   offset = <0x1ffc>;
   mode-normal = <0x00000000>;
   mode-loader = <0x5555aaaa>;
  };
 };
};

&ref_clk {
 clock-frequency = <24000000>;
};

&cpu {
 cpu-supply = <&cvdd>;
};

/* since we have a fixed regulator, we can't run at these points */
&opp_100 {
 status = "disabled";
};

&opp_200 {
 status = "disabled";
};

/*
 * The SoC is actually the 456MHz version, but because of the fixed regulator
 * This is the fastest we can go.
 */
&opp_375 {
 status = "okay";
};

&pmx_core {
 status = "okay";

 ev3_lcd_pins: lcd-pins {
  pinctrl-single,bits = <
   /* SIMO, CLK */
   0x14 0x00100100 0x00f00f00
  >;
 };
};

&pinconf {
 status = "okay";

 /* Buttons have external pulldown resistors */
 button_bias: button-bias-groups {
  disable {
   groups = "cp5", "cp24", "cp25", "cp28";
   bias-disable;
  };
 };

 bt_clock_bias: bt-clock-bias-groups {
  disable {
   groups = "cp2";
   bias-disable;
  };
 };

 bt_pic_bias: bt-pic-bias-groups {
  disable {
   groups = "cp20";
   bias-disable;
  };
 };
};

/* Input port 1 */
&serial1 {
 status = "okay";
 pinctrl-names = "default";
 pinctrl-0 = <&serial1_rxtx_pins>;
};

&serial2 {
 pinctrl-names = "default";
 pinctrl-0 = <&serial2_rxtx_pins>, <&serial2_rtscts_pins>, <&bt_pic_bias>;
 status = "okay";

 bluetooth {
  compatible = "ti,cc2560";
  clocks = <&bt_slow_clk>;
  clock-names = "ext_clock";
  enable-gpios = <&gpio 73 GPIO_ACTIVE_HIGH>;
  max-speed = <2000000>;
  nvmem-cells = <&bdaddr>;
  nvmem-cell-names = "bd-address";
 };
};

&rtc0 {
 status = "okay";
};

&i2c0 {
 status = "okay";
 clock-frequency = <400000>;
 pinctrl-names = "default";
 pinctrl-0 = <&i2c0_pins>;

 /*
  * EEPROM contains the first stage bootloader, HW ID and Bluetooth MAC.
  */
 eeprom@50 {
  compatible = "microchip,24c128", "atmel,24c128";
  pagesize = <64>;
  read-only;
  reg = <0x50>;
  #address-cells = <1>;
  #size-cells = <1>;

  bdaddr: bdaddr@3f06 {
   reg = <0x3f06 0x06>;
  };
 };
};

&wdt {
 status = "okay";
};

&mmc0 {
 status = "okay";
 max-frequency = <50000000>;
 bus-width = <4>;
 cd-gpios = <&gpio 94 GPIO_ACTIVE_LOW>;
 pinctrl-names = "default";
 pinctrl-0 = <&mmc0_pins>;
};

&spi0 {
 status = "okay";
 pinctrl-names = "default";
 pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>, <&spi0_cs3_pin>;

 flash@0 {
  compatible = "n25q128a13", "jedec,spi-nor";
  reg = <0>;
  spi-max-frequency = <50000000>;
  ti,spi-wdelay = <8>;

  /* Partitions are based on the official firmware from LEGO */
  partitions {
   compatible = "fixed-partitions";
   #address-cells = <1>;
   #size-cells = <1>;

   partition@0 {
    label = "U-Boot";
    reg = <0 0x40000>;
   };

   partition@40000 {
    label = "U-Boot Env";
    reg = <0x40000 0x10000>;
   };

   partition@50000 {
    label = "Kernel";
    reg = <0x50000 0x200000>;
   };

   partition@250000 {
    label = "Filesystem";
    reg = <0x250000 0xa50000>;
   };

   partition@cb0000 {
    label = "Storage";
    reg = <0xcb0000 0x2f0000>;
   };
  };
 };

 adc: adc@3 {
  compatible = "ti,ads7957";
  reg = <3>;
  #io-channel-cells = <1>;
  spi-max-frequency = <1000000>;
  ti,spi-wdelay = <63>;
  vref-supply = <&adc_ref>;
 };
};

&spi1 {
 status = "okay";
 pinctrl-0 = <&ev3_lcd_pins>;
 pinctrl-names = "default";
 cs-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;

 display@0 {
  compatible = "lego,ev3-lcd";
  reg = <0>;
  spi-max-frequency = <10000000>;
  a0-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
  reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
 };
};

&ecap2 {
 status = "okay";
};

&ehrpwm0 {
 status = "okay";
};

&gpio {
 status = "okay";

 /* Don't pull down battery voltage adc io channel */
 batt-volt-en-hog {
  gpio-hog;
  gpios = <6 GPIO_ACTIVE_HIGH>;
  output-high;
 };

 /* Don't impede Bluetooth clock signal */
 bt-clock-en-hog {
  gpio-hog;
  gpios = <5 GPIO_ACTIVE_HIGH>;
  input;
 };

 /*
  * There is a PIC microcontroller for interfacing with an Apple MFi
  * chip. This interferes with normal Bluetooth operation, so we need
  * to make sure it is turned off. Note: The publicly available
  * schematics from LEGO don't show that these pins are connected to
  * anything, but they are present in the source code from LEGO.
  */

 bt-pic-en-hog {
  gpio-hog;
  gpios = <51 GPIO_ACTIVE_HIGH>;
  output-low;
 };

 bt-pic-rst-hog {
  gpio-hog;
  gpios = <78 GPIO_ACTIVE_HIGH>;
  output-high;
 };

 bt-pic-cts-hog {
  gpio-hog;
  gpios = <87 GPIO_ACTIVE_HIGH>;
  input;
 };
};

&usb_phy {
 status = "okay";
};

&usb0 {
 status = "okay";
};

&usb1 {
 status = "okay";
 vbus-supply = <&vcc5v>;
};

[ Dauer der Verarbeitung: 0.36 Sekunden  (vorverarbeitet)  ]