/* Copyright (c) 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.
 */

&mdss_mdp {
	dsi_hx8399c_hd_vid: qcom,mdss_dsi_hx8399c_hd_video{
		qcom,mdss-dsi-panel-name =
			"hx8399c video mode dsi hd panel";
		qcom,mdss-dsi-panel-type = "dsi_video_mode";
		qcom,mdss-dsi-panel-framerate = <60>;
		qcom,mdss-dsi-virtual-channel-id = <0>;
		qcom,mdss-dsi-stream = <0>;
		qcom,mdss-dsi-panel-width = <720>;
		qcom,mdss-dsi-panel-height = <1440>;
		qcom,mdss-dsi-h-front-porch = <24>;
		qcom,mdss-dsi-h-back-porch = <24>;
		qcom,mdss-dsi-h-pulse-width = <16>;
		qcom,mdss-dsi-h-sync-skew = <0>;
		qcom,mdss-dsi-v-back-porch = <40>;
		qcom,mdss-dsi-v-front-porch = <36>;
		qcom,mdss-dsi-v-pulse-width = <2>;
		qcom,mdss-dsi-h-left-border = <0>;
		qcom,mdss-dsi-h-right-border = <0>;
		qcom,mdss-dsi-v-top-border = <0>;
		qcom,mdss-dsi-v-bottom-border = <0>;
		qcom,mdss-dsi-bpp = <24>;
		qcom,mdss-dsi-color-order = "rgb_swap_rgb";
		qcom,mdss-dsi-underflow-color = <0xff>;
		qcom,mdss-dsi-border-color = <0>;
		qcom,mdss-dsi-on-command = [
			39 01 00 00 00 00 04
				b9 ff 83 99
			39 01 00 00 00 00 02
				d2 88
			39 01 00 00 00 00 10
				b1 02 04 74 94 01 32 33
				11 11 e6 5d 56 73 02 02
			39 01 00 00 00 00 10
				b2 00 80 80 cc 05 07 5a
				11 10 10 00 1e 70 03 D4
			39 01 00 00 00 00 2d
				b4 00 ff 59 59 0c ac 00
				00 0c 00 07 0a 00 28 07
				08 0c 21 03 00 00 00 ae
				87 59 59 0c ac 00 00 0c
				00 07 0a 00 28 07 08 0c
				01 00 00 ae 01
			39 01 00 00 05 00 22
				d3 00 00 01 01 00 00 10
				10 00 00 03 00 03 00 08
				78 08 78 00 00 00 00 00
				24 02 05 05 03 00 00 00
				05 40
			39 01 00 00 05 00 21
				d5 20 20 19 19 18 18 02
				03 00 01 24 24 18 18 18
				18 24 24 00 00 00 00 00
				00 00 00 2f 2f 30 30 31
				31
			39 01 00 00 05 00 21
				d6 24 24 18 18 19 19 01
				00 03 02 24 24 18 18 18
				18 20 20 40 40 40 40 40
				40 40 40 2f 2f 30 30 31
				31
			39 01 00 00 00 00 02
				bd 00
			39 01 00 00 00 00 11
				d8 aa aa aa aa aa aa aa
				aa aa ba aa aa aa ba aa
				aa
			39 01 00 00 00 00 02
				bd 01
			39 01 00 00 00 00 11
				d8 82 ea aa aa 82 ea aa
				aa 82 ea aa aa 82 ea aa
				aa
			39 01 00 00 00 00 02
				bd 02
			39 01 00 00 00 00 09
				d8 ff ff c0 3f ff ff c0
				3f
			39 01 00 00 00 00 02
				bd 00
			39 01 00 00 00 00 02
				dd 03
			39 01 00 00 05 00 37
				e0 08 2a 39 35 74 7c 87
				7f 84 8a 8e 91 93 96 9b
				9c 9e a5 a6 ae a1 af b2
				5c 58 63 74 08 2a 39 35
				74 7c 87 7f 84 8a 8e 91
				93 96 9b 9c 9e a5 a6 ae
				a1 af b2 5c 58 63 74
			39 01 00 00 00 00 03
				b6 7e 7e
			39 01 00 00 00 00 02
				cc 08
			39 01 00 00 00 00 06
				c7 00 08 00 01 08
			39 01 00 00 00 00 03
				c0 25 5a
			05 01 00 00 78 00 02 11 00
			05 01 00 00 14 00 02 29 00];
		qcom,mdss-dsi-off-command = [
			05 01 00 00 14 00 02 28 00
			05 01 00 00 78 00 02 10 00];
		qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
		qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
		qcom,mdss-dsi-h-sync-pulse = <0>;
		qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
		qcom,mdss-dsi-lane-map = "lane_map_0123";
		qcom,mdss-dsi-bllp-eof-power-mode;
		qcom,mdss-dsi-bllp-power-mode;
		qcom,mdss-dsi-tx-eot-append;
		qcom,mdss-dsi-lane-0-state;
		qcom,mdss-dsi-lane-1-state;
		qcom,mdss-dsi-lane-2-state;
		qcom,mdss-dsi-lane-3-state;
		qcom,mdss-dsi-panel-timings =
			[7a 1a 12 00 3e 42 16 1e 14 03 04 00];
		qcom,mdss-dsi-t-clk-post = <0x0a>;
		qcom,mdss-dsi-t-clk-pre = <0x1d>;
		qcom,mdss-dsi-dma-trigger = "trigger_sw";
		qcom,mdss-dsi-mdp-trigger = "none";
		qcom,mdss-dsi-lp11-init;
		qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;
	};
};
