/*
 * Samsung's Exynos4210 based Trats board device tree source
 *
 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Device tree source file for Samsung's Trats board which is based on
 * Samsung's Exynos4210 SoC.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

/dts-v1/;
/include/ "exynos4210.dtsi"

/ {
	model = "Samsung Trats based on Exynos4210";
	compatible = "samsung,trats", "samsung,exynos4210";

	memory {
		reg =  <0x40000000 0x20000000
			0x60000000 0x20000000>;
	};

	chosen {
		bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rootwait earlyprintk panic=5";
	};

	vemmc_reg: voltage-regulator@0 {
	        compatible = "regulator-fixed";
		regulator-name = "VMEM_VDD_2.8V";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpk0 2 1 0 0>;
		enable-active-high;
	};

	sdhci_emmc: sdhci@12510000 {
		bus-width = <8>;
		non-removable;
		broken-voltage;
		gpios = <&gpk0 0 2 0 3>,
			<&gpk0 1 2 0 3>,
			<&gpk0 3 2 2 3>,
			<&gpk0 4 2 2 3>,
			<&gpk0 5 2 2 3>,
			<&gpk0 6 2 2 3>,
			<&gpk1 3 3 3 3>,
			<&gpk1 4 3 3 3>,
			<&gpk1 5 3 3 3>,
			<&gpk1 6 3 3 3>;
		vmmc-supply = <&vemmc_reg>;
		status = "okay";
	};

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

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

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

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

	i2c@138B0000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-slave-addr = <0x10>;
		samsung,i2c-max-bus-freq = <100000>;
		gpios = <&gpb 6 3 3 0>,
			<&gpb 7 3 3 0>;
		status = "okay";

		max8997_pmic@66 {
			compatible = "maxim,max8997-pmic";

			reg = <0x66>;

			max8997,pmic-buck1-uses-gpio-dvs;
			max8997,pmic-buck2-uses-gpio-dvs;
			max8997,pmic-buck5-uses-gpio-dvs;

			max8997,pmic-ignore-gpiodvs-side-effect;
			max8997,pmic-buck125-default-dvs-idx = <0>;

			max8997,pmic-buck125-dvs-gpios = <&gpx0 5 1 0 0>,
						         <&gpx0 6 1 0 0>,
							 <&gpl0 0 1 0 0>;

			max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
							 <1250000>, <1200000>,
							 <1150000>, <1100000>,
							 <1000000>, <950000>;

			max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
							 <950000>,  <900000>,
							 <1100000>, <1000000>,
							 <950000>,  <900000>;

			max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
							 <1200000>, <1200000>,
							 <1200000>, <1200000>,
							 <1200000>, <1200000>;

			regulators {
				valive_reg: LDO2 {
				     regulator-name = "VALIVE_1.1V_C210";
				     regulator-min-microvolt = <1100000>;
				     regulator-max-microvolt = <1100000>;
				     regulator-always-on;
				};

				vusb_reg: LDO3 {
				     regulator-name = "VUSB_1.1V_C210";
				     regulator-min-microvolt = <1100000>;
				     regulator-max-microvolt = <1100000>;
				};

				vmipi_reg: LDO4 {
				     regulator-name = "VMIPI_1.8V";
				     regulator-min-microvolt = <1800000>;
				     regulator-max-microvolt = <1800000>;
				};

				vpda_reg: LDO6 {
				     regulator-name = "VCC_1.8V_PDA";
				     regulator-min-microvolt = <1800000>;
				     regulator-max-microvolt = <1800000>;
				     regulator-always-on;
				};

				vcam_reg: LDO7 {
				     regulator-name = "CAM_ISP_1.8V";
				     regulator-min-microvolt = <1800000>;
				     regulator-max-microvolt = <1800000>;
				};

				vusbdac_reg: LDO8 {
				     regulator-name = "VUSB/VDAC_3.3V_C210";
				     regulator-min-microvolt = <3300000>;
				     regulator-max-microvolt = <3300000>;
				};

				vccpda_reg: LDO9 {
				     regulator-name = "VCC_2.8V_PDA";
				     regulator-min-microvolt = <2800000>;
				     regulator-max-microvolt = <2800000>;
				     regulator-always-on;
				};

				vpll_reg: LDO10 {
				     regulator-name = "VPLL_1.1V_C210";
				     regulator-min-microvolt = <1100000>;
				     regulator-max-microvolt = <1100000>;
				     regulator-always-on;
				};

				vcclcd_reg: LDO13 {
				     regulator-name = "VCC_3.3V_LCD";
				     regulator-min-microvolt = <3300000>;
				     regulator-max-microvolt = <3300000>;
				};

				vlcd_reg: LDO15 {
				     regulator-name = "VLCD_2.2V";
				     regulator-min-microvolt = <2200000>;
				     regulator-max-microvolt = <2200000>;
				};

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

				vddq_reg: LDO21 {
				     regulator-name = "VDDQ_M1M2_1.2V";
				     regulator-min-microvolt = <1200000>;
				     regulator-max-microvolt = <1200000>;
				     regulator-always-on;
				};

				varm_breg: BUCK1 {
				     regulator-name = "VARM_1.2V_C210";
				     regulator-min-microvolt = <900000>;
				     regulator-max-microvolt = <1350000>;
				     regulator-always-on;
				};

				vint_breg: BUCK2 {
				     regulator-name = "VINT_1.1V_C210";
				     regulator-min-microvolt = <900000>;
				     regulator-max-microvolt = <1100000>;
				     regulator-always-on;
				};

				camisp_breg: BUCK4 {
				     regulator-name = "CAM_ISP_CORE_1.2V";
				     regulator-min-microvolt = <1200000>;
				     regulator-max-microvolt = <1200000>;
				};

				vmem_breg: BUCK5 {
				     regulator-name = "VMEM_1.2V_C210";
				     regulator-min-microvolt = <1200000>;
				     regulator-max-microvolt = <1200000>;
				     regulator-always-on;
				};

				vccsub_breg: BUCK7 {
				     regulator-name = "VCC_SUB_2.0V";
				     regulator-min-microvolt = <2000000>;
				     regulator-max-microvolt = <2000000>;
				     regulator-always-on;
				};

				safe1_sreg: ESAFEOUT1 {
				     regulator-name = "SAFEOUT1";
				     regulator-always-on;
				};

				safe2_sreg: ESAFEOUT2 {
				     regulator-name = "SAFEOUT2";
				     regulator-boot-on;
				};
			};
		};
	};
};
