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

/*---------------------------------------------------------------------------
 * This file is autogenerated file using gcdb parser. Please do not edit it.
 * Update input XML file to add a new entry or update variable in this file
 * VERSION = "1.0"
 *---------------------------------------------------------------------------*/
&mdss_mdp {
	dsi_otm8018b_fwvga_vid: qcom,mdss_dsi_otm8018b_fwvga_video {
		qcom,mdss-dsi-panel-name = "OTM8018b fwvga video mode dsi panel";
		qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
		qcom,mdss-dsi-panel-type = "dsi_video_mode";
		qcom,mdss-dsi-panel-destination = "display_1";
		qcom,mdss-dsi-panel-framerate = <60>;
		qcom,mdss-dsi-virtual-channel-id = <0>;
		qcom,mdss-dsi-stream = <0>;
		qcom,mdss-dsi-panel-width = <480>;
		qcom,mdss-dsi-panel-height = <854>;
		qcom,mdss-dsi-h-front-porch = <80>;
		qcom,mdss-dsi-h-back-porch = <54>;
		qcom,mdss-dsi-h-pulse-width = <8>;
		qcom,mdss-dsi-h-sync-skew = <0>;
		qcom,mdss-dsi-v-back-porch = <16>;
		qcom,mdss-dsi-v-front-porch = <12>;
		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-underflow-color = <0xff>;
		qcom,mdss-dsi-border-color = <0>;
		qcom,mdss-dsi-on-command = [
					29 01 00 00 00 00 02
						00 00
					29 01 00 00 00 00 04
						ff 80 09 01
					29 01 00 00 00 00 02
						00 80
					29 01 00 00 00 00 03
						ff 80 09
					29 01 00 00 00 00 02
						00 80
					29 01 00 00 00 00 02
						d6 48
					29 01 00 00 00 00 02
						00 03
					29 01 00 00 00 00 02
						ff 01
					29 01 00 00 00 00 02
						00 B4
					29 01 00 00 00 00 02
						C0 10
					29 01 00 00 00 00 02
						00 82
					29 01 00 00 00 00 02
						C5 A3
					29 01 00 00 00 00 02
						00 90
					29 01 00 00 00 00 03
						C5 96 87
					29 01 00 00 00 00 02
						00 00
					29 01 00 00 00 00 03
						D8 74 72
					29 01 00 00 00 00 02
						00 00
					29 01 00 00 00 00 02
						D9 56
					29 01 00 00 00 00 02
						00 00
					29 01 00 00 00 00 11
						E1 00 06 0A
						07 03 16 08
						0A 04 06 07
						08 0F 23 22
						05
					29 01 00 00 00 00 02
						00 00
					29 01 00 00 00 00 11
						E2 00 06 0A
						07 03 16 08
						0A 04 06 07
						08 0F 23 22
						05
					29 01 00 00 00 00 02
						00 81
					29 01 00 00 00 00 02
						C1 77
					29 01 00 00 00 00 02
						00 A0
					29 01 00 00 00 00 02
						C1 EA
					29 01 00 00 00 00 02
						00 A1
					29 01 00 00 00 00 02
						C1 08
					29 01 00 00 00 00 02
						00 89
					29 01 00 00 00 00 02
						C4 08
					29 01 00 00 00 00 02
						00 81
					29 01 00 00 00 00 02
						C4 83
					29 01 00 00 00 00 02
						00 92
					29 01 00 00 00 00 02
						C5 01
					29 01 00 00 00 00 02
						00 B1
					29 01 00 00 00 00 02
						C5 A9
					29 01 00 00 00 00 02
						00 92
					29 01 00 00 00 00 02
						B3 45
					29 01 00 00 00 00 02
						00 90
					29 01 00 00 00 00 02
						B3 02
					29 01 00 00 00 00 02
						00 80
					29 01 00 00 00 00 06
						C0 00 58 00
						14 16
					29 01 00 00 00 00 02
						00 80
					29 01 00 00 00 00 02
						C4 30
					29 01 00 00 00 00 02
						00 90
					29 01 00 00 00 00 07
						C0 00 44 00
						00 00 03
					29 01 00 00 00 00 02
						00 A6
					29 01 00 00 00 00 04
						C1 01 00 00
					29 01 00 00 00 00 02
						00 80
					29 01 00 00 00 00 0D
						CE 87 03 00
						85 03 00 86
						03 00 84 03
						00
					29 01 00 00 00 00 02
						00 A0
					29 01 00 00 00 00 0f
						CE 38 03 03
						58 00 00 00
						38 02 03 59
						00 00 00
					29 01 00 00 00 00 02
						00 B0
					29 01 00 00 00 00 0f
						CE 38 01 03
						5A 00 00 00
						38 00 03 5B
						00 00 00
					29 01 00 00 00 00 02
						00 C0
					29 01 00 00 00 00 0f
						CE 30 00 03
						5C 00 00 00
						30 01 03 5D
						00 00 00
					29 01 00 00 00 00 02
						00 D0
					29 01 00 00 00 00 0f
						CE 30 02 03
						5E 00 00 00
						30 03 03 5F
						00 00 00
					29 01 00 00 00 00 02
						00 C7
					29 01 00 00 00 00 02
						CF 00
					29 01 00 00 00 00 02
						00 C9
					29 01 00 00 00 00 02
						CF 00
					29 01 00 00 00 00 02
						00 D0
					29 01 00 00 00 00 02
						CF 00
					29 01 00 00 00 00 02
						00 C4
					29 01 00 00 00 00 07
						CB 04 04 04
						04 04 04
					29 01 00 00 00 00 02
						00 D9
					29 01 00 00 00 00 07
						CB 04 04 04
						04 04 04
					29 01 00 00 00 00 02
						00 84
					29 01 00 00 00 00 07
						CC 0C 0A 10
						0E 03 04
					29 01 00 00 00 00 02
						00 9E
					29 01 00 00 00 00 02
						CC 0B
					29 01 00 00 00 00 02
						00 A0
					29 01 00 00 00 00 06
						CC 09 0F 0D
						01 02
					29 01 00 00 00 00 02
						00 B4
					29 01 00 00 00 00 07
						CC 0D 0F 09
						0B 02 01
					29 01 00 00 00 00 02
						00 CE
					29 01 00 00 00 00 02
						CC 0E
					29 01 00 00 00 00 02
						00 D0
					29 01 00 00 00 00 06
						CC 10 0A 0C
						04 03
					29 01 00 00 00 00 02
						00 00
					29 01 00 00 00 00 04
						ff ff ff ff
					05 01 00 00 78 00 02
						11 00
					05 01 00 00 32 00 02
						29 00
					];
		qcom,mdss-dsi-off-command = [05 01 00 00 32 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_lp_mode";
		qcom,mdss-dsi-h-sync-pulse = <0>;
		qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";
		qcom,mdss-dsi-lane-map = "lane_map_3012";
		qcom,mdss-dsi-bllp-eof-power-mode;
		qcom,mdss-dsi-bllp-power-mode;
		qcom,mdss-dsi-lane-0-state;
		qcom,mdss-dsi-lane-1-state;
		qcom,mdss-dsi-panel-timings = [8B 1F 14 00 45 4A 19 23 23 03 04 00];
		qcom,mdss-dsi-t-clk-post = <0x04>;
		qcom,mdss-dsi-t-clk-pre = <0x1b>;
		qcom,mdss-dsi-bl-min-level = <26>;
		qcom,mdss-dsi-bl-max-level = <255>;
		qcom,mdss-dsi-dma-trigger = "trigger_sw";
		qcom,mdss-dsi-mdp-trigger = "none";
		qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
		qcom,mdss-dsi-reset-sequence = <1 20>, <0 2>, <1 20>;

	};
};
