/* 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.
 */

&soc  {
	qcom,dsi_v2_otm8018b_fwvga_video {
		compatible = "qcom,dsi-panel-v2";
		label = "OTM8018B FWVGA video mode dsi panel";
		qcom,dsi-ctrl-phandle = <&mdss_dsi0>;
		qcom,rst-gpio = <&msmgpio 41 0>;
		vdda-supply = <&pm8110_l19>;
		vddio-supply=<&pm8110_l14>;
		qcom,mdss-pan-res = <480 854>;
		qcom,mdss-pan-bpp = <24>;
		qcom,mdss-pan-dest = "display_1";
		qcom,mdss-pan-porch-values = <54 8 80 16 2 12>;
		qcom,mdss-pan-underflow-clr = <0xff>;
		qcom,mdss-pan-bl-levels = <1 255>;
		qcom,mdss-pan-bl-ctrl = "bl_ctrl_wled";
		qcom,mdss-pan-dsi-mode = <0>;
		qcom,mdss-pan-dsi-h-pulse-mode = <0>;
		qcom,mdss-pan-dsi-h-power-stop = <0 0 0>;
		qcom,mdss-pan-dsi-bllp-power-stop = <1 1>;
		qcom,mdss-pan-dsi-traffic-mode = <1>;
		qcom,mdss-pan-dsi-dst-format = <3>;
		qcom,mdss-pan-dsi-vc = <0>;
		qcom,mdss-pan-dsi-rgb-swap = <0>;
		qcom,mdss-pan-dsi-data-lanes = <1 1 0 0>;
		qcom,mdss-pan-dsi-dlane-swap = <1>;
		qcom,mdss-pan-dsi-t-clk = <0x1b 0x04>;
		qcom,mdss-pan-dsi-stream = <0>;
		qcom,mdss-pan-dsi-mdp-tr = <0x0>;/*todo*/
		qcom,mdss-pan-dsi-dma-tr = <0x04>;
		qcom,mdss-pan-dsi-frame-rate = <60>;
		qcom,panel-phy-regulatorSettings =[02 08 05 00 20 03];
		qcom,panel-phy-timingSettings = [8B 1F 14  00 45 4A
						 19 23 23  03 04 00];
		qcom,panel-phy-strengthCtrl = [ff 06];
		qcom,panel-phy-bistCtrl = [03 03 00 00 0f 00];
		qcom,panel-phy-laneConfig =
					[80 45 00 00 01 66 /*lane0**/
					80 45 00 00 01 66 /*lane1*/
					80 45 00 00 01 66 /*lane2*/
					80 45 00 00 01 66 /*lane3*/
					40 67 00 00 01 88]; /*Clk*/

		qcom,on-cmds-dsi-state = "DSI_LP_MODE";
		qcom,panel-on-cmds = [
					29 01 00 00 00 02
						00 00
					29 01 00 00 00 04
						ff 80 09 01
					29 01 00 00 00 02
						00 80
					29 01 00 00 00 03
						ff 80 09
					29 01 00 00 00 02
						00 80
					29 01 00 00 00 02
						d6 48
					29 01 00 00 00 02
						00 03
					29 01 00 00 00 02
						ff 01
					29 01 00 00 00 02
						00 B4
					29 01 00 00 00 02
						C0 10
					29 01 00 00 00 02
						00 82
					29 01 00 00 00 02
						C5 A3
					29 01 00 00 00 02
						00 90
					29 01 00 00 00 03
						C5 96 87
					29 01 00 00 00 02
						00 00
					29 01 00 00 00 03
						D8 74 72
					29 01 00 00 00 02
						00 00
					29 01 00 00 00 02
						D9 56
					29 01 00 00 00 02
						00 00
					29 01 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 02
						00 00
					29 01 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 02
						00 81
					29 01 00 00 00 02
						C1 77
					29 01 00 00 00 02
						00 A0
					29 01 00 00 00 02
						C1 EA
					29 01 00 00 00 02
						00 A1
					29 01 00 00 00 02
						C1 08
					29 01 00 00 00 02
						00 89
					29 01 00 00 00 02
						C4 08
					29 01 00 00 00 02
						00 81
					29 01 00 00 00 02
						C4 83
					29 01 00 00 00 02
						00 92
					29 01 00 00 00 02
						C5 01
					29 01 00 00 00 02
						00 B1
					29 01 00 00 00 02
						C5 A9
					29 01 00 00 00 02
						00 92
					29 01 00 00 00 02
						B3 45
					29 01 00 00 00 02
						00 90
					29 01 00 00 00 02
						B3 02
					29 01 00 00 00 02
						00 80
					29 01 00 00 00 06
						C0 00 58 00
						14 16
					29 01 00 00 00 02
						00 80
					29 01 00 00 00 02
						C4 30
					29 01 00 00 00 02
						00 90
					29 01 00 00 00 07
						C0 00 44 00
						00 00 03
					29 01 00 00 00 02
						00 A6
					29 01 00 00 00 04
						C1 01 00 00
					29 01 00 00 00 02
						00 80
					29 01 00 00 00 0D
						CE 87 03 00
						85 03 00 86
						03 00 84 03
						00
					29 01 00 00 00 02
						00 A0
					29 01 00 00 00 0f
						CE 38 03 03
						58 00 00 00
						38 02 03 59
						00 00 00
					29 01 00 00 00 02
						00 B0
					29 01 00 00 00 0f
						CE 38 01 03
						5A 00 00 00
						38 00 03 5B
						00 00 00
					29 01 00 00 00 02
						00 C0
					29 01 00 00 00 0f
						CE 30 00 03
						5C 00 00 00
						30 01 03 5D
						00 00 00
					29 01 00 00 00 02
						00 D0
					29 01 00 00 00 0f
						CE 30 02 03
						5E 00 00 00
						30 03 03 5F
						00 00 00
					29 01 00 00 00 02
						00 C7
					29 01 00 00 00 02
						CF 00
					29 01 00 00 00 02
						00 C9
					29 01 00 00 00 02
						CF 00
					29 01 00 00 00 02
						00 D0
					29 01 00 00 00 02
						CF 00
					29 01 00 00 00 02
						00 C4
					29 01 00 00 00 07
						CB 04 04 04
						04 04 04
					29 01 00 00 00 02
						00 D9
					29 01 00 00 00 07
						CB 04 04 04
						04 04 04
					29 01 00 00 00 02
						00 84
					29 01 00 00 00 07
						CC 0C 0A 10
						0E 03 04
					29 01 00 00 00 02
						00 9E
					29 01 00 00 00 02
						CC 0B
					29 01 00 00 00 02
						00 A0
					29 01 00 00 00 06
						CC 09 0F 0D
						01 02
					29 01 00 00 00 02
						00 B4
					29 01 00 00 00 07
						CC 0D 0F 09
						0B 02 01
					29 01 00 00 00 02
						00 CE
					29 01 00 00 00 02
						CC 0E
					29 01 00 00 00 02
						00 D0
					29 01 00 00 00 06
						CC 10 0A 0C
						04 03
					29 01 00 00 00 02
						00 00
					29 01 00 00 00 04
						ff ff ff ff
					05 01 00 00 78 02
						11 00
					05 01 00 00 32 02
						29 00
					];
		qcom,panel-off-cmds = [05 01 00 00 32 02 28 00
					05 01 00 00 78 02 10 00];
		qcom,off-cmds-dsi-state = "DSI_LP_MODE";
	};
};
