/*
 * Copyright 2014 Hans de Goede <hdegoede@redhat.com>
 *
 * 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 = "I12 / Q5 / QT840A A20 tvbox";
	compatible = "allwinner,i12-tvbox", "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";
		};

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

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

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

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

			vmmc3_io_pin_i12_tvbox: vmmc3_io_pin@0 {
				allwinner,pins = "PH12";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

			gmac_power_pin_i12_tvbox: gmac_power_pin@0 {
				allwinner,pins = "PH21";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

			led_pins_i12_tvbox: led_pins@0 {
				allwinner,pins = "PH9", "PH20";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};
		};

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

		gmac: ethernet@01c50000 {
			pinctrl-names = "default";
			pinctrl-0 = <&gmac_pins_mii_a>;
			phy = <&phy1>;
			phy-mode = "mii";
			phy-supply = <&reg_gmac_3v3>;
			status = "okay";

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

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

		red {
			label = "i12_tvbox:red:usr";
			gpios = <&pio 7 9 1>;
		};

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

	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_i12_tvbox>;
		regulator-name = "vmmc3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		enable-active-high;
		gpio = <&pio 7 2 0>;
	};

	reg_vmmc3_io: vmmc3-io {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&vmmc3_io_pin_i12_tvbox>;
		regulator-name = "vmmc3-io";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		/* This controls VCC-PI, must be always on! */
		regulator-always-on;
		enable-active-high;
		gpio = <&pio 7 12 0>;
	};

	reg_gmac_3v3: gmac-3v3 {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&gmac_power_pin_i12_tvbox>;
		regulator-name = "gmac-3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		startup-delay-us = <50000>;
		enable-active-high;
		gpio = <&pio 7 21 0>;
	};
};
