/*
 * Copyright (C) 2014 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.
 */

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

#include "omap3-overo-common-peripherals.dtsi"
#include "omap3-overo-common-lcd43.dtsi"

#include <dt-bindings/input/input.h>

/ {
	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins>;
		heartbeat {
			label = "overo:red:gpio21";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;		/* gpio_21 */
			linux,default-trigger = "heartbeat";
		};
		gpio22 {
			label = "overo:blue:gpio22";
			gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;		/* gpio_22 */
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&button_pins>;
		#address-cells = <1>;
		#size-cells = <0>;
		button0@23 {
			label = "button0";
			linux,code = <BTN_0>;
			gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;		/* gpio_23 */
			gpio-key,wakeup;
		};
		button1@14 {
			label = "button1";
			linux,code = <BTN_1>;
			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;		/* gpio_14 */
			gpio-key,wakeup;
		};
	};
};

&usbhshost {
	status = "disabled";
};

