cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

da850-lego-ev3.dts (8796B)


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