/*
 * Copyright 2012 Stefan Roese
 * Stefan Roese <sr@denx.de>
 *
 * 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/ "sun4i-a10.dtsi"
/include/ "sunxi-common-regulators.dtsi"

/ {
	model = "Cubietech Cubieboard";
	compatible = "cubietech,a10-cubieboard", "allwinner,sun4i-a10";

	soc@01c00000 {
		emac: ethernet@01c0b000 {
			pinctrl-names = "default";
			pinctrl-0 = <&emac_pins_a>;
			phy = <&phy1>;
			status = "okay";
		};

		mdio@01c0b080 {
			status = "okay";

			phy1: ethernet-phy@1 {
				reg = <1>;
			};
		};

		ahci: sata@01c18000 {
			target-supply = <&reg_ahci_5v>;
			status = "okay";
		};

		pinctrl@01c20800 {
			led_pins_cubieboard: led_pins@0 {
				allwinner,pins = "PH20", "PH21";
				allwinner,function = "gpio_out";
				allwinner,drive = <1>;
				allwinner,pull = <0>;
			};
		};

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

		i2c0: i2c@01c2ac00 {
			pinctrl-names = "default";
			pinctrl-0 = <&i2c0_pins_a>;
			status = "okay";
		};

		i2c1: i2c@01c2b000 {
			pinctrl-names = "default";
			pinctrl-0 = <&i2c1_pins_a>;
			status = "okay";
		};
	};

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

		blue {
			label = "cubieboard:blue:usr";
			gpios = <&pio 7 21 0>; /* LED1 */
		};

		green {
			label = "cubieboard:green:usr";
			gpios = <&pio 7 20 0>; /* LED2 */
			linux,default-trigger = "heartbeat";
		};
	};

	reg_ahci_5v: ahci-5v {
		status = "okay";
	};
};
