/*
 * Device tree for LEGO MINDSTORMS EV3
 *
 * Copyright (C) 2017 David Lechner <david@lechnology.com>
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation, version 2.
 */

/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 = <&amp>;
	};

	/*
	 * 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>;
};

&pmx_core {
	status = "okay";

	ev3_lcd_pins: pinmux_lcd {
		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 {
		gpio-hog;
		gpios = <6 GPIO_ACTIVE_HIGH>;
		output-high;
	};

	/* Don't impede Bluetooth clock signal */
	bt_clock_en {
		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 {
		gpio-hog;
		gpios = <51 GPIO_ACTIVE_HIGH>;
		output-low;
	};

	bt_pic_rst {
		gpio-hog;
		gpios = <78 GPIO_ACTIVE_HIGH>;
		output-high;
	};

	bt_pic_cts {
		gpio-hog;
		gpios = <87 GPIO_ACTIVE_HIGH>;
		input;
	};
};

&usb_phy {
	status = "okay";
};

&usb0 {
	status = "okay";
};

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