/*
 * 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";
		mmc2 = "/sdhci@12530000";
		mmc4 = "/dwmmc@12550000";
	};

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

	sdhci@12510000 {
		status = "disabled";
	};

	sdhci@12520000 {
		status = "disabled";
	};

	sdhci@12530000 {
		samsung,bus-width = <4>;
		samsung,timing = <1 2 3>;
		cd-gpios = <&gpk2 2 0>;
	};

	sdhci@12540000 {
		status = "disabled";
	};

	dwmmc@12550000 {
		samsung,bus-width = <8>;
		samsung,timing = <2 1 0>;
		samsung,removable = <0>;
		fifoth_val = <0x203f0040>;
		bus_hz = <400000000>;
		div = <0x3>;
		index = <4>;
	};

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