Device tree updates for DaVinci DA850

* GPIO keys on DA850 LCDK
 * LCDC display on DA850 LCDK
 * USB OHCI on DA850 LCDK
 * VPIF (video input) on DA850 LCDK
 * Add a DA8xx specific compatible for UARTs
 * Introduce support for Lego Mindstorms EV3
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJYh0jIAAoJEGFBu2jqvgRNivsQAJpyONkOU7T7GQ/w4cU699zP
 Af83IFATZWvaeuscKNWHF/Fb9kTiPk8CB+HYSs0CFybGX8XoSaN8l/EI0jG0k4Zv
 7izWjvt/jFkIXEsKcORBXeRQ4MirmsWOY/J0J761L0WHO1GyoPtrtnOFzxWNO9jC
 P7e+1kwd0umtLhHJ4LKOqarfiFA70MiOw7FAN9luRQBgCD8sSfsYkgqne5MFCrc1
 Aaf8OV49ayTqjJRynDb2I6JnAt5WFt8q1AR/3Q5b4P1QK2wxJLA/ISAbgoNvZL9h
 NG1jTrKhk5iXF9XoeE4THi5nKupSpVk4zhl0tenwLg/SRcW97LZ3ar3cg96XrrZU
 Ng4poCkh5EdtgaMGstScoSr5DACRMsZWvTI4Ie9x8oPQiirT1an0w2xSVRDI77Kc
 Qmv3InOteRQJU9xoYC6DBb2CmaGsE0SJjuMgjguguQQkeznXFAl0PVj841c5ipUP
 JFAq4hUYE9G6/vBf+oOvtO3IsPDeEv3DCgW03gL2gxgZLd8BE65SPyGEMV2jeW57
 ctO0MJdRTg4VnYoOHwKU3LKytc/fjYC9ETx+VEManqIdwXj0wxtOdncUNLwYxKeo
 1U076HVBdmqXU45Qn9+ZIfkb1g9QJCqKYq8giOeaQzfG5HMAefoVHTfnhEeRPHs4
 R5KaT9XMRkUuNC4CNyMb
 =EOxA
 -----END PGP SIGNATURE-----

Merge tag 'davinci-for-v4.11/dt' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into next/dt

Device tree updates for DaVinci DA850

* GPIO keys on DA850 LCDK
* LCDC display on DA850 LCDK
* USB OHCI on DA850 LCDK
* VPIF (video input) on DA850 LCDK
* Add a DA8xx specific compatible for UARTs
* Introduce support for Lego Mindstorms EV3

* tag 'davinci-for-v4.11/dt' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci:
  ARM: dts: Add LEGO MINDSTORMS EV3 dts
  dt-bindings: add "microchip,24c128" compatible string
  dt-bindings: Add LEGO MINDSTORMS EV3 compatible specification
  dt-bindings: Add vendor prefix for LEGO
  ARM: dts: da850: Add ti,da830-uart compatible for serial ports
  ARM: dts: davinci: da850-lcdk: enable VPIF
  ARM: dts: davinci: da850-evm: enable VPIF
  ARM: dts: davinci: da850: VPIF: add node and muxing
  ARM: dts: da850-lcdk: Enable ohci for omapl138 lcdk
  ARM: dts: da850: Add usb device node
  ARM: dts: da850: specify the maximum pixel clock rate for tilcdc
  ARM: dts: da850-lcdk: add the vga-bridge node
  ARM: dts: da850: rename the display node label
  ARM: dts: da850-lcdk: add gpio-keys

Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
Olof Johansson 2017-01-29 17:05:23 -08:00
commit 2e33f29400
8 changed files with 468 additions and 6 deletions

View File

@ -13,6 +13,10 @@ EnBW AM1808 based CMC board
Required root node properties:
- compatible = "enbw,cmc", "ti,da850;
LEGO MINDSTORMS EV3 (AM1808 based)
Required root node properties:
- compatible = "lego,ev3", "ti,da850";
Generic DaVinci Boards
----------------------

View File

@ -10,6 +10,8 @@ Required properties:
"catalyst,24c32"
"microchip,24c128"
"ramtron,24c64"
"renesas,r1ex24002"

View File

