/* 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_hx8399_truly_cmd: qcom,mdss_dsi_hx8399_truly_cmd {
		qcom,mdss-dsi-panel-name =
			"hx8399 video mode dsi truly panel";
		qcom,mdss-dsi-panel-type = "dsi_video_mode";

		qcom,mdss-dsi-virtual-channel-id = <0>;
		qcom,mdss-dsi-stream = <0>;
		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-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-t-clk-pre = <0x30>;
		qcom,mdss-dsi-t-clk-post = <0x0e>;
		qcom,mdss-dsi-dma-trigger = "trigger_sw";
		qcom,mdss-dsi-mdp-trigger = "none";
		qcom,mdss-dsi-lp11-init;
		qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
		qcom,mdss-dsi-bl-min-level = <1>;
		qcom,mdss-dsi-bl-max-level = <4095>;
		qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;

		qcom,mdss-dsi-display-timings {
			timing@0 {
				qcom,mdss-dsi-panel-width = <1080>;
				qcom,mdss-dsi-panel-height = <2160>;
				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-panel-framerate = <60>;
				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 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";
			};
		};
	};
};
