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