/*
 * 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"
/include/ "sunxi-common-regulators.dtsi"

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

	soc@01c00000 {
		mmc0: mmc@01c0f000 {
			pinctrl-names = "default";
			pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
			vmmc-supply = <&reg_vcc3v3>;
			bus-width = <4>;
			cd-gpios = <&pio 7 1 0>; /* PH1 */
			cd-inverted;
			status = "okay";
		};

		mmc3: mmc@01c12000 {
			pinctrl-names = "default";
			pinctrl-0 = <&mmc3_pins_a>;
			vmmc-supply = <&reg_vmmc3>;
			bus-width = <4>;
			non-removable;
			status = "okay";
		};

		usbphy: phy@01c13400 {
			usb1_vbus-supply = <&reg_usb1_vbus>;
			usb2_vbus-supply = <&reg_usb2_vbus>;
			status = "okay";
		};

		ehci0: usb@01c14000 {
			status = "okay";
		};

		ohci0: usb@01c14400 {
			status = "okay";
		};

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

		ehci1: usb@01c1c000 {
			status = "okay";
		};

		ohci1: usb@01c1c400 {
			status = "okay";
		};

		pinctrl@01c20800 {
			mmc3_pins_a: mmc3@0 {
				/* AP6210 requires pull-up */
				allwinner,pull = <1>;
			};

			vmmc3_pin_cubietruck: vmmc3_pin@0 {
				allwinner,pins = "PH9";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

			ahci_pwr_pin_cubietruck: ahci_pwr_pin@1 {
				allwinner,pins = "PH12";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

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

		pwm: pwm@01c20e00 {
			pinctrl-names = "default";
			pinctrl-0 = <&pwm0_pins_a>, <&pwm1_pins_a>;
			status = "okay";
		};

		ir0: ir@01c21800 {
			pinctrl-names = "default";
			pinctrl-0 = <&ir0_pins_a>;
			status = "okay";
		};

		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";

			axp209: pmic@34 {
				compatible = "x-powers,axp209";
				reg = <0x34>;
				interrupt-parent = <&nmi_intc>;
				interrupts = <0 8>;

				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

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

		i2c2: i2c@01c2b400 {
			pinctrl-names = "default";
			pinctrl-0 = <&i2c2_pins_a>;
			status = "okay";
		};

		gmac: ethernet@01c50000 {
			pinctrl-names = "default";
			pinctrl-0 = <&gmac_pins_rgmii_a>;
			phy = <&phy1>;
			phy-mode = "rgmii";
			status = "okay";

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

	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>;
		};
	};

	reg_ahci_5v: ahci-5v {
		pinctrl-0 = <&ahci_pwr_pin_cubietruck>;
		gpio = <&pio 7 12 0>;
		status = "okay";
	};

	reg_usb1_vbus: usb1-vbus {
		status = "okay";
	};

	reg_usb2_vbus: usb2-vbus {
		status = "okay";
	};

	reg_vmmc3: vmmc3 {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&vmmc3_pin_cubietruck>;
		regulator-name = "vmmc3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		enable-active-high;
		gpio = <&pio 7 9 0>;
	};
};