@ -159,6 +159,7 @@ kosagi Sutajio Ko-Usagi PTE Ltd.
kyo Kyocera Corporation
lacie LaCie
lantiq Lantiq Semiconductor
lego LEGO Systems A/S
lenovo Lenovo Group Ltd.
lg LG Corporation
linux Linux-specific binding

View File

@ -132,7 +132,8 @@ dtb-$(CONFIG_ARCH_CLPS711X) += \
dtb-$(CONFIG_ARCH_DAVINCI) += \
da850-lcdk.dtb \
da850-enbw-cmc.dtb \
da850-evm.dtb
da850-evm.dtb \
da850-lego-ev3.dtb
dtb-$(CONFIG_ARCH_DIGICOLOR) += \
cx92755_equinox.dtb
dtb-$(CONFIG_ARCH_EFM32) += \

View File

@ -289,3 +289,23 @@
};
};
};
&vpif {
pinctrl-names = "default";
pinctrl-0 = <&vpif_capture_pins>;
status = "okay";
/* VPIF capture port */
port {
vpif_ch0: endpoint@0 {
reg = <0>;
bus-width = <8>;
};
vpif_ch1: endpoint@1 {
reg = <1>;
bus-width = <8>;
data-shift = <8>;
};
};
};

View File

@ -6,6 +6,7 @@
/dts-v1/;
#include "da850.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
model = "DA850/AM1808/OMAP-L138 LCDK";
@ -51,6 +52,62 @@
system-clock-frequency = <24576000>;
};
};
gpio-keys {
compatible = "gpio-keys";
autorepeat;
user1 {
label = "GPIO Key USER1";
linux,code = <BTN_0>;
gpios = <&gpio 36 GPIO_ACTIVE_LOW>;
};
user2 {
label = "GPIO Key USER2";
linux,code = <BTN_1>;
gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
};
};
vga-bridge {
compatible = "ti,ths8135";
#address-cells = <1>;
#size-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
vga_bridge_in: endpoint {
remote-endpoint = <&lcdc_out_vga>;
};
};
port@1 {
reg = <1>;
vga_bridge_out: endpoint {
remote-endpoint = <&vga_con_in>;
};
};
};
};
vga {
compatible = "vga-connector";
ddc-i2c-bus = <&i2c0>;
port {
vga_con_in: endpoint {
remote-endpoint = <&vga_bridge_out>;
};
};
};
};
&pmx_core {
@ -167,6 +224,10 @@
status = "okay";
};
&usb1 {
status = "okay";
};
&aemif {
pinctrl-names = "default";
pinctrl-0 = <&nand_pins>;
@ -236,3 +297,28 @@
&memctrl {
status = "okay";
};
&lcdc {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&lcd_pins>;
port {
lcdc_out_vga: endpoint {
remote-endpoint = <&vga_bridge_in>;
};
};
};
&vpif {
pinctrl-names = "default";
pinctrl-0 = <&vpif_capture_pins>;
status = "okay";
/* VPIF capture port */
port {
vpif_ch0: endpoint {
bus-width = <8>;
};
};
};

View File

@ -0,0 +1,313 @@
/*
* 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";
#address-cells = <1>;
#size-cells = <0>;
label = "EV3 Brick Buttons";
pinctrl-names = "default";
pinctrl-0 = <&button_pins>, <&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";
pinctrl-names = "default";
pinctrl-0 = <&led_pins>;
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>;
pinctrl-names = "default";
pinctrl-0 = <&system_power_pin>;
};
/*
* 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 {
pinctrl-names = "default";
pinctrl-0 = <&vcc5v_pins>;
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;
};
};
&pmx_core {
status = "okay";
spi0_cs3_pin: pinmux_spi0_cs3_pin {
pinctrl-single,bits = <
/* CS3 */
0xc 0x01000000 0x0f000000
>;
};
mmc0_cd_pin: pinmux_mmc0_cd {
pinctrl-single,bits = <
/* GP5[14] */
0x2C 0x00000080 0x000000f0
>;
};
button_pins: pinmux_button_pins {
pinctrl-single,bits = <
/* GP1[13] */
0x8 0x00000800 0x00000f00
/* GP6[10] */
0x34 0x00800000 0x00f00000
/* GP6[6] */
0x38 0x00000080 0x000000f0
/* GP7[12], GP7[14], GP7[15] */
0x40 0x00808800 0x00f0ff00
>;
};
led_pins: pinmux_led_pins {
pinctrl-single,bits = <
/* GP6[12], GP6[13], GP6[14] */
0x34 0x00008880 0x0000fff0
/* GP6[7] */
0x38 0x00000008 0x0000000f
>;
};
system_power_pin: pinmux_system_power {
pinctrl-single,bits = <
/* GP6[11] */
0x34 0x00080000 0x000f0000
>;
};
vcc5v_pins: pinmux_vcc5v {
pinctrl-single,bits = <
/* GP6[5] */
0x40 0x00000080 0x000000f0
/* GP6[3] */
0x4c 0x00008000 0x0000f000
>;
};
};
&pinconf {
status = "okay";
/* Buttons have external pulldown resistors */
button_bias: button-bias-groups {
disable {
groups = "cp5", "cp24", "cp25", "cp28";
bias-disable;
};
};
};
/* Input port 1 */
&serial1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&serial1_rxtx_pins>;
};
&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";
pagesize = <64>;
read-only;
reg = <0x50>;
};
};
&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>, <&mmc0_cd_pin>;
};
&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>;
};
};
};
};
&gpio {
status = "okay";
};
&usb_phy {
status = "okay";
};
&usb0 {
status = "okay";
};
&usb1 {
status = "okay";
vbus-supply = <&vcc5v>;
};

