/*
 * Copyright (C) 2012 Florian Vaussard, EPFL Mobots group
 *
 * 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.
 */

/*
 * Tobi expansion board is manufactured by Gumstix Inc.
 */

#include "omap3-overo.dtsi"

/ {
	model = "TI OMAP3 Gumstix Overo on Tobi";
	compatible = "ti,omap3-tobi", "ti,omap3-overo", "ti,omap3";

	leds {
		compatible = "gpio-leds";
		heartbeat {
			label = "overo:red:gpio21";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};
	};

	vddvario: regulator-vddvario {
		  compatible = "regulator-fixed";
		  regulator-name = "vddvario";
		  regulator-always-on;
	};

	vdd33a: regulator-vdd33a {
		compatible = "regulator-fixed";
		regulator-name = "vdd33a";
		regulator-always-on;
	};
};

&gpmc {
	ranges = <5 0 0x2c000000 0x1000000>;	/* CS5 */

	ethernet@5,0 {
		compatible = "smsc,lan9221", "smsc,lan9115";
		reg = <5 0 0xff>;
		bank-width = <2>;

		gpmc,mux-add-data;
		gpmc,cs-on-ns = <0>;
		gpmc,cs-rd-off-ns = <42>;
		gpmc,cs-wr-off-ns = <36>;
		gpmc,adv-on-ns = <6>;
		gpmc,adv-rd-off-ns = <12>;
		gpmc,adv-wr-off-ns = <12>;
		gpmc,oe-on-ns = <0>;
		gpmc,oe-off-ns = <42>;
		gpmc,we-on-ns = <0>;
		gpmc,we-off-ns = <36>;
		gpmc,rd-cycle-ns = <60>;
		gpmc,wr-cycle-ns = <54>;
		gpmc,access-ns = <36>;
		gpmc,page-burst-access-ns = <0>;
		gpmc,bus-turnaround-ns = <0>;
		gpmc,cycle2cycle-delay-ns = <0>;
		gpmc,wr-data-mux-bus-ns = <18>;
		gpmc,wr-access-ns = <42>;
		gpmc,cycle2cycle-samecsen;
		gpmc,cycle2cycle-diffcsen;

		interrupt-parent = <&gpio6>;
		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;	/* GPIO 176 */
		reg-io-width = <4>;
	};
};

&i2c3 {
	clock-frequency = <100000>;
};

&mmc3 {
	status = "disabled";
};
