/*
 * Copyright 2013 Oliver Schinagl
 *
 * Oliver Schinagl <oliver@schinagl.nl>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
/include/ "sun7i-a20.dtsi"

/ {
	model = "Cubietech Cubietruck";
	compatible = "cubietech,cubietruck", "allwinner,sun7i-a20";

	soc@01c00000 {
		pinctrl@01c20800 {
			led_pins_cubietruck: led_pins@0 {
				allwinner,pins = "PH7", "PH11", "PH20", "PH21";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};
		};

		uart0: serial@01c28000 {
			pinctrl-names = "default";
			pinctrl-0 = <&uart0_pins_a>;
			status = "okay";
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins_cubietruck>;

		blue {
			label = "cubietruck:blue:usr";
			gpios = <&pio 7 21 0>;
		};

		orange {
			label = "cubietruck:orange:usr";
			gpios = <&pio 7 20 0>;
		};

		white {
			label = "cubietruck:white:usr";
			gpios = <&pio 7 11 0>;
		};

		green {
			label = "cubietruck:green:usr";
			gpios = <&pio 7 7 0>;
		};
	};
};
