/* Copyright (c) 2015-2017, 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 "dsi-panel-sim-video.dtsi"
#include "dsi-panel-sim-dualmipi-video.dtsi"
#include "dsi-panel-sim-cmd.dtsi"
#include "dsi-panel-sim-dualmipi-cmd.dtsi"
#include "dsi-panel-truly-1080p-video.dtsi"
#include "dsi-panel-truly-1080p-cmd.dtsi"
#include "dsi-adv7533-1080p.dtsi"
#include "dsi-adv7533-720p.dtsi"
#include "dsi-panel-r69006-1080p-video.dtsi"
#include "dsi-panel-r69006-1080p-cmd.dtsi"
#include "dsi-panel-truly-wuxga-video.dtsi"
#include "dsi-panel-lt8912-480p-video.dtsi"
#include "dsi-panel-lt8912-1080p-video.dtsi"

&soc {
	dsi_panel_pwr_supply: dsi_panel_pwr_supply {
		#address-cells = <1>;
		#size-cells = <0>;

		qcom,panel-supply-entry@0 {
			reg = <0>;
			qcom,supply-name = "vdd";
			qcom,supply-min-voltage = <2850000>;
			qcom,supply-max-voltage = <2850000>;
			qcom,supply-enable-load = <100000>;
			qcom,supply-disable-load = <100>;
		};

		qcom,panel-supply-entry@1 {
			reg = <1>;
			qcom,supply-name = "vddio";
			qcom,supply-min-voltage = <1800000>;
			qcom,supply-max-voltage = <1800000>;
			qcom,supply-enable-load = <100000>;
			qcom,supply-disable-load = <100>;
		};
	};
};

&dsi_truly_1080_vid {
	qcom,mdss-dsi-panel-timings-phy-v2 = [23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1a 08 09 05 03 04 a0];
};

&dsi_truly_1080_cmd {
	qcom,mdss-dsi-panel-timings-phy-v2 = [23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1a 08 09 05 03 04 a0];
};

&dsi_r69006_1080p_video {
	qcom,mdss-dsi-panel-timings-phy-v2 = [24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1b 08 09 05 03 04 a0];
};

&dsi_r69006_1080p_cmd{
	qcom,mdss-dsi-panel-timings-phy-v2 = [24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1b 08 09 05 03 04 a0];
};

&dsi_adv7533_1080p {
	qcom,mdss-dsi-panel-timings-phy-v2 = [24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1b 08 09 05 03 04 a0];
};

&dsi_adv7533_720p {
	qcom,mdss-dsi-panel-timings-phy-v2 = [1e 1b 04 06 02 03 04 a0
		1e 1b 04 06 02 03 04 a0
		1e 1b 04 06 02 03 04 a0
		1e 1b 04 06 02 03 04 a0
		1e 0e 04 05 02 03 04 a0];
};

&dsi_truly_wuxga_vid {
	qcom,mdss-dsi-panel-timings-phy-v2 = [24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1f 08 09 05 03 04 a0
		24 1c 08 09 05 03 04 a0];
};
