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