/*
 * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * 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.
 */

/dts-v1/;
#include "rk3188.dtsi"

/ {
	model = "Radxa Rock";

	memory {
		reg = <0x60000000 0x80000000>;
	};

	soc {
		uart0: serial@10124000 {
			status = "okay";
		};

		uart1: serial@10126000 {
			status = "okay";
		};

		uart2: serial@20064000 {
			pinctrl-names = "default";
			pinctrl-0 = <&uart2_xfer>;
			status = "okay";
		};

		uart3: serial@20068000 {
			status = "okay";
		};

		gpio-keys {
			compatible = "gpio-keys";
			#address-cells = <1>;
			#size-cells = <0>;
			autorepeat;

			button@0 {
				gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
				linux,code = <116>;
				label = "GPIO Key Power";
				linux,input-type = <1>;
				gpio-key,wakeup = <1>;
				debounce-interval = <100>;
			};
		};

		gpio-leds {
			compatible = "gpio-leds";

			green {
				gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
				default-state = "off";
			};

			yellow {
				gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
				default-state = "off";
			};

			sleep {
				gpios = <&gpio0 15 0>;
				default-state = "off";
			};
		};

	};
};
