/*
 * Abilis Systems TB101 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_tb101.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 {
			sda-hold-time = <432>;
		};
		i2c1: i2c@FF121000 {
			sda-hold-time = <432>;
		};
		i2c2: i2c@FF122000 {
			sda-hold-time = <432>;
		};
		i2c3: i2c@FF123000 {
			sda-hold-time = <432>;
		};
		i2c4: i2c@FF124000 {
			sda-hold-time = <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";
			};
		};
	};
};
