/*
 * Abilis Systems TB100 Development Kit PCB device tree
 *
 * Copyright (C) Abilis Systems 2013
 *
 * Author: Christian Ruppert <christian.ruppert@abilis.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 */

/dts-v1/;

/include/ "abilis_tb100.dtsi"

/ {
	chosen {
		bootargs = "earlycon=uart8250,mmio32,0xff100000,9600n8 console=ttyS0,9600n8";
	};

	aliases { };

	memory {
		device_type = "memory";
		reg = <0x80000000 0x08000000>;	/* 128M */
	};

	soc100 {
		uart@FF100000 {
			pinctrl-names = "default";
			pinctrl-0 = <&pctl_uart0>;
		};
		ethernet@FE100000 {
			phy-mode = "rgmii";
		};

		i2c0: i2c@FF120000 {
			i2c-sda-hold-time-ns = <432>;
		};
		i2c1: i2c@FF121000 {
			i2c-sda-hold-time-ns = <432>;
		};
		i2c2: i2c@FF122000 {
			i2c-sda-hold-time-ns = <432>;
		};
		i2c3: i2c@FF123000 {
			i2c-sda-hold-time-ns = <432>;
		};
		i2c4: i2c@FF124000 {
			i2c-sda-hold-time-ns = <432>;
		};

		leds {
			compatible = "gpio-leds";
			power {
				label = "Power";
				gpios = <&gpioi 0 0>;
				linux,default-trigger = "default-on";
			};
			heartbeat {
				label = "Heartbeat";
				gpios = <&gpioi 1 0>;
				linux,default-trigger = "heartbeat";
			};
			led2 {
				label = "LED2";
				gpios = <&gpioi 2 0>;
				default-state = "off";
			};
			led3 {
				label = "LED3";
				gpios = <&gpioi 3 0>;
				default-state = "off";
			};
			led4 {
				label = "LED4";
				gpios = <&gpioi 4 0>;
				default-state = "off";
			};
			led5 {
				label = "LED5";
				gpios = <&gpioi 5 0>;
				default-state = "off";
			};
			led6 {
				label = "LED6";
				gpios = <&gpioi 6 0>;
				default-state = "off";
			};
			led7 {
				label = "LED7";
				gpios = <&gpioi 7 0>;
				default-state = "off";
			};
			led8 {
				label = "LED8";
				gpios = <&gpioi 8 0>;
				default-state = "off";
			};
			led9 {
				label = "LED9";
				gpios = <&gpioi 9 0>;
				default-state = "off";
			};
			led10 {
				label = "LED10";
				gpios = <&gpioi 10 0>;
				default-state = "off";
			};
			led11 {
				label = "LED11";
				gpios = <&gpioi 11 0>;
				default-state = "off";
			};
		};
	};
};
