Files
Linux_Drivers/middleware/v2/component/panel/cv181x/dsi_gm8775c.h
2023-05-24 11:57:21 +08:00

161 lines
7.1 KiB
C

#ifndef _MIPI_TX_PARAM_GM8775C_1080P_H_
#define _MIPI_TX_PARAM_GM8775C_1080P_H_
#include <linux/vo_mipi_tx.h>
#include "linux/cvi_comm_mipi_tx.h"
#define _BIST_COLOR 0
#define _HX8775C_RX_HACT 1920
#define _HX8775C_RX_HFP 88
#define _HX8775C_RX_HSA 44
#define _HX8775C_RX_HBP 148
#define _HX8775C_RX_VACT 1080
#define _HX8775C_RX_VFP 4
#define _HX8775C_RX_VSA 5
#define _HX8775C_RX_VBP 36
#define PIXEL_CLK(x) ((x##_VACT + x##_VSA + x##_VBP + x##_VFP) \
* (x##_HACT + x##_HSA + x##_HBP + x##_HFP) * 60 / 1000)
struct combo_dev_cfg_s dev_cfg_gm8775c = {
.devno = 0,
#ifdef MIPI_PANEL_2_LANES
.lane_id = {MIPI_TX_LANE_0, MIPI_TX_LANE_1, MIPI_TX_LANE_CLK, -1, -1},
#else
.lane_id = {MIPI_TX_LANE_0, MIPI_TX_LANE_1, MIPI_TX_LANE_CLK, MIPI_TX_LANE_2, MIPI_TX_LANE_3},
#endif
.lane_pn_swap = {true, true, true, true, true},
.output_mode = OUTPUT_MODE_DSI_VIDEO,
.video_mode = BURST_MODE,
.output_format = OUT_FORMAT_RGB_24_BIT,
.sync_info = {
.vid_hsa_pixels = _HX8775C_RX_HSA,
.vid_hbp_pixels = _HX8775C_RX_HBP,
.vid_hfp_pixels = _HX8775C_RX_HFP,
.vid_hline_pixels = _HX8775C_RX_HACT,
.vid_vsa_lines = _HX8775C_RX_VSA,
.vid_vbp_lines = _HX8775C_RX_VBP,
.vid_vfp_lines = _HX8775C_RX_VFP,
.vid_active_lines = _HX8775C_RX_VACT,
.vid_vsa_pos_polarity = false,
.vid_hsa_pos_polarity = true,
},
.pixel_clk = PIXEL_CLK(_HX8775C_RX),
};
const struct hs_settle_s hs_timing_cfg_gm8775c = { .prepare = 6, .zero = 32, .trail = 1 };
static CVI_U8 data_gm8775c_0[] = { 0x27, 0xAA };
static CVI_U8 data_gm8775c_1[] = { 0x48, 0x02 };
static CVI_U8 data_gm8775c_2[] = { 0xB6, 0x20 };
static CVI_U8 data_gm8775c_3[] = { 0x01, 0x80 };
static CVI_U8 data_gm8775c_4[] = { 0x02, 0x38 };
static CVI_U8 data_gm8775c_5[] = { 0x03, 0x47 };
static CVI_U8 data_gm8775c_6[] = { 0x04, 0x58 };
static CVI_U8 data_gm8775c_7[] = { 0x05, 0x2c };
static CVI_U8 data_gm8775c_8[] = { 0x06, 0x94 };
static CVI_U8 data_gm8775c_9[] = { 0x07, 0x00 };
static CVI_U8 data_gm8775c_10[] = { 0x08, 0x04 };
static CVI_U8 data_gm8775c_11[] = { 0x09, 0x05 };
static CVI_U8 data_gm8775c_12[] = { 0x0A, 0x24 };
//use mipi clk
static CVI_U8 data_gm8775c_13[] = { 0x0B, 0x82 };
static CVI_U8 data_gm8775c_14[] = { 0x0C, 0x14 };
static CVI_U8 data_gm8775c_15[] = { 0x0D, 0x01 };
static CVI_U8 data_gm8775c_16[] = { 0x0E, 0x80 };
static CVI_U8 data_gm8775c_17[] = { 0x0F, 0x20 };
static CVI_U8 data_gm8775c_18[] = { 0x10, 0x20 };
static CVI_U8 data_gm8775c_19[] = { 0x11, 0x03 };
static CVI_U8 data_gm8775c_20[] = { 0x12, 0x1B };
static CVI_U8 data_gm8775c_21[] = { 0x13, 0x53 };
static CVI_U8 data_gm8775c_22[] = { 0x14, 0x01 };
static CVI_U8 data_gm8775c_23[] = { 0x15, 0x23 };
static CVI_U8 data_gm8775c_24[] = { 0x16, 0x40 };
static CVI_U8 data_gm8775c_25[] = { 0x17, 0x00 };
static CVI_U8 data_gm8775c_26[] = { 0x18, 0x01 };
static CVI_U8 data_gm8775c_27[] = { 0x19, 0x23 };
static CVI_U8 data_gm8775c_28[] = { 0x1A, 0x40 };
static CVI_U8 data_gm8775c_29[] = { 0x1B, 0x00 };
static CVI_U8 data_gm8775c_30[] = { 0x1E, 0x46 };
static CVI_U8 data_gm8775c_31[] = { 0x51, 0x30 };
static CVI_U8 data_gm8775c_32[] = { 0x1F, 0x10 };
//debug
// static CVI_U8 data_gm8775c_35[] = { 0x7B, 0x4E };
// static CVI_U8 data_gm8775c_36[] = { 0x7C, 0x4F };
// static CVI_U8 data_gm8775c_37[] = { 0x7D, 0x4D };
#if _BIST_COLOR
static CVI_U8 data_gm8775c_33[] = { 0x2A, 0x4D };
#else
static CVI_U8 data_gm8775c_34[] = { 0x2A, 0x01 };
// static CVI_U8 data_gm8775c_35[] = { 0x6A, 0x08 };
// static CVI_U8 data_gm8775c_36[] = { 0x6C, 0x9E };
// static CVI_U8 data_gm8775c_37[] = { 0x6D, 0x07 };
// static CVI_U8 data_gm8775c_38[] = { 0x6E, 0x00 };
// static CVI_U8 data_gm8775c_39[] = { 0x6F, 0x8A };
// static CVI_U8 data_gm8775c_40[] = { 0x70, 0x19 };
// static CVI_U8 data_gm8775c_41[] = { 0x71, 0x00 };
#endif
const struct dsc_instr dsi_init_cmds_gm8775c[] = {
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_0 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_1 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_2 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_3 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_4 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_5 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_6 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_7 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_8 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_9 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_10 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_11 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_12 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_13 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_14 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_15 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_16 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_17 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_18 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_19 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_20 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_21 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_22 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_23 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_24 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_25 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_26 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_27 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_28 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_29 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_30 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_31 },
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_32 },
//debug
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_35 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_36 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_37 },
#if _BIST_COLOR
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_33 },
#else
{.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_34 }
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_35 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_36 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_37 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_38 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_39 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_40 },
// {.delay = 0, .data_type = 0x23, .size = 2, .data = data_gm8775c_41 }
#endif
};
#else
#error "MIPI_TX_PARAM multi-delcaration!!"
#endif // _MIPI_TX_PARAM_GM8775C_1080P_H_