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

#ifndef _PANEL_TRULY_1080P_VIDEO_H_

#define _PANEL_TRULY_1080P_VIDEO_H_
/*---------------------------------------------------------------------------*/
/* HEADER files                                                              */
/*---------------------------------------------------------------------------*/
#include "panel.h"

/*---------------------------------------------------------------------------*/
/* Panel configuration                                                       */
/*---------------------------------------------------------------------------*/

static struct panel_config truly_1080p_video_panel_data = {
  "qcom,mdss_dsi_truly_1080p_video", "dsi:0:", "qcom,mdss-dsi-panel",
  10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, NULL
};

/*---------------------------------------------------------------------------*/
/* Panel resolution                                                          */
/*---------------------------------------------------------------------------*/
static struct panel_resolution truly_1080p_video_panel_res = {
  1080, 1920, 96, 64, 16, 0, 4, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

/*---------------------------------------------------------------------------*/
/* Panel Color Information                                                   */
/*---------------------------------------------------------------------------*/
static struct color_info truly_1080p_video_color = {
  24, 0, 0xff, 0, 0, 0
};

/*---------------------------------------------------------------------------*/
/* Panel Command information                                                 */
/*---------------------------------------------------------------------------*/
static char truly_1080p_video_on_cmd0[] = {
0x35, 0x00, 0x015, 0x80, };


static char truly_1080p_video_on_cmd1[] = {
0x51, 0xff, 0x15, 0x80, };


static char truly_1080p_video_on_cmd2[] = {
0x53, 0x2c, 0x15, 0x80, };


static char truly_1080p_video_on_cmd3[] = {
0x55, 0x00, 0x15, 0x80, };


static char truly_1080p_video_on_cmd4[] = {
0x11, 0x00, 0x05, 0x80, };


static char truly_1080p_video_on_cmd5[] = {
0xb0, 0x00, 0x23, 0x80, };


static char truly_1080p_video_on_cmd6[] = {
0x07, 0x00, 0x29, 0xC0,
0xb3, 0x14, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, };


static char truly_1080p_video_on_cmd7[] = {
0x03, 0x00, 0x29, 0xC0,
0xb6, 0x3a, 0xd3, 0xFF, };


static char truly_1080p_video_on_cmd8[] = {
0x03, 0x00, 0x29, 0xc0,
0xc0, 0x00, 0x00, 0xff, };


static char truly_1080p_video_on_cmd9[] = {
0x23, 0x00, 0x29, 0xC0,
0xc1, 0x84, 0x60, 0x10,
0xeb, 0xff, 0x6f, 0xce,
0xff, 0xff, 0x17, 0x02,
0x58, 0x73, 0xae, 0xb1,
0x20, 0xc6, 0xff, 0xff,
0x1f, 0xf3, 0xff, 0x5f,
0x10, 0x10, 0x10, 0x10,
0x00, 0x02, 0x01, 0x22,
0x22, 0x00, 0x01, 0xff, };


static char truly_1080p_video_on_cmd10[] = {
0x08, 0x00, 0x29, 0xC0,
0xc2, 0x31, 0xf7, 0x80,
0x06, 0x08, 0x00, 0x00, };


static char truly_1080p_video_on_cmd11[] = {
0x17, 0x00, 0x29, 0xC0,
0xc4, 0x70, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00,
0x00, 0x00, 0x0c, 0x06,
0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x00, 0x00,
0x00, 0x0c, 0x06, 0xff, };


static char truly_1080p_video_on_cmd12[] = {
0x29, 0x00, 0x29, 0xC0,
0xc6, 0x00, 0x69, 0x00,
0x69, 0x00, 0x69, 0x00,
0x00, 0x00, 0x00, 0x00,
0x69, 0x00, 0x69, 0x00,
0x69, 0x10, 0x19, 0x07,
0x00, 0x01, 0x00, 0x69,
0x00, 0x69, 0x00, 0x69,
0x00, 0x00, 0x00, 0x00,
0x00, 0x69, 0x00, 0x69,
0x00, 0x69, 0x10, 0x19,
0x07, 0xff, 0xff, 0xff, };


static char truly_1080p_video_on_cmd13[] = {
0x0a, 0x00, 0x29, 0xC0,
0xcb, 0x31, 0xfc, 0x3f,
0x8c, 0x00, 0x00, 0x00,
0x00, 0xc0, 0xff, 0xff, };


static char truly_1080p_video_on_cmd14[] = {
0xcc, 0x0b, 0x23, 0x80, };


static char truly_1080p_video_on_cmd15[] = {
0x0b, 0x00, 0x29, 0xc0,
0xd0, 0x11, 0x81, 0xbb,
0x1e, 0x1e, 0x4c, 0x19,
0x19, 0x0c, 0x00, 0xff, };


static char truly_1080p_video_on_cmd16[] = {
0x1a, 0x00, 0x29, 0xC0,
0xd3, 0x1b, 0x33, 0xbb,
0xbb, 0xb3, 0x33, 0x33,
0x33, 0x00, 0x01, 0x00,
0xa0, 0xd8, 0xa0, 0x0d,
0x4e, 0x4e, 0x33, 0x3b,
0x22, 0x72, 0x07, 0x3d,
0xbf, 0x33, 0xff, 0xff, };


static char truly_1080p_video_on_cmd17[] = {
0x08, 0x00, 0x29, 0xc0,
0xd5, 0x06, 0x00, 0x00,
0x01, 0x51, 0x01, 0x32, };


static char truly_1080p_video_on_cmd18[] = {
0x1f, 0x00, 0x29, 0xC0,
0xc7, 0x01, 0x0a, 0x11,
0x18, 0x26, 0x33, 0x3e,
0x50, 0x38, 0x42, 0x52,
0x60, 0x67, 0x6e, 0x77,
0x01, 0x0a, 0x11, 0x18,
0x26, 0x33, 0x3e, 0x50,
0x38, 0x42, 0x52, 0x60,
0x67, 0x6e, 0x77, 0xff, };


static char truly_1080p_video_on_cmd19[] = {
0x14, 0x00, 0x29, 0xC0,
0xc8, 0x01, 0x00, 0x00,
0x00, 0x00, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00,
0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0x00, };


static char truly_1080p_video_on_cmd20[] = {
0x29, 0x00, 0x05, 0x80, };


static struct mipi_dsi_cmd truly_1080p_video_on_command[] = {
{ 0x4 , truly_1080p_video_on_cmd0, 0x00},
{ 0x4 , truly_1080p_video_on_cmd1, 0x00},
{ 0x4 , truly_1080p_video_on_cmd2, 0x00},
{ 0x4 , truly_1080p_video_on_cmd3, 0x00},
{ 0x4 , truly_1080p_video_on_cmd4, 0xc8},
{ 0x4 , truly_1080p_video_on_cmd5, 0x00},
{ 0xc , truly_1080p_video_on_cmd6, 0x00},
{ 0x8 , truly_1080p_video_on_cmd7, 0x00},
{ 0x8 , truly_1080p_video_on_cmd8, 0x00},
{ 0x28 , truly_1080p_video_on_cmd9, 0x00},
{ 0xc , truly_1080p_video_on_cmd10, 0x00},
{ 0x1c , truly_1080p_video_on_cmd11, 0x00},
{ 0x30 , truly_1080p_video_on_cmd12, 0x00},
{ 0x10 , truly_1080p_video_on_cmd13, 0x00},
{ 0x4 , truly_1080p_video_on_cmd14, 0x00},
{ 0x10 , truly_1080p_video_on_cmd15, 0x00},
{ 0x20 , truly_1080p_video_on_cmd16, 0x00},
{ 0xc , truly_1080p_video_on_cmd17, 0x00},
{ 0x24 , truly_1080p_video_on_cmd18, 0x00},
{ 0x18 , truly_1080p_video_on_cmd19, 0xc8},
{ 0x4 , truly_1080p_video_on_cmd20, 0xc8},
};
#define TRULY_1080P_VIDEO_ON_COMMAND 21


static char truly_1080p_video_off_cmd0[] = {
0x28, 0x00, 0x05, 0x80 };


static char truly_1080p_video_off_cmd1[] = {
0x10, 0x00, 0x05, 0x80 };


static struct mipi_dsi_cmd truly_1080p_video_off_command[] = {
{ 0x4 , truly_1080p_video_off_cmd0, 0x0},
{ 0x4 , truly_1080p_video_off_cmd1, 0x0}
};
#define TRULY_1080P_VIDEO_OFF_COMMAND 2


static struct command_state truly_1080p_video_state = {
  0, 1
};

/*---------------------------------------------------------------------------*/
/* Command mode panel information                                            */
/*---------------------------------------------------------------------------*/

static struct commandpanel_info truly_1080p_video_command_panel = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

/*---------------------------------------------------------------------------*/
/* Video mode panel information                                              */
/*---------------------------------------------------------------------------*/

static struct videopanel_info truly_1080p_video_video_panel = {
  0, 0, 0, 0, 1, 1, 1, 0, 0x9
};

/*---------------------------------------------------------------------------*/
/* Lane Configuration                                                        */
/*---------------------------------------------------------------------------*/

static struct lane_configuration truly_1080p_video_lane_config = {
  4, 0, 1, 1, 1, 1, 0
};


/*---------------------------------------------------------------------------*/
/* Panel Timing                                                              */
/*---------------------------------------------------------------------------*/
const uint32_t truly_1080p_video_timings[] = {
  0xE6, 0x38, 0x26, 0x00, 0x68, 0x6e, 0x2A, 0x3c, 0x44, 0x03, 0x04, 0x00
};

static const uint32_t truly_1080p_video_12nm_timings[] = {
  0x17, 0x0A, 0x0F, 0x06, 0x02, 0x08, 0x06, 0x0E
};

static const uint32_t truly_1080p_14nm_video_timings[] = {
	0x23, 0x1e, 0x8, 0x9, 0x5, 0x3, 0x4, 0xa0,
	0x23, 0x1e, 0x8, 0x9, 0x5, 0x3, 0x4, 0xa0,
	0x23, 0x1e, 0x8, 0x9, 0x5, 0x3, 0x4, 0xa0,
	0x23, 0x1e, 0x8, 0x9, 0x5, 0x3, 0x4, 0xa0,
	0x23, 0x1a, 0x8, 0x9, 0x5, 0x3, 0x4, 0xa0,
};

static struct panel_timing truly_1080p_video_timing_info = {
  0, 4, 0x02, 0x2d
};

struct labibb_desc truly_1080p_video_labibb = {
  0, 0, 5700000, 5700000, 5700000, 5700000, 3, 3, 1, 0
};

static struct panel_reset_sequence truly_1080p_video_panel_reset_seq = {
{ 1, 0, 1, }, { 200, 200, 200, }, 2
};

/*---------------------------------------------------------------------------*/
/* Dynamic fps supported frequencies by panel                                */
/*---------------------------------------------------------------------------*/
static const struct dfps_panel_info truly_1080p_video_dfps = {
	1, 13, {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60}
};

/*---------------------------------------------------------------------------*/
/* Backlight Settings                                                        */
/*---------------------------------------------------------------------------*/

static struct backlight truly_1080p_video_backlight = {
  1, 1, 4095, 100, 1, "PMIC_8941"
};

#define TRULY_1080P_VIDEO_SIGNATURE 0xFFFF

#endif /*_TRULY_1080P_VIDEO_H_*/
