/*
 * SAMSUNG Exynos5433 TM2 board device tree source
 *
 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
 *
 * Device tree source file for Samsung's TM2 board which is based on
 * Samsung Exynos5433 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.
 */

#include "exynos5433-tm2-common.dtsi"

/ {
	model = "Samsung TM2 board";
	compatible = "samsung,tm2", "samsung,exynos5433";
};

&cmu_disp {
	/*
	 * TM2 and TM2e differ only by DISP_PLL rate, but define all assigned
	 * clocks properties for DISP CMU for each board to keep them together
	 * for easier review and maintenance.
	 */
	assigned-clocks = <&cmu_disp CLK_FOUT_DISP_PLL>,
			  <&cmu_mif CLK_DIV_SCLK_DECON_TV_ECLK>,
			  <&cmu_disp CLK_MOUT_ACLK_DISP_333_USER>,
			  <&cmu_disp CLK_MOUT_SCLK_DSIM0_USER>,
			  <&cmu_disp CLK_MOUT_SCLK_DSIM0>,
			  <&cmu_disp CLK_MOUT_SCLK_DECON_ECLK_USER>,
			  <&cmu_disp CLK_MOUT_SCLK_DECON_ECLK>,
			  <&cmu_disp CLK_MOUT_PHYCLK_MIPIDPHY0_RXCLKESC0_USER>,
			  <&cmu_disp CLK_MOUT_PHYCLK_MIPIDPHY0_BITCLKDIV8_USER>,
			  <&cmu_disp CLK_MOUT_DISP_PLL>,
			  <&cmu_mif CLK_MOUT_SCLK_DECON_TV_ECLK_A>,
			  <&cmu_disp CLK_MOUT_SCLK_DECON_TV_ECLK_USER>,
			  <&cmu_disp CLK_MOUT_SCLK_DECON_TV_ECLK>;
	assigned-clock-parents = <0>, <0>,
				 <&cmu_mif CLK_ACLK_DISP_333>,
				 <&cmu_mif CLK_SCLK_DSIM0_DISP>,
				 <&cmu_disp CLK_MOUT_SCLK_DSIM0_USER>,
				 <&cmu_mif CLK_SCLK_DECON_ECLK_DISP>,
				 <&cmu_disp CLK_MOUT_SCLK_DECON_ECLK_USER>,
				 <&cmu_disp CLK_PHYCLK_MIPIDPHY0_RXCLKESC0_PHY>,
				 <&cmu_disp CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8_PHY>,
				 <&cmu_disp CLK_FOUT_DISP_PLL>,
				 <&cmu_mif CLK_MOUT_BUS_PLL_DIV2>,
				 <&cmu_mif CLK_SCLK_DECON_TV_ECLK_DISP>,
				 <&cmu_disp CLK_MOUT_SCLK_DECON_TV_ECLK_USER>;
	assigned-clock-rates = <250000000>, <400000000>;
};

&dsi {
	panel@0 {
		compatible = "samsung,s6e3ha2";
		reg = <0>;
		vdd3-supply = <&ldo27_reg>;
		vci-supply = <&ldo28_reg>;
		reset-gpios = <&gpg0 0 GPIO_ACTIVE_LOW>;
		enable-gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>;
		te-gpios = <&gpf1 3 GPIO_ACTIVE_HIGH>;
	};
};

&hsi2c_9 {
	status = "okay";

	touchkey@20 {
		compatible = "cypress,tm2-touchkey";
		reg = <0x20>;
		interrupt-parent = <&gpa3>;
		interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
		vcc-supply = <&ldo32_reg>;
		vdd-supply = <&ldo33_reg>;
	};
};

&ldo31_reg {
	regulator-name = "TSP_VDD_1.85V_AP";
	regulator-min-microvolt = <1850000>;
	regulator-max-microvolt = <1850000>;
};

&ldo38_reg {
	regulator-name = "VCC_3.0V_MOTOR_AP";
	regulator-min-microvolt = <3000000>;
	regulator-max-microvolt = <3000000>;
};

&stmfts {
	touchscreen-size-x = <1439>;
	touchscreen-size-y = <2559>;
};
