/*
 * Odroid-U3/X2 board device tree source
 *
 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

/dts-v1/;
#include "exynos4412.dtsi"

/ {
	model = "Odroid based on Exynos4412";
	compatible = "samsung,odroid", "samsung,exynos4412";

	aliases {
		i2c0 = "/i2c@13860000";
		i2c1 = "/i2c@13870000";
		i2c2 = "/i2c@13880000";
		i2c3 = "/i2c@13890000";
		i2c4 = "/i2c@138a0000";
		i2c5 = "/i2c@138b0000";
		i2c6 = "/i2c@138c0000";
		i2c7 = "/i2c@138d0000";
		serial0 = "/serial@13800000";
		console = "/serial@13810000";
		mmc0 = &mshc_0;
		mmc1 = &sdhci2;
	};

	i2c@13860000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-slave-addr = <0x10>;
		samsung,i2c-max-bus-freq = <100000>;
		status = "okay";

		max77686_pmic@09 {
			compatible = "maxim,max77686";
			interrupts = <7 0>;
			reg = <0x09 0 0>;
			#clock-cells = <1>;

			voltage-regulators {
				ldo1_reg: LDO1 {
					regulator-name = "VDD_ALIVE_1.0V";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1000000>;
				};

				ldo2_reg: LDO2 {
					regulator-name = "VDDQ_VM1M2_1.2V";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
				};

				ldo3_reg: LDO3 {
					regulator-name = "VCC_1.8V_AP";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo4_reg: LDO4 {
					regulator-name = "VDDQ_MMC2_2.8V";
					regulator-min-microvolt = <2800000>;
					regulator-max-microvolt = <2800000>;
				};

				ldo5_reg: LDO5 {
					regulator-name = "VDDQ_MMC0/1/3_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo6_reg: LDO6 {
					regulator-name = "VMPLL_1.0V";
					regulator-min-microvolt = <1100000>;
					regulator-max-microvolt = <1100000>;
				};

				ldo7_reg: LDO7 {
					regulator-name = "VPLL_1.1V";
					regulator-min-microvolt = <1100000>;
					regulator-max-microvolt = <1100000>;
				};

				ldo8_reg: LDO8 {
					regulator-name = "VDD_MIPI/HDMI_1.0V";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1000000>;
				};

				ldo10_reg: LDO10 {
					regulator-name = "VDD_MIPI/HDMI_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo11_reg: LDO11 {
					regulator-name = "VDD_ABB1_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo12_reg: LDO12 {
					regulator-name = "VDD_UOTG_3.0V";
					regulator-min-microvolt = <3000000>;
					regulator-max-microvolt = <3000000>;
				};

				ldo13_reg: LDO13 {
					regulator-name = "VDD_C2C_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo14_reg: LDO14 {
					regulator-name = "VDD_ABB02_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo15_reg: LDO15 {
					regulator-name = "VDD_HSIC/OTG_1.0V";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1000000>;
				};

				ldo16_reg: LDO16 {
					regulator-name = "VDD_HSIC_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo17_reg: LDO17 {
					regulator-name = "VDDQ_CAM_1.2V";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
				};

				ldo20_reg: LDO20 {
					regulator-name = "VDDQ_EMMC_1.8V";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					regulator-always-on;
					regulator-boot-on;
				};

				ldo21_reg: LDO21 {
					regulator-name = "TFLASH_2.8V";
					regulator-min-microvolt = <2800000>;
					regulator-max-microvolt = <2800000>;
					regulator-always-on;
					regulator-boot-on;
				};

				ldo22_reg: LDO22 {
					regulator-name = "VDDQ_EMMC_2.8V";
					regulator-min-microvolt = <2800000>;
					regulator-max-microvolt = <2800000>;
					regulator-always-on;
					regulator-boot-on;
				};

				ldo25_reg: LDO25 {
					regulator-compatible = "LDO25";
					regulator-name = "VDDQ_LCD_3.0V";
					regulator-min-microvolt = <3000000>;
					regulator-max-microvolt = <3000000>;
				};

				buck1_reg: BUCK1 {
					regulator-name = "VDD_MIF_1.0V";
					regulator-min-microvolt = <8500000>;
					regulator-max-microvolt = <1100000>;
				};

				buck2_reg: BUCK2 {
					regulator-name = "VDD_ARM_1.0V";
					regulator-min-microvolt = <850000>;
					regulator-max-microvolt = <1500000>;
				};

				buck3_reg: BUCK3 {
					regulator-name = "VDD_INT_1.1V";
					regulator-min-microvolt = <850000>;
					regulator-max-microvolt = <1150000>;
				};

				buck4_reg: BUCK4 {
					regulator-name = "VDD_G3D_1.0V";
					regulator-min-microvolt = <850000>;
					regulator-max-microvolt = <1150000>;
				};

				buck5_reg: BUCK5 {
					regulator-name = "VDDQ_AP_1.2V";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
				};

				buck6_reg: BUCK6 {
					regulator-name = "VCC_INL1/7_1.35V";
					regulator-min-microvolt = <1350000>;
					regulator-max-microvolt = <1350000>;
				};

				buck7_reg: BUCK7 {
					regulator-name = "VCC_INL2/3/5_2.0V";
					regulator-min-microvolt = <2000000>;
					regulator-max-microvolt = <2000000>;
				};

				buck8_reg: BUCK8 {
					regulator-name = "VCC_P3V3_2.85V";
					regulator-min-microvolt = <750000>;
					regulator-max-microvolt = <3300000>;
				};
			};
		};
	};

	serial@13810000 {
		status = "okay";
	};

	ehci@12580000 {
		compatible = "samsung,exynos-ehci";
		reg = <0x12580000 0x100>;
		#address-cells = <1>;
		#size-cells = <1>;
		phy {
			compatible = "samsung,exynos-usb-phy";
			reg = <0x125B0000 0x100>;
		};
	};

	emmc-reset {
		compatible = "samsung,emmc-reset";
		reset-gpio = <&gpk1 2 0>;
	};
};

&sdhci2 {
	samsung,bus-width = <4>;
	samsung,timing = <1 2 3>;
	cd-gpios = <&gpk2 2 0>;
	status = "okay";
};

&mshc_0 {
	samsung,bus-width = <8>;
	samsung,timing = <2 1 0>;
	samsung,removable = <0>;
	fifoth_val = <0x203f0040>;
	bus_hz = <400000000>;
	div = <0x3>;
	index = <4>;
	status = "okay";
};
