/*
 * 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 <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";
};

