/* Copyright (c) 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_HX8399C_FHD_PLUSE_VIDEO_H_

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

/*---------------------------------------------------------------------------*/
/* Panel configuration                                                       */
/*---------------------------------------------------------------------------*/
static struct panel_config hx8399c_fhd_pluse_video_panel_data = {
	"qcom,mdss_dsi_hx8399c_truly_video", "dsi:0:", "qcom,mdss-dsi-panel",
	10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
};

/*---------------------------------------------------------------------------*/
/* Panel resolution                                                          */
/*---------------------------------------------------------------------------*/
static struct panel_resolution hx8399c_fhd_pluse_video_panel_res = {
	1080, 2160, 42, 42, 10, 0, 10, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

/*---------------------------------------------------------------------------*/
/* Panel color information                                                   */
/*---------------------------------------------------------------------------*/
static struct color_info hx8399c_fhd_pluse_video_color = {
	24, 0, 0xff, 0, 0, 0
};

/*---------------------------------------------------------------------------*/
/* Panel on/off command information                                          */
/*---------------------------------------------------------------------------*/
static char hx8399c_fhd_pluse_video_on_cmd0[] = {
	0x04, 0x00, 0x39, 0xC0,
	0xB9, 0xFF, 0x83, 0x99,
};

static char hx8399c_fhd_pluse_video_on_cmd1[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xD2, 0x88, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd2[] = {
	0x0C, 0x00, 0x39, 0xC0,
	0xB1, 0x02, 0x04, 0x72,
	0x92, 0x01, 0x32, 0xAA,
	0x11, 0x11, 0x52, 0x57,
};

static char hx8399c_fhd_pluse_video_on_cmd3[] = {
	0x10, 0x00, 0x39, 0xC0,
	0xB2, 0x00, 0x80, 0x80,
	0xCC, 0x05, 0x07, 0x5A,
	0x11, 0x10, 0x10, 0x00,
	0x1E, 0x70, 0x03, 0xD4,
};

static char hx8399c_fhd_pluse_video_on_cmd4[] = {
	0x2D, 0x00, 0x39, 0xC0,
	0xB4, 0x00, 0xFF, 0x59,
	0x59, 0x01, 0xAB, 0x00,
	0x00, 0x09, 0x00, 0x03,
	0x05, 0x00, 0x28, 0x03,
	0x0B, 0x0D, 0x21, 0x03,
	0x02, 0x00, 0x0C, 0xA3,
	0x80, 0x59, 0x59, 0x02,
	0xAB, 0x00, 0x00, 0x09,
	0x00, 0x03, 0x05, 0x00,
	0x28, 0x03, 0x0B, 0x0D,
	0x02, 0x00, 0x0C, 0xA3,
	0x01, 0xFF, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd5[] = {
	0x22, 0x00, 0x39, 0xC0,
	0xD3, 0x00, 0x0C, 0x03,
	0x03, 0x00, 0x00, 0x10,
	0x10, 0x00, 0x00, 0x03,
	0x00, 0x03, 0x00, 0x08,
	0x78, 0x08, 0x78, 0x00,
	0x00, 0x00, 0x00, 0x00,
	0x24, 0x02, 0x05, 0x05,
	0x03, 0x00, 0x00, 0x00,
	0x05, 0x40, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd6[] = {
	0x21, 0x00, 0x39, 0xC0,
	0xD5, 0x20, 0x20, 0x19,
	0x19, 0x18, 0x18, 0x02,
	0x03, 0x00, 0x01, 0x24,
	0x24, 0x18, 0x18, 0x18,
	0x18, 0x24, 0x24, 0x00,
	0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x2F,
	0x2F, 0x30, 0x30, 0x31,
	0x31, 0xFF, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd7[] = {
	0x21, 0x00, 0x39, 0xC0,
	0xD6, 0x24, 0x24, 0x18,
	0x18, 0x19, 0x19, 0x01,
	0x00, 0x03, 0x02, 0x24,
	0x24, 0x18, 0x18, 0x18,
	0x18, 0x20, 0x20, 0x40,
	0x40, 0x40, 0x40, 0x40,
	0x40, 0x40, 0x40, 0x2F,
	0x2F, 0x30, 0x30, 0x31,
	0x31, 0xFF, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd8[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xBD, 0x00, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd9[] = {
	0x11, 0x00, 0x39, 0xC0,
	0xD8, 0xAA, 0xAA, 0xAA,
	0xAA, 0xAA, 0xAA, 0xAA,
	0xAA, 0xAA, 0xBA, 0xAA,
	0xAA, 0xAA, 0xBA, 0xAA,
	0xAA, 0xFF, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd10[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xBD, 0x01, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd11[] = {
	0x11, 0x00, 0x39, 0xC0,
	0xD8, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00,
	0x00, 0x82, 0xEA, 0xAA,
	0xAA, 0x82, 0xEA, 0xAA,
	0xAA, 0xFF, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd12[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xBD, 0x02, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd13[] = {
	0x09, 0x00, 0x39, 0xC0,
	0xD8, 0xFF, 0xFF, 0xC0,
	0x3F, 0xFF, 0xFF, 0xC0,
	0x3F, 0xFF, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd14[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xBD, 0x00, 0xFF, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd15[] = {
	0x37, 0x00, 0x39, 0xC0,
	0xE0, 0x01, 0x21, 0x31,
	0x2D, 0x66, 0x6F, 0x7B,
	0x75, 0x7A, 0x81, 0x86,
	0x89, 0x8C, 0x90, 0x95,
	0x97, 0x9A, 0xA1, 0xA2,
	0xAA, 0x9E, 0xAD, 0xB0,
	0x5B, 0x57, 0x63, 0x7A,
	0x01, 0x21, 0x31, 0x2D,
	0x66, 0x6F, 0x7B, 0x75,
	0x7A, 0x81, 0x86, 0x89,
	0x9C, 0x90, 0x95, 0x97,
	0x9A, 0xA1, 0xA2, 0xAA,
	0x9E, 0xAD, 0xB0, 0x5B,
	0x57, 0x63, 0x7A, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd16[] = {
	0x03, 0x00, 0x39, 0xC0,
	0xB6, 0x7E, 0x7E, 0xFF,
};

static char hx8399c_fhd_pluse_video_on_cmd17[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xCC, 0x08, 0xFF, 0xFF,
};

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

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

static struct mipi_dsi_cmd hx8399c_fhd_pluse_video_on_command[] = {
	{0x08, hx8399c_fhd_pluse_video_on_cmd0, 0x00},
	{0x08, hx8399c_fhd_pluse_video_on_cmd1, 0x00},
	{0x10, hx8399c_fhd_pluse_video_on_cmd2, 0x00},
	{0x14, hx8399c_fhd_pluse_video_on_cmd3, 0x00},
	{0x34, hx8399c_fhd_pluse_video_on_cmd4, 0x00},
	{0x28, hx8399c_fhd_pluse_video_on_cmd5, 0x05},
	{0x28, hx8399c_fhd_pluse_video_on_cmd6, 0x05},
	{0x28, hx8399c_fhd_pluse_video_on_cmd7, 0x05},
	{0x08, hx8399c_fhd_pluse_video_on_cmd8, 0x00},
	{0x18, hx8399c_fhd_pluse_video_on_cmd9, 0x00},
	{0x08, hx8399c_fhd_pluse_video_on_cmd10, 0x00},
	{0x18, hx8399c_fhd_pluse_video_on_cmd11, 0x00},
	{0x08, hx8399c_fhd_pluse_video_on_cmd12, 0x00},
	{0x10, hx8399c_fhd_pluse_video_on_cmd13, 0x00},
	{0x08, hx8399c_fhd_pluse_video_on_cmd14, 0x00},
	{0x3C, hx8399c_fhd_pluse_video_on_cmd15, 0x05},
	{0x08, hx8399c_fhd_pluse_video_on_cmd16, 0x00},
	{0x08, hx8399c_fhd_pluse_video_on_cmd17, 0x00},
	{0x04, hx8399c_fhd_pluse_video_on_cmd18, 0x78},
	{0x04, hx8399c_fhd_pluse_video_on_cmd19, 0x14}
};

#define HX8399C_FHD_PLUSE_VIDEO_ON_COMMAND 20


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

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

static struct mipi_dsi_cmd hx8399c_fhd_pluse_video_off_command[] = {
	{0x4, hx8399c_fhd_pluse_videooff_cmd0, 0x32},
	{0x4, hx8399c_fhd_pluse_videooff_cmd1, 0x96}
};

#define HX8399C_FHD_PLUSE_VIDEO_OFF_COMMAND 2


static struct command_state hx8399c_fhd_pluse_video_state = {
	0, 1
};

/*---------------------------------------------------------------------------*/
/* Command mode panel information                                            */
/*---------------------------------------------------------------------------*/
static struct commandpanel_info hx8399c_fhd_pluse_video_command_panel = {
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

/*---------------------------------------------------------------------------*/
/* Video mode panel information                                              */
/*---------------------------------------------------------------------------*/
static struct videopanel_info hx8399c_fhd_pluse_video_video_panel = {
	1, 0, 0, 0, 1, 1, 2, 0, 0x9
};

/*---------------------------------------------------------------------------*/
/* Lane configuration                                                        */
/*---------------------------------------------------------------------------*/
static struct lane_configuration hx8399c_fhd_pluse_video_lane_config = {
	4, 0, 1, 1, 1, 1, 0
};

/*---------------------------------------------------------------------------*/
/* Panel timing                                                              */
/*---------------------------------------------------------------------------*/
static const uint32_t hx8399c_fhd_pluse_video_timings[] = {
	0x24, 0x1C, 0x34, 0x00, 0x58, 0x4d, 0x36, 0x3f, 0x53, 0x03, 0x04, 0x00
};

static const uint32_t hx8399c_fhd_pluse_14nm_video_timings[] = {
	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
	0x24, 0x1c, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
};
static struct panel_timing hx8399c_fhd_pluse_video_timing_info = {
	0, 4, 0x0e, 0x31
};

static struct labibb_desc hx8399c_fhd_pluse_video_labibb = {
	0, 1, 5700000, 5700000, 5700000, 5700000, 3, 3, 1, 0
};

/*---------------------------------------------------------------------------*/
/* Panel reset sequence                                                      */
/*---------------------------------------------------------------------------*/
static struct panel_reset_sequence hx8399c_fhd_pluse_video_panel_reset_seq = {
	{1, 0, 1, }, {20, 2, 20, }, 2
};

/*---------------------------------------------------------------------------*/
/* Backlight setting                                                         */
/*---------------------------------------------------------------------------*/
static struct backlight hx8399c_fhd_pluse_video_backlight = {
	1, 1, 4095, 100, 1, "PMIC_8941"
};

#define HX8399C_FHD_PLUSE_VIDEO_SIGNATURE 0xA0000

#endif /*_PANEL_HX8399C_FHD_PLUSE_VIDEO_H_*/
