FP2-TBD: add s6d6fa1 lcd panel driver

FPIIM-923

Change-Id: Ia9504d43b0bc0b364ca25ee20a80c2c805c7e67d
diff --git a/dev/gcdb/display/include/panel_s6d6fa1_1080p_video.h b/dev/gcdb/display/include/panel_s6d6fa1_1080p_video.h
new file mode 100644
index 0000000..2c3f88d
--- /dev/null
+++ b/dev/gcdb/display/include/panel_s6d6fa1_1080p_video.h
@@ -0,0 +1,436 @@
+/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *  * Neither the name of The Linux Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*---------------------------------------------------------------------------
+ * 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"
+ *---------------------------------------------------------------------------*/
+
+#ifndef _PANEL_S6D6FA1_1080P_VIDEO_H_
+
+#define _PANEL_S6D6FA1_1080P_VIDEO_H_
+/*---------------------------------------------------------------------------*/
+/* HEADER files                                                              */
+/*---------------------------------------------------------------------------*/
+#include "panel.h"
+
+/*---------------------------------------------------------------------------*/
+/* Panel configuration                                                       */
+/*---------------------------------------------------------------------------*/
+
+static struct panel_config s6d6fa1_1080p_video_panel_data = {
+  "qcom,mdss_dsi_s6d6fa1_1080p_video", "dsi:0:", "qcom,mdss-dsi-panel",
+  10, 0, "DISPLAY_1", 0, 424000000, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/*---------------------------------------------------------------------------*/
+/* Panel resolution                                                          */
+/*---------------------------------------------------------------------------*/
+static struct panel_resolution s6d6fa1_1080p_video_panel_res = {
+  1080, 1920, 152, 54, 12, 0, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/*---------------------------------------------------------------------------*/
+/* Panel Color Information                                                   */
+/*---------------------------------------------------------------------------*/
+static struct color_info s6d6fa1_1080p_video_color = {
+  24, 0, 0xff, 0, 0, 0
+};
+
+/*---------------------------------------------------------------------------*/
+/* Panel Command information                                                 */
+/*---------------------------------------------------------------------------*/
+static char s6d6fa1_1080p_video_init_cmd0[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF0, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd1[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF1, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd2[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xFC, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd3[] = {
+0x08, 0x00, 0x29, 0xC0,
+0xF5, 0x10, 0x18, 0x00,
+0xD1, 0xA7, 0x11, 0x08,  };
+
+static char s6d6fa1_1080p_video_init_cmd4[] = {
+0x07, 0x00, 0x29, 0xC0,
+0xB3, 0x10, 0xF0, 0x00,
+0xBB, 0x04, 0x08, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd5[] = {
+0x07, 0x00, 0x29, 0xC0,
+0xB6, 0x29, 0x10, 0x2C,
+0x64, 0x64, 0x01, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd6[] = {
+0x0F, 0x00, 0x29, 0xC0,
+0xB7, 0x00, 0x00, 0x00,
+0x00, 0x00, 0xC0, 0x00,
+0x09, 0x03, 0xF5, 0x00,
+0x00, 0x00, 0x00, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd7[] = {
+0x1C, 0x00, 0x29, 0xC0,
+0xB8, 0x3B, 0x00, 0x18,
+0x18, 0x03, 0x21, 0x11,
+0x00, 0x83, 0xF4, 0xBB,
+0x00, 0x03, 0x1E, 0x21,
+0x00, 0xBE, 0xBB, 0x0B,
+0xE0, 0x70, 0xFF, 0xFF,
+0x00, 0x20, 0x00, 0x00,  };
+
+static char s6d6fa1_1080p_video_init_cmd8[] = {
+0x1C, 0x00, 0x29, 0xC0,
+0xB9, 0x1D, 0x00, 0x18,
+0x18, 0x03, 0x00, 0x11,
+0x00, 0x02, 0xF4, 0xBB,
+0x00, 0x03, 0x00, 0x00,
+0x11, 0x86, 0x83, 0x18,
+0x61, 0x20, 0xFF, 0xFF,
+0x00, 0x40, 0x00, 0x00,  };
+
+static char s6d6fa1_1080p_video_init_cmd9[] = {
+0x1C, 0x00, 0x29, 0xC0,
+0xBA, 0x3B, 0x00, 0x18,
+0x18, 0x03, 0x21, 0x11,
+0x00, 0x83, 0xF4, 0xBB,
+0x00, 0x03, 0x1E, 0x21,
+0x00, 0xBE, 0xBB, 0x0B,
+0xE0, 0x70, 0xFF, 0xFF,
+0x00, 0x20, 0x00, 0x00,  };
+
+static char s6d6fa1_1080p_video_init_cmd10[] = {
+0x1C, 0x00, 0x29, 0xC0,
+0xBB, 0x3B, 0x00, 0x18,
+0x18, 0x03, 0x21, 0x11,
+0x00, 0x83, 0xF4, 0xBB,
+0x00, 0x03, 0x1E, 0x21,
+0x00, 0xBE, 0xBB, 0x0B,
+0xE0, 0x70, 0xFF, 0xFF,
+0x00, 0x20, 0x00, 0x00,  };
+
+static char s6d6fa1_1080p_video_init_cmd11[] = {
+0x18, 0x00, 0x29, 0xC0,
+0xBC, 0x20, 0x80, 0x3C,
+0x19, 0x01, 0x02, 0x06,
+0x00, 0x00, 0x2D, 0x06,
+0x0F, 0x13, 0x0B, 0x1E,
+0x04, 0x02, 0x2A, 0x00,
+0x00, 0x02, 0x00, 0x99,  };
+
+static char s6d6fa1_1080p_video_init_cmd12[] = {
+0x15, 0x00, 0x29, 0xC0,
+0xBD, 0x01, 0x07, 0x07,
+0x07, 0x00, 0x00, 0x00,
+0x00, 0x05, 0x01, 0x00,
+0x00, 0x00, 0x40, 0x00,
+0x05, 0x2D, 0x05, 0x05,
+0x05, 0xFF, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd13[] = {
+0x2C, 0x00, 0x29, 0xC0,
+0xBE, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x02,
+0x0B, 0x0A, 0x0B, 0x07,
+0x0B, 0x04, 0x06, 0x02,
+0x01, 0x00, 0x09, 0x0B,
+0x0E, 0x0D, 0x0C, 0x11,
+0x10, 0x0F, 0x0B, 0x0B,
+0x0B, 0x0B, 0x12, 0x03,
+0x05, 0x02, 0x01, 0x00,
+0x08, 0x0B, 0x0E, 0x0D,
+0x0C, 0x11, 0x10, 0x0F,  };
+
+static char s6d6fa1_1080p_video_init_cmd14[] = {
+0x0F, 0x00, 0x29, 0xC0,
+0xBF, 0x00, 0x00, 0x00,
+0x00, 0x0C, 0xCC, 0xCC,
+0xCC, 0xCC, 0x0C, 0xC6,
+0xCC, 0xC7, 0xCC, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd15[] = {
+0x02, 0x00, 0x29, 0xC0,
+0xD0, 0x08, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd16[] = {
+0x02, 0x00, 0x29, 0xC0,
+0xE3, 0x22, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd17[] = {
+0x08, 0x00, 0x29, 0xC0,
+0xE8, 0x00, 0x03, 0x10,
+0x04, 0x02, 0x06, 0xD0,  };
+
+static char s6d6fa1_1080p_video_init_cmd18[] = {
+0x07, 0x00, 0x29, 0xC0,
+0xF2, 0x46, 0x43, 0x13,
+0x33, 0xC1, 0x16, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd19[] = {
+0x1C, 0x00, 0x29, 0xC0,
+0xF4, 0x50, 0x50, 0x70,
+0x14, 0x14, 0x14, 0x14,
+0x06, 0x16, 0x26, 0x00,
+0x6E, 0x1F, 0x14, 0x0E,
+0xC9, 0x02, 0x55, 0x35,
+0x54, 0xAA, 0x55, 0x05,
+0x04, 0x44, 0x48, 0x30,  };
+
+static char s6d6fa1_1080p_video_init_cmd20[] = {
+0x05, 0x00, 0x29, 0xC0,
+0xF7, 0x00, 0x00, 0x3F,
+0xFF, 0xFF, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd21[] = {
+0x53, 0x00, 0x29, 0xC0,
+0xFA, 0x05, 0x7C, 0x19,
+0x21, 0x2D, 0x39, 0x3F,
+0x45, 0x48, 0x48, 0x56,
+0x5B, 0x3C, 0x3D, 0x3D,
+0x46, 0x43, 0x3E, 0x41,
+0x3D, 0x3A, 0x3A, 0x23,
+0x23, 0x26, 0x2B, 0x1A,
+0x05, 0x7C, 0x19, 0x22,
+0x2E, 0x3A, 0x40, 0x45,
+0x48, 0x48, 0x56, 0x5B,
+0x3C, 0x3D, 0x3D, 0x46,
+0x44, 0x3F, 0x42, 0x3E,
+0x3B, 0x3B, 0x25, 0x24,
+0x27, 0x2C, 0x1A, 0x05,
+0x7C, 0x22, 0x2F, 0x39,
+0x43, 0x48, 0x4C, 0x4D,
+0x4C, 0x5A, 0x5E, 0x3E,
+0x3F, 0x3E, 0x46, 0x44,
+0x3E, 0x41, 0x3D, 0x3A,
+0x3A, 0x23, 0x22, 0x25,
+0x2B, 0x1A, 0x00, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd22[] = {
+0x52, 0x00, 0x29, 0xC0,
+0xFB, 0x05, 0x7C, 0x19,
+0x21, 0x2D, 0x39, 0x3F,
+0x45, 0x48, 0x48, 0x56,
+0x5B, 0x3C, 0x3D, 0x3D,
+0x46, 0x43, 0x3E, 0x41,
+0x3D, 0x3A, 0x3A, 0x23,
+0x23, 0x26, 0x2B, 0x1A,
+0x05, 0x7C, 0x19, 0x22,
+0x2E, 0x3A, 0x40, 0x45,
+0x48, 0x48, 0x56, 0x5B,
+0x3C, 0x3D, 0x3D, 0x46,
+0x44, 0x3F, 0x42, 0x3E,
+0x3B, 0x3B, 0x25, 0x24,
+0x27, 0x2C, 0x1A, 0x05,
+0x7C, 0x22, 0x2F, 0x39,
+0x43, 0x48, 0x4C, 0x4D,
+0x4C, 0x5A, 0x5E, 0x3E,
+0x3F, 0x3E, 0x46, 0x44,
+0x3E, 0x41, 0x3D, 0x3A,
+0x3A, 0x23, 0x22, 0x25,
+0x2B, 0x1A, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd23[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF0, 0xA5, 0xA5, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd24[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF1, 0xA5, 0xA5, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd25[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xFC, 0xA5, 0xA5, 0xFF,  };
+
+/* NVM write*/
+/*static char s6d6fa1_1080p_video_init_cmd26[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF0, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd27[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF1, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd28[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF0, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd29[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF1, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd30[] = {
+0x02, 0x00, 0x29, 0xC0,
+0xD0, 0x01, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd31[] = {
+0x02, 0x00, 0x29, 0xC0,
+0xD0, 0x00, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd32[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF0, 0x5A, 0x5A, 0xFF,  };
+
+static char s6d6fa1_1080p_video_init_cmd33[] = {
+0x03, 0x00, 0x29, 0xC0,
+0xF1, 0x5A, 0x5A, 0xFF,  };*/
+
+static char s6d6fa1_1080p_video_on_cmd0[] = {
+0x02, 0x00, 0x29, 0xC0,
+0x51, 0xFF, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_on_cmd1[] = {
+0x02, 0x00, 0x29, 0xC0,
+0x53, 0x2C, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_on_cmd2[] = {
+0x02, 0x00, 0x29, 0xC0,
+0x55, 0x00, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_on_cmd3[] = {
+0x02, 0x00, 0x29, 0xC0,
+0x35, 0x00, 0xFF, 0xFF,  };
+
+static char s6d6fa1_1080p_video_on_cmd4[] = {
+0x11, 0x00, 0x05, 0x80 };
+
+static char s6d6fa1_1080p_video_on_cmd5[] = {
+0x29, 0x00, 0x05, 0x80 };
+
+static struct mipi_dsi_cmd s6d6fa1_1080p_video_on_command[] = {
+{ 0x8 , s6d6fa1_1080p_video_init_cmd0 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd1 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd2 ,0x00},
+{ 0xc , s6d6fa1_1080p_video_init_cmd3 ,0x00},
+{ 0xc , s6d6fa1_1080p_video_init_cmd4 ,0x00},
+{ 0xc , s6d6fa1_1080p_video_init_cmd5 ,0x00},
+{ 0x14, s6d6fa1_1080p_video_init_cmd6 ,0x00},
+{ 0x20, s6d6fa1_1080p_video_init_cmd7 ,0x00},
+{ 0x20, s6d6fa1_1080p_video_init_cmd8 ,0x00},
+{ 0x20, s6d6fa1_1080p_video_init_cmd9 ,0x00},
+{ 0x20, s6d6fa1_1080p_video_init_cmd10 ,0x00},
+{ 0x1c, s6d6fa1_1080p_video_init_cmd11 ,0x00},
+{ 0x1c, s6d6fa1_1080p_video_init_cmd12 ,0x00},
+{ 0x30, s6d6fa1_1080p_video_init_cmd13 ,0x00},
+{ 0x14, s6d6fa1_1080p_video_init_cmd14 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd15 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd16 ,0x00},
+{ 0xc , s6d6fa1_1080p_video_init_cmd17 ,0x00},
+{ 0xc , s6d6fa1_1080p_video_init_cmd18 ,0x00},
+{ 0x20, s6d6fa1_1080p_video_init_cmd19 ,0x00},
+{ 0xc , s6d6fa1_1080p_video_init_cmd20 ,0x00},
+{ 0x58, s6d6fa1_1080p_video_init_cmd21 ,0x00},
+{ 0x58, s6d6fa1_1080p_video_init_cmd22 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd23 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd24 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_init_cmd25 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_on_cmd0 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_on_cmd1 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_on_cmd2 ,0x00},
+{ 0x8 , s6d6fa1_1080p_video_on_cmd3 ,0x00},
+{ 0x4 , s6d6fa1_1080p_video_on_cmd4 ,0x78},
+{ 0x4 , s6d6fa1_1080p_video_on_cmd5 ,0x00},
+};
+#define S6D6FA1_1080P_VIDEO_ON_COMMAND 32
+
+static char s6d6fa1_1080p_videooff_cmd0[] = {
+0x28, 0x00, 0x05, 0x80 };
+
+static char s6d6fa1_1080p_videooff_cmd1[] = {
+0x10, 0x00, 0x05, 0x80 };
+
+static struct mipi_dsi_cmd s6d6fa1_1080p_video_off_command[] = {
+{ 0x4 , s6d6fa1_1080p_videooff_cmd0 , 0x14},
+{ 0x4 , s6d6fa1_1080p_videooff_cmd1 , 0x50}
+};
+#define S6D6FA1_1080P_VIDEO_OFF_COMMAND 2
+
+
+static struct command_state s6d6fa1_1080p_video_state = {
+  0, 1
+};
+
+/*---------------------------------------------------------------------------*/
+/* Command mode panel information                                            */
+/*---------------------------------------------------------------------------*/
+
+static struct commandpanel_info s6d6fa1_1080p_video_command_panel = {
+  1, 1, 1, 0, 0, 0x2c, 0x3c, 0, 0, 1, 0, 0
+};
+
+/*---------------------------------------------------------------------------*/
+/* Video mode panel information                                              */
+/*---------------------------------------------------------------------------*/
+
+static struct videopanel_info s6d6fa1_1080p_video_video_panel = {
+  1, 0, 0, 0, 1, 1, 2, 0, 0x9
+};
+
+/*---------------------------------------------------------------------------*/
+/* Lane Configuration                                                        */
+/*---------------------------------------------------------------------------*/
+
+static struct lane_configuration s6d6fa1_1080p_video_lane_config = {
+  4, 0, 1, 1, 1, 1
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Panel Timing                                                              */
+/*---------------------------------------------------------------------------*/
+// 900Mbps
+const uint32_t s6d6fa1_1080p_video_timings[] = {
+  0xe6, 0x38, 0x26, 0x00, 0x68, 0x6e, 0x2a, 0x3c, 0x2c, 0x03, 0x04, 0x00
+};
+
+static struct panel_timing s6d6fa1_1080p_video_timing_info = {
+  0, 4, 0x03, 0x2b
+};
+
+static struct panel_reset_sequence s6d6fa1_1080p_video_panel_reset_seq = {
+{ 1, 0, 1, }, { 10, 10, 10 }, 2
+};
+
+/*---------------------------------------------------------------------------*/
+/* Backlight Settings                                                        */
+/*---------------------------------------------------------------------------*/
+
+static struct backlight s6d6fa1_1080p_video_backlight = {
+  1, 0, 255, 100, 2, "PMIC_8941"
+};
+
+
+#define S6D6FA1_1080P_VIDEO_SIGNATURE 0xFFFF
+
+#endif /*_PANEL_S6D6FA1_1080P_VIDEO_H_*/