View File

@ -208,7 +208,18 @@
0x4c 0x02000022 0x0f0000ff
>;
};
vpif_capture_pins: vpif_capture_pins {
pinctrl-single,bits = <
/* VP_DIN[2..7], VP_CLKIN1, VP_CLKIN0 */
0x38 0x11111111 0xffffffff
/* VP_DIN[10..15,0..1] */
0x3c 0x11111111 0xffffffff
/* VP_DIN[8..9] */
0x40 0x00000011 0x000000ff
/* VP_CLKIN3, VP_CLKIN2 */
0x4c 0x00010100 0x000f0f00
>;
};
};
prictrl: priority-controller@14110 {
compatible = "ti,da850-mstpri";
@ -266,22 +277,25 @@
interrupt-names = "edm3_tcerrint";
};
serial0: serial@42000 {
compatible = "ns16550a";
compatible = "ti,da830-uart", "ns16550a";
reg = <0x42000 0x100>;
reg-io-width = <4>;
reg-shift = <2>;
interrupts = <25>;
status = "disabled";
};
serial1: serial@10c000 {
compatible = "ns16550a";
compatible = "ti,da830-uart", "ns16550a";
reg = <0x10c000 0x100>;
reg-io-width = <4>;
reg-shift = <2>;
interrupts = <53>;
status = "disabled";
};
serial2: serial@10d000 {
compatible = "ns16550a";
compatible = "ti,da830-uart", "ns16550a";
reg = <0x10d000 0x100>;
reg-io-width = <4>;
reg-shift = <2>;
interrupts = <61>;
status = "disabled";
@ -324,6 +338,18 @@
dma-names = "rx", "tx";
status = "disabled";
};
vpif: video@217000 {
compatible = "ti,da850-vpif";
reg = <0x217000 0x1000>;
interrupts = <92>;
status = "disabled";
/* VPIF capture port */
port {
#address-cells = <1>;
#size-cells = <0>;
};
};
mmc1: mmc@21b000 {
compatible = "ti,da830-mmc";
reg = <0x21b000 0x1000>;
@ -425,6 +451,14 @@
>;
status = "disabled";
};
usb1: usb@225000 {
compatible = "ti,da830-ohci";
reg = <0x225000 0x1000>;
interrupts = <59>;
phys = <&usb_phy 1>;
phy-names = "usb-phy";
status = "disabled";
};
gpio: gpio@226000 {
compatible = "ti,dm6441-gpio";
gpio-controller;
@ -458,10 +492,11 @@
dma-names = "tx", "rx";
};
display: display@213000 {
lcdc: display@213000 {
compatible = "ti,da850-tilcdc";
reg = <0x213000 0x1000>;
interrupts = <52>;
max-pixelclock = <37500>;
status = "disabled";
};
};