/*
 * Copyright 2013 Maxime Ripard
 *
 * Maxime Ripard <maxime.ripard@free-electrons.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/ "sun5i-a10s.dtsi"
/include/ "sunxi-common-regulators.dtsi"

/ {
	model = "Olimex A10s-Olinuxino Micro";
	compatible = "olimex,a10s-olinuxino-micro", "allwinner,sun5i-a10s";

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

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

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

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

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

			usb1_vbus_pin_olinuxino_m: usb1_vbus_pin@0 {
				allwinner,pins = "PB10";
				allwinner,function = "gpio_out";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};
		};

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

		uart2: serial@01c28800 {
			pinctrl-names = "default";
			pinctrl-0 = <&uart2_pins_a>;
			status = "okay";
		};

		uart3: serial@01c28c00 {
			pinctrl-names = "default";
			pinctrl-0 = <&uart3_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";

			at24@50 {
				compatible = "at,24c16";
				pagesize = <16>;
				reg = <0x50>;
				read-only;
			};
		};

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

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

		green {
			label = "a10s-olinuxino-micro:green:usr";
			gpios = <&pio 4 3 0>;
			default-state = "on";
		};
	};

	reg_usb1_vbus: usb1-vbus {
		pinctrl-0 = <&usb1_vbus_pin_olinuxino_m>;
		gpio = <&pio 1 10 0>;
		status = "okay";
	};
};
