/*
 * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include "apq8053-lite-dragon.dtsi"

&rpm_bus {
	rpm-regulator-ldoa10 {
		status = "okay";
		pm8953_l10: regulator-l10 {
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			qcom,init-voltage = <3300000>;
			status = "okay";
		};
	};
};

&i2c_3 {
	status = "okay";
	/delete-node/ himax_ts@48;
	gt9xx-i2c@14 {
		compatible = "goodix,gt9xx";
		status = "okay";
		reg = <0x14>;
		vdd_ana-supply = <&pm8953_l10>;
		vcc_i2c-supply = <&pm8953_l6>;
		interrupt-parent = <&tlmm>;
		interrupts = <65 0x2008>;
		pinctrl-names = "gdix_ts_int_default", "gdix_ts_int_output_low",
			"gdix_ts_int_output_high", "gdix_ts_int_input",
			"gdix_ts_rst_default", "gdix_ts_rst_output_low",
			"gdix_ts_rst_output_high", "gdix_ts_rst_input";
		pinctrl-0 = <&ts_int_default>;
		pinctrl-1 = <&ts_int_output_low>;
		pinctrl-2 = <&ts_int_output_high>;
		pinctrl-3 = <&ts_int_input>;
		pinctrl-4 = <&ts_rst_default>;
		pinctrl-5 = <&ts_rst_output_low>;
		pinctrl-6 = <&ts_rst_output_high>;
		pinctrl-7 = <&ts_rst_input>;

		reset-gpios = <&tlmm 64 0x00>;
		irq-gpios = <&tlmm 65 0x2008>;
		irq-flags = <2>;

		touchscreen-max-id = <11>;
		touchscreen-size-x = <1200>;
		touchscreen-size-y = <1920>;
		touchscreen-max-w = <1024>;
		touchscreen-max-p = <1024>;

		goodix,type-a-report = <0>;
		goodix,driver-send-cfg = <1>;
		goodix,wakeup-with-reset = <0>;
		goodix,resume-in-workqueue = <0>;
		goodix,int-sync = <1>;
		goodix,swap-x2y = <0>;
		goodix,esd-protect = <1>;
		goodix,pen-suppress-finger = <0>;
		goodix,auto-update = <1>;
		goodix,auto-update-cfg = <0>;
		goodix,power-off-sleep = <0>;

		goodix,cfg-group0 = [
			5A B0 04 80 07 0A 35 10 22 08 32 0D 50 3C 0A 04
			01 01 00 B4 11 11 44 15 19 1B 14 95 35 FF 3A 3C
			39 13 00 00 00 98 03 1C 00 00 00 00 03 00 00 00
			00 80 0A 37 46 40 E5 52 23 28 00 04 81 38 00 7F
			3B 00 7D 3E 00 7C 41 00 7A 44 0C 7A 00 50 33 50
			0B 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 55 00 01 00 00 02 00 00 00
			1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E
			0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 2A 29
			28 27 26 25 24 23 22 21 20 1F 1E 1D 1C 1B 19 18
			17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08
			07 06 05 04 03 02 01 00 08 01
		];

		goodix,cfg-group2 = [
			5B B0 04 80 07 0A 35 10 22 08 32 0D 50 32 0A 04
			01 01 00 B4 11 11 44 2B 31 36 28 95 35 FF 3E 40
			39 13 00 00 00 DA 03 1C 00 00 00 00 03 00 00 00
			00 80 0A 32 42 40 E5 52 23 28 00 04 7D 33 00 7D
			36 00 7E 39 00 7F 3C 00 80 40 0C 80 00 50 33 50
			0B 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 55 00 01 00 00 02 00 00 00
			1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E
			0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 2A 29
			28 27 26 25 24 23 22 21 20 1F 1E 1D 1C 1B 19 18
			17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08
			07 06 05 04 03 02 01 00 81 01
		];
	};
};

&mdss_mdp {
	qcom,mdss-pref-prim-intf = "dsi";
};

&mdss_dsi {
	hw-config = "single_dsi";
};

&mdss_dsi0 {
	qcom,dsi-pref-prim-pan = <&dsi_boent51021_1200p_video>;
	pinctrl-names = "mdss_default", "mdss_sleep";
	pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
	pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;

	/delete-property/ vdd-supply;
	vddio-supply = <&pm8953_l6>;
	lab-supply = <&lab_regulator>;
	ibb-supply = <&ibb_regulator>;

	qcom,platform-te-gpio = <&tlmm 24 0>;
	qcom,platform-reset-gpio = <&tlmm 61 0>;
	qcom,ext-vdd-gpio = <&tlmm 100 0>;
	qcom,platform-bklight-en-gpio = <&tlmm 95 0>;

	qcom,platform-lane-config = [00 00 ff 0f
				00 00 ff 0f
				00 00 ff 0f
				00 00 ff 0f
				00 00 ff 8f];
};

&mdss_dsi1 {
	status = "disabled";
};

&eeprom0 {
	gpios = <&tlmm 26 0>,
		<&tlmm 40 0>,
		<&tlmm 118 0>,
		<&tlmm 119 0>,
		<&tlmm 39 0>;
	qcom,gpio-vdig = <3>;
	qcom,gpio-vana = <4>;
	qcom,gpio-req-tbl-num = <0 1 2 3 4>;
	qcom,gpio-req-tbl-flags = <1 0 0 0 0>;
	qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
			"CAM_RESET0",
			"CAM_VDIG",
			"CAM_VANA",
			"CAM_STANDBY0";
};

&camera0 {
	qcom,mount-angle = <270>;
	gpios = <&tlmm 26 0>,
		<&tlmm 40 0>,
		<&tlmm 39 0>,
		<&tlmm 118 0>,
		<&tlmm 119 0>;
	qcom,gpio-vdig = <3>;
	qcom,gpio-vana = <4>;
	qcom,gpio-req-tbl-num = <0 1 2 3 4>;
	qcom,gpio-req-tbl-flags = <1 0 0 0 0>;
	qcom,gpio-req-tbl-label = "CAMIF_MCLK0",
			"CAM_RESET0",
			"CAM_STANDBY0",
			"CAM_VDIG",
			"CAM_VANA";
};

&camera1 {
	qcom,mount-angle = <270>;
};

&camera2{
	qcom,mount-angle = <270>;
};
