/*
 * 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 0x10000000
			0x50000000 0x10000000
			0x60000000 0x10000000
			0x70000000 0x10000000>;
	};

	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 0>;
		enable-active-high;
	};

	sdhci_emmc: sdhci@12510000 {
		bus-width = <8>;
		non-removable;
		pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>;
		pinctrl-names = "default";
		vmmc-supply = <&vemmc_reg>;
		status = "okay";
	};

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

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

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

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

	gpio-keys {
		compatible = "gpio-keys";

		vol-down-key {
			gpios = <&gpx2 1 1>;
			linux,code = <114>;
			label = "volume down";
			debounce-interval = <10>;
		};

		vol-up-key {
			gpios = <&gpx2 0 1>;
			linux,code = <115>;
			label = "volume up";
			debounce-interval = <10>;
		};

		power-key {
			gpios = <&gpx2 7 1>;
			linux,code = <116>;
			label = "power";
			debounce-interval = <10>;
			gpio-key,wakeup;
		};

		ok-key {
			gpios = <&gpx3 5 1>;
			linux,code = <352>;
			label = "ok";
			debounce-interval = <10>;
		};
	};

	tsp_reg: voltage-regulator {
		compatible = "regulator-fixed";
		regulator-name = "TSP_FIXED_VOLTAGES";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpl0 3 0>;
		enable-active-high;
	};

	i2c@13890000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-slave-addr = <0x10>;
		samsung,i2c-max-bus-freq = <400000>;
		pinctrl-0 = <&i2c3_bus>;
		pinctrl-names = "default";
		status = "okay";

		mms114-touchscreen@48 {
			compatible = "melfas,mms114";
			reg = <0x48>;
			interrupt-parent = <&gpx0>;
			interrupts = <4 2>;
			x-size = <720>;
			y-size = <1280>;
			avdd-supply = <&tsp_reg>;
			vdd-supply = <&tsp_reg>;
		};
	};

	i2c@138B0000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-slave-addr = <0x10>;
		samsung,i2c-max-bus-freq = <100000>;
		pinctrl-0 = <&i2c5_bus>;
		pinctrl-names = "default";
		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 0>,
						         <&gpx0 6 0>,
							 <&gpl0 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;
				};
			};
		};
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};
	};
};
