写在前面

SOC:Qualcomm msm8909

Core-Board:SC20-CE QA/PJ

Base-Board:xxx

Linux Kernel:xxx

Android:7.1

本次目的

将核心板输出的MIPI显示信号通过LT8912B芯片转换成HDMI信号输出

详细步骤

LT8912B驱动的添加

新增驱动文件:

kernel\drivers\video\lt8912_dsi0.c

/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 and* only version 2 as published by the Free Software Foundation.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.**/
#define DEBUG
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/fs.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>
#include <linux/of_gpio.h>
#include <linux/of_irq.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
#include <linux/mdss_io_util.h>
#include <linux/jiffies.h>
#include <linux/timer.h>
#include <linux/kthread.h>#define EDID_ADDR 0x50
#define LK_VIDEO_CHECK
#define LT8912_REG_CHIP_REVISION_0 (0x00)
#define LT8912_REG_CHIP_REVISION_1 (0x01)#define LT8912_VAL_CHIP_REVISION_0 (0x12)
#define LT8912_VAL_CHIP_REVISION_1 (0xB2)
#define LT8912_DSI_CEC_I2C_ADDR_REG (0xE1)
#define LT8912_RESET_DELAY (100)#define PINCTRL_STATE_ACTIVE    "pmx_lt8912_active"
#define PINCTRL_STATE_SUSPEND   "pmx_lt8912_suspend"#define MDSS_MAX_PANEL_LEN      256
/* size of audio and speaker info Block *//* 0x94 interrupts */#define MONITOR_SENSE_INT_ENABLE BIT(6)
#define ACTIVE_VSYNC_EDGE        BIT(5)
#define AUDIO_FIFO_FULL          BIT(4)#define MAX_WAIT_TIME (100)
#define MAX_RW_TRIES (3)#define MAX_OPERAND_SIZE    14
#define CEC_MSG_SIZE            (MAX_OPERAND_SIZE + 2)#define HDMI_MODE_480P   0
#define HDMI_MODE_720P   1
#define HDMI_MODE_1080P  0enum lt8912_i2c_addr {I2C_ADDR_MAIN = 0x48,I2C_ADDR_CEC_DSI = 0x49,I2C_ADDR_I2S = 0x4a,
};struct lt8912_reg_cfg {u8 i2c_addr;u8 reg;u8 val;int sleep_in_ms;
};struct lt8912_cec_msg {u8 buf[CEC_MSG_SIZE];u8 timestamp;bool pending;
};struct lt8912 {u8 video_mode;int irq;u32 irq_gpio;u32 irq_flags;u32 rst_gpio;u32 rst_flags;
//    struct regulator *avdd;struct pinctrl *ts_pinctrl;struct pinctrl_state *pinctrl_state_active;struct pinctrl_state *pinctrl_state_suspend;bool audio;bool disable_gpios;bool is_power_on;void *edid_data;struct workqueue_struct *workq;//struct delayed_work lt8912_intr_work_id;struct delayed_work lt8912_check_hpd_work_id;
//  struct msm_dba_device_info dev_info;struct i2c_client *i2c_client;struct mutex ops_mutex;
};static char mdss_mdp_panel[MDSS_MAX_PANEL_LEN];static struct lt8912_reg_cfg lt8912_init_setup[] = {
/* Digital clock en*//* power down */{I2C_ADDR_MAIN, 0x08, 0xff, 0},/* HPD override */{I2C_ADDR_MAIN, 0x09, 0xff, 0},/* color space */{I2C_ADDR_MAIN, 0x0a, 0xff, 0},/* Fixed */{I2C_ADDR_MAIN, 0x0b, 0x7c, 0},/* HDCP */{I2C_ADDR_MAIN, 0x0c, 0xff, 0},
/*Tx Analog*//* Fixed */{I2C_ADDR_MAIN, 0x31, 0xA1, 0},/* V1P2 */{I2C_ADDR_MAIN, 0x32, 0xA1, 0},/* Fixed */{I2C_ADDR_MAIN, 0x33, 0x03, 0},/* Fixed */{I2C_ADDR_MAIN, 0x37, 0x00, 0},/* Fixed */{I2C_ADDR_MAIN, 0x38, 0x22, 0},/* Fixed */{I2C_ADDR_MAIN, 0x60, 0x82, 0},
/*Cbus Analog*//* Fixed */{I2C_ADDR_MAIN, 0x39, 0x45, 0},{I2C_ADDR_MAIN, 0x3a, 0x00, 0},/* add 20180818 improve hdmi output signal*/{I2C_ADDR_MAIN, 0x3b, 0x00, 0},
/*HDMI Pll Analog*/ {I2C_ADDR_MAIN, 0x44, 0x31, 0},/* Fixed */{I2C_ADDR_MAIN, 0x55, 0x44, 0},/* Fixed */{I2C_ADDR_MAIN, 0x57, 0x01, 0},{I2C_ADDR_MAIN, 0x5a, 0x02, 0},
/*MIPI Analog*//* Fixed */{I2C_ADDR_MAIN, 0x3e, 0xc6, 0}, /* 20171204 0x8e *///{I2C_ADDR_MAIN, 0x3f, 0x04, 0},{I2C_ADDR_MAIN, 0x41, 0x7c, 0}, /* 20171204 0x3c *///{I2C_ADDR_MAIN, 0x42, 0x05, 0},};static struct lt8912_reg_cfg lt8912_mipi_basic_set[] = {{I2C_ADDR_CEC_DSI, 0x12,0x04, 0}, {I2C_ADDR_CEC_DSI, 0x13,0x00, 0}, {I2C_ADDR_CEC_DSI, 0x14,0x00, 0}, {I2C_ADDR_CEC_DSI, 0x15,0x06, 0},{I2C_ADDR_CEC_DSI, 0x1a,0x03, 0}, {I2C_ADDR_CEC_DSI, 0x1b,0x03, 0},
};/*static struct lt8912_reg_cfg lt8912_480p_mode[] = {{I2C_ADDR_CEC_DSI, 0x10,0x01, 0}, {I2C_ADDR_CEC_DSI, 0x11,0x04, 0}, {I2C_ADDR_CEC_DSI, 0x18,0x60, 0},{I2C_ADDR_CEC_DSI, 0x19,0x02, 0},{I2C_ADDR_CEC_DSI, 0x1c,0x80, 0},{I2C_ADDR_CEC_DSI, 0x1d,0x02, 0},{I2C_ADDR_CEC_DSI, 0x2f,0x0c, 0},{I2C_ADDR_CEC_DSI, 0x34,0x10, 0},{I2C_ADDR_CEC_DSI, 0x35,0x03, 0},{I2C_ADDR_CEC_DSI, 0x36,0x0d, 0},{I2C_ADDR_CEC_DSI, 0x37,0x02, 0},{I2C_ADDR_CEC_DSI, 0x38,0x0a, 0},{I2C_ADDR_CEC_DSI, 0x39,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3a,0x21, 0},{I2C_ADDR_CEC_DSI, 0x3b,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3c,0x28, 0},{I2C_ADDR_CEC_DSI, 0x3d,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3e,0x08, 0},{I2C_ADDR_CEC_DSI, 0x3f,0x00, 0},
};*/#if HDMI_MODE_480P
static struct lt8912_reg_cfg lt8912_480p_mode[] = {{I2C_ADDR_CEC_DSI, 0x10,0x01, 0}, {I2C_ADDR_CEC_DSI, 0x11,0x04, 0}, {I2C_ADDR_CEC_DSI, 0x18,0x80, 0},       //hsync128{I2C_ADDR_CEC_DSI, 0x19,0x04, 0},     //vsync 4{I2C_ADDR_CEC_DSI, 0x1c,0x20, 0},      //hline 800 {I2C_ADDR_CEC_DSI, 0x1d,0x03, 0},{I2C_ADDR_CEC_DSI, 0x2f,0x0c, 0},{I2C_ADDR_CEC_DSI, 0x34,0x20, 0},     //htotal 1056{I2C_ADDR_CEC_DSI, 0x35,0x04, 0},{I2C_ADDR_CEC_DSI, 0x36,0x74, 0},     //vtoal 628{I2C_ADDR_CEC_DSI, 0x37,0x02, 0},{I2C_ADDR_CEC_DSI, 0x38,0x17, 0},       //vbp 23{I2C_ADDR_CEC_DSI, 0x39,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3a,0x01, 0},      //vfp 1{I2C_ADDR_CEC_DSI, 0x3b,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3c,0x58, 0},      //hbp  88{I2C_ADDR_CEC_DSI, 0x3d,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3e,0x28, 0},      //hfp 40{I2C_ADDR_CEC_DSI, 0x3f,0x00, 0},
};#elif HDMI_MODE_720P
static struct lt8912_reg_cfg lt8912_720p_mode[] = {{I2C_ADDR_CEC_DSI, 0x10,0x01, 0}, // {I2C_ADDR_CEC_DSI, 0x11,0x0a, 0}, //0a>>08{I2C_ADDR_CEC_DSI, 0x18,0x28, 0},  //hsync 40 {I2C_ADDR_CEC_DSI, 0x19,0x05, 0},    //vsync 5{I2C_ADDR_CEC_DSI, 0x1c,0x00, 0},  //hline 1280{I2C_ADDR_CEC_DSI, 0x1d,0x05, 0},{I2C_ADDR_CEC_DSI, 0x2f,0x0c, 0},{I2C_ADDR_CEC_DSI, 0x34,0x72, 0}, //htotal 1650{I2C_ADDR_CEC_DSI, 0x35,0x06, 0},{I2C_ADDR_CEC_DSI, 0x36,0xee, 0}, //vtotal 750{I2C_ADDR_CEC_DSI, 0x37,0x02, 0},{I2C_ADDR_CEC_DSI, 0x38,0x14, 0},  //vbp 20{I2C_ADDR_CEC_DSI, 0x39,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3a,0x05, 0},  //vfp 5{I2C_ADDR_CEC_DSI, 0x3b,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3c,0xdc, 0},   //hbp 220 {I2C_ADDR_CEC_DSI, 0x3d,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3e,0x6e, 0},    //hfp 110{I2C_ADDR_CEC_DSI, 0x3f,0x00, 0},
};
#elif HDMI_MODE_1080P
static struct lt8912_reg_cfg lt8912_1080p_mode[] = {{I2C_ADDR_CEC_DSI, 0x10,0x00, 0},{I2C_ADDR_CEC_DSI, 0x11,0x20, 0},{I2C_ADDR_CEC_DSI, 0x18,0x2c, 0},{I2C_ADDR_CEC_DSI, 0x19,0x05, 0},{I2C_ADDR_CEC_DSI, 0x1c,0x80, 0},{I2C_ADDR_CEC_DSI, 0x1d,0x07, 0},{I2C_ADDR_CEC_DSI, 0x2f,0x0c, 0},{I2C_ADDR_CEC_DSI, 0x34,0x98, 0},{I2C_ADDR_CEC_DSI, 0x35,0x08, 0},{I2C_ADDR_CEC_DSI, 0x36,0x65, 0},{I2C_ADDR_CEC_DSI, 0x37,0x04, 0},{I2C_ADDR_CEC_DSI, 0x38,0x24, 0},{I2C_ADDR_CEC_DSI, 0x39,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3a,0x04, 0},{I2C_ADDR_CEC_DSI, 0x3b,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3c,0x94, 0},{I2C_ADDR_CEC_DSI, 0x3d,0x00, 0},{I2C_ADDR_CEC_DSI, 0x3e,0x58, 0},{I2C_ADDR_CEC_DSI, 0x3f,0x00, 0},
};#endifstatic struct lt8912_reg_cfg lt8912_ddsconfig[] = {{I2C_ADDR_CEC_DSI, 0x4e,0xdb, 0}, /* 20171201 start */{I2C_ADDR_CEC_DSI, 0x4f,0x97, 0},{I2C_ADDR_CEC_DSI, 0x50,0x69, 0},{I2C_ADDR_CEC_DSI, 0x51,0x80, 0},{I2C_ADDR_CEC_DSI, 0x1f,0x5e, 0},{I2C_ADDR_CEC_DSI, 0x20,0x01, 0},{I2C_ADDR_CEC_DSI, 0x21,0x2c, 0},{I2C_ADDR_CEC_DSI, 0x22,0x01, 0},{I2C_ADDR_CEC_DSI, 0x23,0xfa, 0},{I2C_ADDR_CEC_DSI, 0x24,0x00, 0},{I2C_ADDR_CEC_DSI, 0x25,0xc8, 0},{I2C_ADDR_CEC_DSI, 0x26,0x00, 0},{I2C_ADDR_CEC_DSI, 0x27,0x5e, 0},{I2C_ADDR_CEC_DSI, 0x28,0x01, 0},{I2C_ADDR_CEC_DSI, 0x29,0x2c, 0},{I2C_ADDR_CEC_DSI, 0x2a,0x01, 0},{I2C_ADDR_CEC_DSI, 0x2b,0xfa, 0},{I2C_ADDR_CEC_DSI, 0x2c,0x00, 0},{I2C_ADDR_CEC_DSI, 0x2d,0xc8, 0},{I2C_ADDR_CEC_DSI, 0x2e,0x00, 0}, /* 20171201 end */    {I2C_ADDR_CEC_DSI, 0x42,0x64, 0},{I2C_ADDR_CEC_DSI, 0x43,0x00, 0},{I2C_ADDR_CEC_DSI, 0x44,0x04, 0},{I2C_ADDR_CEC_DSI, 0x45,0x00, 0},{I2C_ADDR_CEC_DSI, 0x46,0x59, 0},{I2C_ADDR_CEC_DSI, 0x47,0x00, 0},{I2C_ADDR_CEC_DSI, 0x48,0xf2, 0},{I2C_ADDR_CEC_DSI, 0x49,0x06, 0},{I2C_ADDR_CEC_DSI, 0x4a,0x00, 0},{I2C_ADDR_CEC_DSI, 0x4b,0x72, 0},{I2C_ADDR_CEC_DSI, 0x4c,0x45, 0},{I2C_ADDR_CEC_DSI, 0x4d,0x00, 0},{I2C_ADDR_CEC_DSI, 0x52,0x08, 0},{I2C_ADDR_CEC_DSI, 0x53,0x00, 0},{I2C_ADDR_CEC_DSI, 0x54,0xb2, 0},{I2C_ADDR_CEC_DSI, 0x55,0x00, 0},{I2C_ADDR_CEC_DSI, 0x56,0xe4, 0},{I2C_ADDR_CEC_DSI, 0x57,0x0d, 0},{I2C_ADDR_CEC_DSI, 0x58,0x00, 0},{I2C_ADDR_CEC_DSI, 0x59,0xe4, 0},{I2C_ADDR_CEC_DSI, 0x5a,0x8a, 0},{I2C_ADDR_CEC_DSI, 0x5b,0x00, 0},{I2C_ADDR_CEC_DSI, 0x5c,0x34, 0},{I2C_ADDR_CEC_DSI, 0x1e,0x4f, 0},{I2C_ADDR_CEC_DSI, 0x51,0x00, 0},
};static struct lt8912_reg_cfg lt8912_rxlogicres[] = {{I2C_ADDR_MAIN, 0x03,0x7f, 100},{I2C_ADDR_MAIN, 0x03,0xff, 0},
};static struct lt8912_reg_cfg I2S_cfg[] = {{I2C_ADDR_MAIN, 0xB2, 0x01, 0},{I2C_ADDR_I2S, 0x06, 0x08, 0},{I2C_ADDR_I2S, 0x07, 0xf0, 0},{I2C_ADDR_I2S, 0x34, 0xd2, 0},
};static int lt8912_write(struct lt8912 *pdata, u8 addr, u8 reg, u8 val)
{int ret = 0;if (!pdata) {printk("dsi0 xxxx%s: Invalid argument\n", __func__);return -EINVAL;}pdata->i2c_client->addr = addr;ret = i2c_smbus_write_byte_data(pdata->i2c_client, reg, val);if (ret)pr_err_ratelimited("%s: wr err: addr 0x%x, reg 0x%x, val 0x%x\n",__func__, addr, reg, val);return ret;
}static int lt8912_read(struct lt8912 *pdata, u8 addr,u8 reg, char *buf, u32 size)
{int ret = 0;int index = reg;if (!pdata) {printk("dsi0 xxxx%s: Invalid argument\n", __func__);return -EINVAL;}pdata->i2c_client->addr = addr;for (index = reg; index < (reg + size); index++) {ret = i2c_smbus_read_byte_data(pdata->i2c_client, index);if (ret < 0) {printk("failed to read byte data index=%d\n", index);return -1;}buf[index-reg] = (u8)ret;}/*ret = msm_dba_helper_i2c_read(pdata->i2c_client, addr, reg, buf, size);if (ret)pr_err_ratelimited("%s: read err: addr 0x%x, reg 0x%x, size 0x%x\n",__func__, addr, reg, size);*/return 0;
}//#define LK_TEST_PATTERN_MODE 1
#ifdef LK_TEST_PATTERN_MODE
#define LT8912B_I2C_ADDRESS1  0x48
#define LT8912B_I2C_ADDRESS2  0x49
static void LK_Test_pattern_480P(struct lt8912 *pdata)
{
//static int lt8912_write(struct lt8912 *pdata, u8 addr, u8 reg, u8 val)//HDMI pattern Out(480P) printk("====================== richard: LK_Test_pattern_480P begin =================== \n");//0x48lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x08,0xff);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x09,0xff);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x0a,0xff);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x0b,0xff);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x0c,0xff);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x31,0xa1);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x32,0xa1);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x33,0x03);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x37,0x00);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x38,0x22);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x60,0x82);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x39,0x45);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x3b,0x00);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x44,0x31);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x55,0x44);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x57,0x01);lt8912_write(pdata,LT8912B_I2C_ADDRESS1,0x5a,0x02);//0x49lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x10,0x20);  // term en  To analog phy for trans lp mode to hs modelt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x11,0x04);  // settle Set timing for dphy trans state from PRPR to SOT statelt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x12,0x04);  // traillt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x13,0x00);  // 4 lane  // 01 lane // 02 2 lane //03 3lanelt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x14,0x00);  //debug muxlt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x15,0x00);lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x1a,0x03);  // hshift 3lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x1b,0x03);  // vshift 3lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x18,0x3e);  // hwidth 62lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x19,0x06);  // vwidth 6lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x1c,0xd0);  // pix num hactivelt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x1d,0x02);  lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x1e,0x67); //h v d pol hdmi sel pll sellt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x2f,0x0c); //fifo_buff_length 12lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x34,0x5a); // htotal 858lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x35,0x03); // htotal 858lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x36,0x0d); // vtotal 525lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x37,0x02); // vtotal 525lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x38,0x1e); // vbp 30lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x39,0x00); // vbp 30lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x3a,0x09); // vfp 9lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x3b,0x00); // vfp 9lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x3c,0x3c); // hbp 60lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x3d,0x00); // hbp 60lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x3e,0x10); // hfp 16lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x3f,0x00); // hfp 16lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x72,0x12);lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x73,0x7a); //RGD_PTN_DE_DLY[7:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x74,0x00); //RGD_PTN_DE_DLY[11:8]  260lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x75,0x24); //RGD_PTN_DE_TOP[6:0]   150lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x76,0xd0); //RGD_PTN_DE_CNT[7:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x77,0xe0); //RGD_PTN_DE_LIN[7:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x78,0x12); //RGD_PTN_DE_LIN[10:8],RGD_PTN_DE_CNT[11:8]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x79,0x5a); //RGD_PTN_H_TOTAL[7:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x7a,0x0d); //RGD_PTN_V_TOTAL[7:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x7b,0x23); //RGD_PTN_V_TOTAL[10:8],RGD_PTN_H_TOTAL[11:8]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x7c,0x3e); //RGD_PTN_HWIDTH[7:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x7d,0x06); //RGD_PTN_HWIDTH[9:8],RGD_PTN_VWIDTH[5:0]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x70,0x80); lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x71,0x51);lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x4e,0x66); //strm_sw_freq_word[ 7: 0] lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x4f,0x66); //strm_sw_freq_word[15: 8]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x50,0x26); //strm_sw_freq_word[23:16]lt8912_write(pdata,LT8912B_I2C_ADDRESS2,0x51,0x80); //pattern en   printk("====================== richard: LK_Test_pattern_480P end =================== \n");
}#endifstatic void lt8912_write_array(struct lt8912 *pdata,struct lt8912_reg_cfg *cfg, int size)
{int ret = 0;int i;size = size / sizeof(struct lt8912_reg_cfg);for (i = 0; i < size; i++) {ret = lt8912_write(pdata, cfg[i].i2c_addr,cfg[i].reg, cfg[i].val);if (ret != 0){pr_err("dsi0 xxxx%s: lt8912 reg write %02X to %02X failed.\n",__func__, cfg[i].val, cfg[i].reg);}if (cfg[i].sleep_in_ms)msleep(cfg[i].sleep_in_ms);}
}static int lt8912_read_device_rev(struct lt8912 *pdata)
{u8 rev = 0;int ret;int i = 0;ret = lt8912_read(pdata, I2C_ADDR_MAIN, LT8912_REG_CHIP_REVISION_0,&rev, 1);if (ret || rev != LT8912_VAL_CHIP_REVISION_0){pr_err("dsi0 xxxxcheck chip revision not match ret =%d reg = 0x%x, val = 0x%x\n",  ret, LT8912_REG_CHIP_REVISION_0, rev);//    return -1;}printk("  i = %d, dsi0 xxxx%s: LT8912_REG_CHIP_REVISION_0= %d\n", i, __func__, rev);//   msleep(1000);   ret = lt8912_read(pdata, I2C_ADDR_MAIN, LT8912_REG_CHIP_REVISION_1,&rev, 1);if (ret || rev != LT8912_VAL_CHIP_REVISION_1){pr_err("dsi0 xxxxcheck chip revision not match reg = 0x%x, val = 0x%x\n", LT8912_REG_CHIP_REVISION_1, rev);//   return -1;}printk("dsi0 xxxx%s: LT8912_REG_CHIP_REVISION_1= %d\n", __func__, rev);//return ret;return 0;
}static int lt8912_parse_dt(struct device *dev,struct lt8912 *pdata)
{struct device_node *np = dev->of_node;u32 temp_val = 0;int ret = 0;ret = of_property_read_u32(np, "instance_id", &temp_val);printk("dsi0 xxxx%s: DT property %s is %X\n", __func__, "instance_id",temp_val);if (ret)goto end;//pdata->dev_info.instance_id = temp_val;pdata->audio = of_property_read_bool(np, "adi,enable-audio");/* Get pinctrl if target uses pinctrl *//*pdata->ts_pinctrl = devm_pinctrl_get(dev);if (IS_ERR_OR_NULL(pdata->ts_pinctrl)) {ret = PTR_ERR(pdata->ts_pinctrl);pr_err("dsi0 xxxx%s: Pincontrol DT property returned %X\n",__func__, ret);}pdata->pinctrl_state_active = pinctrl_lookup_state(pdata->ts_pinctrl,"pmx_lt8912_active");if (IS_ERR_OR_NULL(pdata->pinctrl_state_active)) {ret = PTR_ERR(pdata->pinctrl_state_active);pr_err("dsi0 xxxxCan not lookup %s pinstate %d\n",PINCTRL_STATE_ACTIVE, ret);}pdata->pinctrl_state_suspend = pinctrl_lookup_state(pdata->ts_pinctrl,"pmx_lt8912_suspend");if (IS_ERR_OR_NULL(pdata->pinctrl_state_suspend)) {ret = PTR_ERR(pdata->pinctrl_state_suspend);pr_err("dsi0 xxxxCan not lookup %s pinstate %d\n",PINCTRL_STATE_SUSPEND, ret);}pdata->disable_gpios = of_property_read_bool(np,"adi,disable-gpios");if (!(pdata->disable_gpios)) {pdata->irq_gpio = of_get_named_gpio_flags(np,"adi,irq-gpio", 0, &pdata->irq_flags);pdata->rst_gpio = of_get_named_gpio_flags(np,"adi,rst-gpio", 0, &pdata->rst_flags);}*//*pdata->avdd = regulator_get_optional(dev, "avdd");if (IS_ERR(pdata->avdd)) {ret = PTR_ERR(pdata->avdd);pr_err("dsi0 xxxxRegulator get failed avdd ret=%d\n", ret);}*/end:return ret;
}static int lt8912_gpio_configure(struct lt8912 *pdata, bool on)
{int ret = 0;if (pdata->disable_gpios)return 0;if (on) {if (gpio_is_valid(pdata->rst_gpio)) {ret = gpio_request(pdata->rst_gpio, "lt8912_rst_gpio");if (ret) {pr_err("dsi0 xxxx%d unable to request gpio [%d] ret=%d\n",__LINE__, pdata->rst_gpio, ret);goto err_none;}ret = gpio_direction_output(pdata->rst_gpio, 1);if (ret) {pr_err("dsi0 xxxxunable to set dir for gpio[%d]\n",pdata->rst_gpio);goto err_rst_gpio;}} else {pr_err("dsi0 xxxxrst gpio not provided\n");goto err_none;}if (gpio_is_valid(pdata->irq_gpio)) {ret = gpio_request(pdata->irq_gpio, "lt8912_irq_gpio");if (ret) {pr_err("dsi0 xxxx%d unable to request gpio [%d] ret=%d\n",__LINE__, pdata->irq_gpio, ret);goto err_rst_gpio;}ret = gpio_direction_input(pdata->irq_gpio);if (ret) {pr_err("dsi0 xxxxunable to set dir for gpio[%d]\n",pdata->irq_gpio);goto err_irq_gpio;}} else {pr_err("dsi0 xxxxirq gpio not provided\n");goto err_rst_gpio;}return 0;} else {if (gpio_is_valid(pdata->rst_gpio))gpio_free(pdata->rst_gpio);if (gpio_is_valid(pdata->irq_gpio))gpio_free(pdata->irq_gpio);return 0;}err_irq_gpio:if (gpio_is_valid(pdata->irq_gpio))gpio_free(pdata->irq_gpio);
err_rst_gpio:if (gpio_is_valid(pdata->rst_gpio))gpio_free(pdata->rst_gpio);
err_none:return ret;
}static struct i2c_device_id lt8912_id[] = {{ "lt8912_dsi0", 0},{}
};/* Device Operations */
static int lt8912_power_on(struct lt8912 *pdata)
{lt8912_write_array(pdata, lt8912_init_setup,sizeof(lt8912_init_setup));lt8912_write_array(pdata, lt8912_mipi_basic_set,sizeof(lt8912_mipi_basic_set));return 0;
}static int lt8912_video_on(struct lt8912 *pdata)
{/*int i = 0;LK_Test_pattern_480P(pdata);  for (i = 0; i < 15; i++) {printk("i = %d\n" ,i);msleep(1000);}*///#if HDMI_MODE_480P
//  lt8912_write_array(pdata, lt8912_480p_mode,
//              sizeof(lt8912_480p_mode));
//#elif HDMI_MODE_720Plt8912_write_array(pdata, lt8912_720p_mode,sizeof(lt8912_720p_mode));
//#elif HDMI_MODE_1080P
//  lt8912_write_array(pdata, lt8912_1080p_mode,
//              sizeof(lt8912_1080p_mode));
//#endiflt8912_write_array(pdata, lt8912_ddsconfig,sizeof(lt8912_ddsconfig));lt8912_write_array(pdata, lt8912_rxlogicres,sizeof(lt8912_rxlogicres));return 0;
}#ifdef     LK_VIDEO_CHECK
static struct lt8912 *gpdata;
static int show_check_video(void *data)
{int ret = 0;int connected = 0;u8 rev0 = 0, rev1=1,  rev2=1, rev3=1, rev4=1;if (rev4) {msleep(5000);}while(1) {lt8912_read(gpdata, I2C_ADDR_MAIN, 0xC1, &rev0, 1);connected = (rev0 & BIT(7));printk("dsi0 xxxxlt8912======connected = %d\n", connected);printk("dsi0 xxxxlt8912======video check=======\n");ret = lt8912_read(gpdata, I2C_ADDR_MAIN, 0x9C, &rev1, 1);ret = lt8912_read(gpdata, I2C_ADDR_MAIN, 0x9D, &rev2, 1);ret = lt8912_read(gpdata, I2C_ADDR_MAIN, 0x9E, &rev3, 1);ret = lt8912_read(gpdata, I2C_ADDR_MAIN, 0x9F, &rev4, 1);printk( "dsi0 xxxxlt8912=======  video check reg0x9C: %x, reg0x9D: %x, reg0x9E: %x, reg0x9F: %x ============ \n", rev1,rev2,rev3,rev4);msleep(5000);      }return 0;
}
#endif
static int lt8912_probe(struct i2c_client *client,const struct i2c_device_id *id)
{static struct lt8912 *pdata;int ret = 0;int connected = 0;
#ifdef  LK_VIDEO_CHECKunsigned char rev1=1,  rev2=1, rev3=1, rev4 = 1;static struct task_struct *test_task=NULL;
#endifprintk("dsi0 xxxx%s enter\n", __func__);if (!client || !client->dev.of_node) {pr_err("dsi0 xxxx%s: invalid input\n", __func__);return -EINVAL;}pdata = devm_kzalloc(&client->dev,sizeof(struct lt8912), GFP_KERNEL);if (!pdata){pr_err("dsi0 xxxxalloc pdata failed\n");return -ENOMEM;}ret = lt8912_parse_dt(&client->dev, pdata);if (ret) {pr_err("dsi0 xxxx%s: Failed to parse DT\n", __func__);goto err_dt_parse;}pdata->i2c_client = client;/*if (!IS_ERR(pdata->avdd)) {ret = regulator_enable(pdata->avdd);if (ret) {pr_err("dsi0 xxxx%s: Regulator avdd enable failed ret=%d\n",__func__, ret);regulator_disable(pdata->avdd);}}*/pdata->disable_gpios = 1;ret = lt8912_gpio_configure(pdata, true);if (ret) {pr_err("dsi0 xxxx%s: Failed to configure GPIOs\n", __func__);goto err_dt_parse;}mutex_init(&pdata->ops_mutex);ret = lt8912_read_device_rev(pdata);if (ret) {pr_err("dsi0 xxxx%s: Failed to read chip rev\n", __func__);goto err_i2c_rev;}/*ret = pinctrl_select_state(pdata->ts_pinctrl,pdata->pinctrl_state_active);if (ret < 0)pr_err("dsi0 xxxx%s: Failed to select %s pinstate %d\n",__func__, PINCTRL_STATE_ACTIVE, ret);*/if (pdata->audio) {printk("dsi0 xxxx%s: enabling default audio configs\n", __func__);lt8912_write_array(pdata, I2S_cfg, sizeof(I2S_cfg));}msleep(500);printk("dsi0 xxxx%s start power on .......------------------------------------------__>\n", __func__);lt8912_power_on(pdata);printk("dsi0 xxxx%s start video on .......\n", __func__);lt8912_video_on(pdata);
#ifdef  LK_VIDEO_CHECKmsleep(1000);lt8912_read(gpdata, I2C_ADDR_MAIN, 0xC1, &rev1, 1);connected = (rev1 & BIT(7));printk("dsi0 xxxxlt8912======connected = %d\n", connected);printk("dsi0 xxxxlt8912======video check=======\n");ret = lt8912_read(pdata, I2C_ADDR_MAIN, 0x9c, &rev1, 1);ret = lt8912_read(pdata, I2C_ADDR_MAIN, 0x9d, &rev2, 1);ret = lt8912_read(pdata, I2C_ADDR_MAIN, 0x9e, &rev3, 1);ret = lt8912_read(pdata, I2C_ADDR_MAIN, 0x9f, &rev4, 1);printk( "dsi0 xxxxlt8912=======  video check reg0x9c: %x, reg0x9d: %x, reg0x9e: %x, reg0x9f: %x ============ \n", rev1,rev2,rev3,rev4);gpdata=pdata;test_task = kthread_run(show_check_video,NULL,"test_task");
#endif#ifdef LK_LT8912_INITif (rev4 != 2) {printk("dsi0 xxxx%s start power on .......------------------------------------------__>\n", __func__);lt8912_power_on(pdata);printk("dsi0 xxxx%s start video on .......\n", __func__);lt8912_video_on(pdata);}
#endifpm_runtime_enable(&client->dev);pm_runtime_set_active(&client->dev);return 0;
err_i2c_rev:lt8912_gpio_configure(pdata, false);
err_dt_parse:devm_kfree(&client->dev, pdata);return ret;
}static int lt8912_remove(struct i2c_client *client)
{int ret = -EINVAL;struct msm_dba_device_info *dev;struct lt8912 *pdata;if (!client)goto end;dev = dev_get_drvdata(&client->dev);if (!dev)goto end;pm_runtime_disable(&client->dev);ret = lt8912_gpio_configure(pdata, false);mutex_destroy(&pdata->ops_mutex);devm_kfree(&client->dev, pdata);end:return ret;
}static const struct of_device_id lt8912_dt_match[] = {{.compatible = "qcom,lt8912_dsi0"},{}
};static struct i2c_driver lt8912_driver = {.driver = {.name = "lt8912_dsi0",.of_match_table = lt8912_dt_match,.owner = THIS_MODULE,},.probe = lt8912_probe,.remove = lt8912_remove,.id_table = lt8912_id,
};static int __init lt8912_init(void)
{printk("------------------------------------------dsi0 xxxx%s enter\n", __func__);return i2c_add_driver(&lt8912_driver);
}static void __exit lt8912_exit(void)
{i2c_del_driver(&lt8912_driver);
}module_param_string(panel, mdss_mdp_panel, MDSS_MAX_PANEL_LEN, 0);module_init(lt8912_init);
module_exit(lt8912_exit);
MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("lt8912 driver");

修改Makefile:

kernel\drivers\video\Makefile

加入新编译项

obj-y    += lt8912_dsi0.o

完整的文件:

# Makefile for the Linux video drivers.
# 5 Aug 1999, James Simmons, <mailto:jsimmons@users.sf.net>
# Rewritten to use lists instead of if-statements.# Each configuration option enables a list of files.obj-$(CONFIG_VGASTATE)            += vgastate.o
obj-$(CONFIG_HDMI)                += hdmi.o
obj-y                             += fb_notify.o
#add by rid
obj-y                             += lt8912_dsi0.o
obj-$(CONFIG_FB)                  += fb.o
fb-y                              := fbmem.o fbmon.o fbcmap.o fbsysfs.o \modedb.o fbcvt.o
fb-objs                           := $(fb-y)obj-$(CONFIG_ADF)        += adf/
obj-$(CONFIG_VT)          += console/
obj-$(CONFIG_LOGO)        += logo/
obj-y                 += backlight/obj-$(CONFIG_EXYNOS_VIDEO)     += exynos/obj-$(CONFIG_FB_CFB_FILLRECT)  += cfbfillrect.o
obj-$(CONFIG_FB_CFB_COPYAREA)  += cfbcopyarea.o
obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o
obj-$(CONFIG_FB_SYS_FILLRECT)  += sysfillrect.o
obj-$(CONFIG_FB_SYS_COPYAREA)  += syscopyarea.o
obj-$(CONFIG_FB_SYS_IMAGEBLIT) += sysimgblt.o
obj-$(CONFIG_FB_SYS_FOPS)      += fb_sys_fops.o
obj-$(CONFIG_FB_SVGALIB)       += svgalib.o
obj-$(CONFIG_FB_MACMODES)      += macmodes.o
obj-$(CONFIG_FB_DDC)           += fb_ddc.o
obj-$(CONFIG_FB_DEFERRED_IO)   += fb_defio.o
obj-$(CONFIG_FB_WMT_GE_ROPS)   += wmt_ge_rops.o# Hardware specific drivers go first
obj-$(CONFIG_FB_AMIGA)            += amifb.o c2p_planar.o
obj-$(CONFIG_FB_ARC)              += arcfb.o
obj-$(CONFIG_FB_CLPS711X)         += clps711xfb.o
obj-$(CONFIG_FB_CYBER2000)        += cyber2000fb.o
obj-$(CONFIG_FB_GRVGA)            += grvga.o
obj-$(CONFIG_FB_PM2)              += pm2fb.o
obj-$(CONFIG_FB_PM3)          += pm3fb.oobj-$(CONFIG_FB_I740)       += i740fb.o
obj-$(CONFIG_FB_MATROX)       += matrox/
obj-$(CONFIG_FB_RIVA)         += riva/
obj-$(CONFIG_FB_NVIDIA)       += nvidia/
obj-$(CONFIG_FB_ATY)          += aty/ macmodes.o
obj-$(CONFIG_FB_ATY128)       += aty/ macmodes.o
obj-$(CONFIG_FB_RADEON)       += aty/
obj-$(CONFIG_FB_SIS)          += sis/
obj-$(CONFIG_FB_VIA)          += via/
obj-$(CONFIG_FB_KYRO)             += kyro/
obj-$(CONFIG_FB_SAVAGE)       += savage/
obj-$(CONFIG_FB_GEODE)        += geode/
obj-$(CONFIG_FB_MBX)          += mbx/
obj-$(CONFIG_FB_NEOMAGIC)         += neofb.o
obj-$(CONFIG_FB_3DFX)             += tdfxfb.o
obj-$(CONFIG_FB_CONTROL)          += controlfb.o
obj-$(CONFIG_FB_PLATINUM)         += platinumfb.o
obj-$(CONFIG_FB_VALKYRIE)         += valkyriefb.o
obj-$(CONFIG_FB_CT65550)          += chipsfb.o
obj-$(CONFIG_FB_IMSTT)            += imsttfb.o
obj-$(CONFIG_FB_FM2)              += fm2fb.o
obj-$(CONFIG_FB_VT8623)           += vt8623fb.o
obj-$(CONFIG_FB_TRIDENT)          += tridentfb.o
obj-$(CONFIG_FB_LE80578)          += vermilion/
obj-$(CONFIG_FB_S3)               += s3fb.o
obj-$(CONFIG_FB_ARK)              += arkfb.o
obj-$(CONFIG_FB_STI)              += stifb.o
obj-$(CONFIG_FB_FFB)              += ffb.o sbuslib.o
obj-$(CONFIG_FB_CG6)              += cg6.o sbuslib.o
obj-$(CONFIG_FB_CG3)              += cg3.o sbuslib.o
obj-$(CONFIG_FB_BW2)              += bw2.o sbuslib.o
obj-$(CONFIG_FB_CG14)             += cg14.o sbuslib.o
obj-$(CONFIG_FB_P9100)            += p9100.o sbuslib.o
obj-$(CONFIG_FB_TCX)              += tcx.o sbuslib.o
obj-$(CONFIG_FB_LEO)              += leo.o sbuslib.o
obj-$(CONFIG_FB_SGIVW)            += sgivwfb.o
obj-$(CONFIG_FB_ACORN)            += acornfb.o
obj-$(CONFIG_FB_ATARI)            += atafb.o c2p_iplan2.o atafb_mfb.o \atafb_iplan2p2.o atafb_iplan2p4.o atafb_iplan2p8.o
obj-$(CONFIG_FB_MAC)              += macfb.o
obj-$(CONFIG_FB_HECUBA)           += hecubafb.o
obj-$(CONFIG_FB_N411)             += n411.o
obj-$(CONFIG_FB_HGA)              += hgafb.o
obj-$(CONFIG_FB_XVR500)           += sunxvr500.o
obj-$(CONFIG_FB_XVR2500)          += sunxvr2500.o
obj-$(CONFIG_FB_XVR1000)          += sunxvr1000.o
obj-$(CONFIG_FB_IGA)              += igafb.o
obj-$(CONFIG_FB_APOLLO)           += dnfb.o
obj-$(CONFIG_FB_Q40)              += q40fb.o
obj-$(CONFIG_FB_TGA)              += tgafb.o
obj-$(CONFIG_FB_HP300)            += hpfb.o
obj-$(CONFIG_FB_G364)             += g364fb.o
obj-$(CONFIG_FB_EP93XX)       += ep93xx-fb.o
obj-$(CONFIG_FB_SA1100)           += sa1100fb.o
obj-$(CONFIG_FB_HIT)              += hitfb.o
obj-$(CONFIG_FB_ATMEL)        += atmel_lcdfb.o
obj-$(CONFIG_FB_PVR2)             += pvr2fb.o
obj-$(CONFIG_FB_VOODOO1)          += sstfb.o
obj-$(CONFIG_FB_ARMCLCD)      += amba-clcd.o
obj-$(CONFIG_FB_GOLDFISH)         += goldfishfb.o
obj-$(CONFIG_FB_68328)            += 68328fb.o
obj-$(CONFIG_FB_GBE)              += gbefb.o
obj-$(CONFIG_FB_CIRRUS)       += cirrusfb.o
obj-$(CONFIG_FB_ASILIANT)     += asiliantfb.o
obj-$(CONFIG_FB_PXA)          += pxafb.o
obj-$(CONFIG_FB_PXA168)       += pxa168fb.o
obj-$(CONFIG_PXA3XX_GCU)      += pxa3xx-gcu.o
obj-$(CONFIG_MMP_DISP)           += mmp/
obj-$(CONFIG_FB_W100)         += w100fb.o
obj-$(CONFIG_FB_TMIO)         += tmiofb.o
obj-$(CONFIG_FB_AU1100)       += au1100fb.o
obj-$(CONFIG_FB_AU1200)       += au1200fb.o
obj-$(CONFIG_FB_VT8500)       += vt8500lcdfb.o
obj-$(CONFIG_FB_WM8505)       += wm8505fb.o
obj-$(CONFIG_FB_PMAG_AA)      += pmag-aa-fb.o
obj-$(CONFIG_FB_PMAG_BA)      += pmag-ba-fb.o
obj-$(CONFIG_FB_PMAGB_B)      += pmagb-b-fb.o
obj-$(CONFIG_FB_MAXINE)       += maxinefb.o
obj-$(CONFIG_FB_METRONOME)        += metronomefb.o
obj-$(CONFIG_FB_BROADSHEET)       += broadsheetfb.o
obj-$(CONFIG_FB_AUO_K190X)    += auo_k190x.o
obj-$(CONFIG_FB_AUO_K1900)    += auo_k1900fb.o
obj-$(CONFIG_FB_AUO_K1901)    += auo_k1901fb.o
obj-$(CONFIG_FB_S1D13XXX)     += s1d13xxxfb.o
obj-$(CONFIG_FB_SH7760)       += sh7760fb.o
obj-$(CONFIG_FB_IMX)              += imxfb.o
obj-$(CONFIG_FB_S3C)          += s3c-fb.o
obj-$(CONFIG_FB_S3C2410)      += s3c2410fb.o
obj-$(CONFIG_FB_FSL_DIU)      += fsl-diu-fb.o
obj-$(CONFIG_FB_COBALT)           += cobalt_lcdfb.o
obj-$(CONFIG_FB_IBM_GXT4500)      += gxt4500.o
obj-$(CONFIG_FB_PS3)          += ps3fb.o
obj-$(CONFIG_FB_SM501)            += sm501fb.o
obj-$(CONFIG_FB_UDL)          += udlfb.o
obj-$(CONFIG_FB_SMSCUFX)      += smscufx.o
obj-$(CONFIG_FB_XILINX)           += xilinxfb.o
obj-$(CONFIG_SH_MIPI_DSI)     += sh_mipi_dsi.o
obj-$(CONFIG_FB_SH_MOBILE_HDMI)   += sh_mobile_hdmi.o
obj-$(CONFIG_FB_SH_MOBILE_MERAM)  += sh_mobile_meram.o
obj-$(CONFIG_FB_SH_MOBILE_LCDC)   += sh_mobile_lcdcfb.o
obj-$(CONFIG_FB_OMAP)             += omap/
obj-y                             += omap2/
obj-$(CONFIG_XEN_FBDEV_FRONTEND)  += xen-fbfront.o
obj-$(CONFIG_FB_CARMINE)          += carminefb.o
obj-$(CONFIG_FB_MB862XX)      += mb862xx/
obj-$(CONFIG_FB_MSM)              += msm/
obj-$(CONFIG_FB_NUC900)           += nuc900fb.o
obj-$(CONFIG_FB_JZ4740)       += jz4740_fb.o
obj-$(CONFIG_FB_PUV3_UNIGFX)      += fb-puv3.o
obj-$(CONFIG_FB_HYPERV)       += hyperv_fb.o# Platform or fallback drivers go here
obj-$(CONFIG_FB_UVESA)            += uvesafb.o
obj-$(CONFIG_FB_VESA)             += vesafb.o
obj-$(CONFIG_FB_EFI)              += efifb.o
obj-$(CONFIG_FB_VGA16)            += vga16fb.o
obj-$(CONFIG_FB_OF)               += offb.o
obj-$(CONFIG_FB_BF537_LQ035)      += bf537-lq035.o
obj-$(CONFIG_FB_BF54X_LQ043)      += bf54x-lq043fb.o
obj-$(CONFIG_FB_BFIN_LQ035Q1)     += bfin-lq035q1-fb.o
obj-$(CONFIG_FB_BFIN_T350MCQB)    += bfin-t350mcqb-fb.o
obj-$(CONFIG_FB_BFIN_7393)        += bfin_adv7393fb.o
obj-$(CONFIG_FB_MX3)          += mx3fb.o
obj-$(CONFIG_FB_DA8XX)        += da8xx-fb.o
obj-$(CONFIG_FB_MXS)          += mxsfb.o
obj-$(CONFIG_FB_SSD1307)      += ssd1307fb.o
obj-$(CONFIG_FB_SIMPLE)           += simplefb.o# the test framebuffer is last
obj-$(CONFIG_FB_VIRTUAL)          += vfb.o#video output switch sysfs driver
obj-$(CONFIG_VIDEO_OUTPUT_CONTROL) += output.o
obj-$(CONFIG_VIDEOMODE_HELPERS) += display_timing.o videomode.o
ifeq ($(CONFIG_OF),y)
obj-$(CONFIG_VIDEOMODE_HELPERS) += of_display_timing.o of_videomode.o
endif

设备树的修改

修改文件:

kernel\arch\arm\boot\dts\qcom\dsi-panel-ili9881c-720p-video.dtsi

修改“&mdss_mdp”中“dsi_ili9881c_720p_video: qcom,mdss_dsi_ili9881c_720p_video”中对应内容如下:

     qcom,mdss-dsi-panel-width = <1280>;qcom,mdss-dsi-panel-height = <720>;qcom,mdss-dsi-h-front-porch = <110>;qcom,mdss-dsi-h-back-porch = <220>;qcom,mdss-dsi-h-pulse-width = <40>;
     qcom,mdss-dsi-v-front-porch = <5>;qcom,mdss-dsi-v-pulse-width = <5>;

删除以下内容:

     qcom,mdss-dsi-color-order = "rgb_swap_rgb";
     qcom,mdss-dsi-on-command = [39 01 00 00 00 00 04 FF 98 81 03
39 01 00 00 00 00 02 01 00
39 01 00 00 00 00 02 02 00
39 01 00 00 00 00 02 03 73
39 01 00 00 00 00 02 04 03
39 01 00 00 00 00 02 05 00
39 01 00 00 00 00 02 06 06
39 01 00 00 00 00 02 07 06
39 01 00 00 00 00 02 08 00
39 01 00 00 00 00 02 09 18
39 01 00 00 00 00 02 0A 04
39 01 00 00 00 00 02 0B 00
39 01 00 00 00 00 02 0C 02
39 01 00 00 00 00 02 0D 03
39 01 00 00 00 00 02 0E 00
39 01 00 00 00 00 02 0F 25
39 01 00 00 00 00 02 10 25
39 01 00 00 00 00 02 11 00
39 01 00 00 00 00 02 12 00
39 01 00 00 00 00 02 13 00
39 01 00 00 00 00 02 14 00
39 01 00 00 00 00 02 15 00
39 01 00 00 00 00 02 16 0c
39 01 00 00 00 00 02 17 00
39 01 00 00 00 00 02 18 00
39 01 00 00 00 00 02 19 00
39 01 00 00 00 00 02 1A 00
39 01 00 00 00 00 02 1B 00
39 01 00 00 00 00 02 1C 00
39 01 00 00 00 00 02 1D 00
39 01 00 00 00 00 02 1E C0
39 01 00 00 00 00 02 1F 80
39 01 00 00 00 00 02 20 04
39 01 00 00 00 00 02 21 01
39 01 00 00 00 00 02 22 00
39 01 00 00 00 00 02 23 00
39 01 00 00 00 00 02 24 00
39 01 00 00 00 00 02 25 00
39 01 00 00 00 00 02 26 00
39 01 00 00 00 00 02 27 00
39 01 00 00 00 00 02 28 33
39 01 00 00 00 00 02 29 03
39 01 00 00 00 00 02 2A 00
39 01 00 00 00 00 02 2B 00
39 01 00 00 00 00 02 2C 00
39 01 00 00 00 00 02 2D 00
39 01 00 00 00 00 02 2E 00
39 01 00 00 00 00 02 2F 00
39 01 00 00 00 00 02 30 00
39 01 00 00 00 00 02 31 00
39 01 00 00 00 00 02 32 00
39 01 00 00 00 00 02 33 00
39 01 00 00 00 00 02 34 04
39 01 00 00 00 00 02 35 00
39 01 00 00 00 00 02 36 00
39 01 00 00 00 00 02 37 00
39 01 00 00 00 00 02 38 3c
39 01 00 00 00 00 02 39 00
39 01 00 00 00 00 02 3A 00
39 01 00 00 00 00 02 3B 00
39 01 00 00 00 00 02 3C 00
39 01 00 00 00 00 02 3D 00
39 01 00 00 00 00 02 3E 00
39 01 00 00 00 00 02 3F 00
39 01 00 00 00 00 02 40 00
39 01 00 00 00 00 02 41 00
39 01 00 00 00 00 02 42 00
39 01 00 00 00 00 02 43 00
39 01 00 00 00 00 02 44 00
39 01 00 00 00 00 02 50 01
39 01 00 00 00 00 02 51 23
39 01 00 00 00 00 02 52 45
39 01 00 00 00 00 02 53 67
39 01 00 00 00 00 02 54 89
39 01 00 00 00 00 02 55 ab
39 01 00 00 00 00 02 56 01
39 01 00 00 00 00 02 57 23
39 01 00 00 00 00 02 58 45
39 01 00 00 00 00 02 59 67
39 01 00 00 00 00 02 5A 89
39 01 00 00 00 00 02 5B ab
39 01 00 00 00 00 02 5C cd
39 01 00 00 00 00 02 5D ef
39 01 00 00 00 00 02 5E 11
39 01 00 00 00 00 02 5F 02
39 01 00 00 00 00 02 60 02
39 01 00 00 00 00 02 61 02
39 01 00 00 00 00 02 62 02
39 01 00 00 00 00 02 63 02
39 01 00 00 00 00 02 64 02
39 01 00 00 00 00 02 65 02
39 01 00 00 00 00 02 66 02
39 01 00 00 00 00 02 67 02
39 01 00 00 00 00 02 68 02
39 01 00 00 00 00 02 69 02
39 01 00 00 00 00 02 6A 0c
39 01 00 00 00 00 02 6B 02
39 01 00 00 00 00 02 6C 0f
39 01 00 00 00 00 02 6D 0e
39 01 00 00 00 00 02 6E 0d
39 01 00 00 00 00 02 6F 06
39 01 00 00 00 00 02 70 07
39 01 00 00 00 00 02 71 02
39 01 00 00 00 00 02 72 02
39 01 00 00 00 00 02 73 02
39 01 00 00 00 00 02 74 02
39 01 00 00 00 00 02 75 02
39 01 00 00 00 00 02 76 02
39 01 00 00 00 00 02 77 02
39 01 00 00 00 00 02 78 02
39 01 00 00 00 00 02 79 02
39 01 00 00 00 00 02 7A 02
39 01 00 00 00 00 02 7B 02
39 01 00 00 00 00 02 7C 02
39 01 00 00 00 00 02 7D 02
39 01 00 00 00 00 02 7E 02
39 01 00 00 00 00 02 7F 02
39 01 00 00 00 00 02 80 0c
39 01 00 00 00 00 02 81 02
39 01 00 00 00 00 02 82 0f
39 01 00 00 00 00 02 83 0e
39 01 00 00 00 00 02 84 0d
39 01 00 00 00 00 02 85 06
39 01 00 00 00 00 02 86 07
39 01 00 00 00 00 02 87 02
39 01 00 00 00 00 02 88 02
39 01 00 00 00 00 02 89 02
39 01 00 00 00 00 02 8A 02
39 01 00 00 00 00 04 FF 98 81 04
39 01 00 00 00 00 02 6c 15
39 01 00 00 00 00 02 6e 22
39 01 00 00 00 00 02 6f 33
39 01 00 00 00 00 02 3a a4
39 01 00 00 00 00 02 8d 0d
39 01 00 00 00 00 02 87 ba
39 01 00 00 00 00 02 26 76
39 01 00 00 00 00 02 b2 d1
39 01 00 00 00 00 04 FF 98 81 01
39 01 00 00 00 00 02 22 0a
39 01 00 00 00 00 02 53 be
39 01 00 00 00 00 02 55 a7
39 01 00 00 00 00 02 50 74
39 01 00 00 00 00 02 51 74
39 01 00 00 00 00 02 31 02
39 01 00 00 00 00 02 60 14
39 01 00 00 00 00 02 a0 15
39 01 00 00 00 00 02 a1 26
39 01 00 00 00 00 02 a2 2b
39 01 00 00 00 00 02 a3 14
39 01 00 00 00 00 02 a4 17
39 01 00 00 00 00 02 a5 2c
39 01 00 00 00 00 02 a6 20
39 01 00 00 00 00 02 a7 21
39 01 00 00 00 00 02 a8 95
39 01 00 00 00 00 02 a9 1d
39 01 00 00 00 00 02 aa 27
39 01 00 00 00 00 02 ab 89
39 01 00 00 00 00 02 ac 1a
39 01 00 00 00 00 02 ad 18
39 01 00 00 00 00 02 ae 4b
39 01 00 00 00 00 02 af 21
39 01 00 00 00 00 02 b0 26
39 01 00 00 00 00 02 b1 60
39 01 00 00 00 00 02 b2 71
39 01 00 00 00 00 02 b3 3f
39 01 00 00 00 00 02 c0 05
39 01 00 00 00 00 02 c1 26
39 01 00 00 00 00 02 c2 3f
39 01 00 00 00 00 02 c3 0f
39 01 00 00 00 00 02 c4 14
39 01 00 00 00 00 02 c5 27
39 01 00 00 00 00 02 c6 1a
39 01 00 00 00 00 02 c7 1e
39 01 00 00 00 00 02 c8 9e
39 01 00 00 00 00 02 c9 1a
39 01 00 00 00 00 02 ca 29
39 01 00 00 00 00 02 cb 82
39 01 00 00 00 00 02 cc 18
39 01 00 00 00 00 02 cd 16
39 01 00 00 00 00 02 ce 4c
39 01 00 00 00 00 02 cf 1f
39 01 00 00 00 00 02 d0 28
39 01 00 00 00 00 02 d1 53
39 01 00 00 00 00 02 d2 62
39 01 00 00 00 00 02 d3 3f
39 01 00 00 00 00 04 FF 98 81 00
05 01 00 00 78 00 02 11 00
05 01 00 00 0A 00 02 29 00
39 01 00 00 00 00 02 35 00];qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 0005 01 00 00 78 00 02 10 00];

修改以下内容:

     qcom,mdss-dsi-panel-timings = [7F 1C 12 00 40 44 16 1E 17 03 04 00];qcom,mdss-dsi-t-clk-post = <0x04>;qcom,mdss-dsi-t-clk-pre = <0x1B>;
     qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";qcom,mdss-dsi-reset-sequence = <1 20>, <0 20>, <1 120>;

完整的文件如下:

/* Copyright (c) 2013, The Linux Foundation. All rights reserved.** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 and* only version 2 as published by the Free Software Foundation.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.*//*---------------------------------------------------------------------------* 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"*---------------------------------------------------------------------------*/
&mdss_mdp {dsi_ili9881c_720p_video: qcom,mdss_dsi_ili9881c_720p_video {qcom,mdss-dsi-panel-name = "ili9881c 720p video mode dsi panel";qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;qcom,mdss-dsi-panel-type = "dsi_video_mode";qcom,mdss-dsi-panel-destination = "display_1";qcom,mdss-dsi-panel-framerate = <60>;qcom,mdss-dsi-virtual-channel-id = <0>;qcom,mdss-dsi-stream = <0>;qcom,mdss-dsi-panel-width = <1280>;qcom,mdss-dsi-panel-height = <720>;qcom,mdss-dsi-h-front-porch = <110>;qcom,mdss-dsi-h-back-porch = <220>;qcom,mdss-dsi-h-pulse-width = <40>;qcom,mdss-dsi-h-sync-skew = <0>;qcom,mdss-dsi-v-back-porch = <20>;qcom,mdss-dsi-v-front-porch = <5>;qcom,mdss-dsi-v-pulse-width = <5>;qcom,mdss-dsi-h-left-border = <0>;qcom,mdss-dsi-h-right-border = <0>;qcom,mdss-dsi-v-top-border = <0>;qcom,mdss-dsi-v-bottom-border = <0>;qcom,mdss-dsi-bpp = <24>;qcom,mdss-dsi-underflow-color = <0xff>;qcom,mdss-dsi-border-color = <0>;qcom,mdss-dsi-on-command-state = "dsi_lp_mode";qcom,mdss-dsi-off-command-state = "dsi_hs_mode";qcom,mdss-dsi-h-sync-pulse = <1>;qcom,mdss-dsi-traffic-mode = "burst_mode";qcom,mdss-dsi-lane-map = "lane_map_0123";qcom,mdss-dsi-bllp-eof-power-mode;qcom,mdss-dsi-bllp-power-mode;qcom,mdss-dsi-lane-0-state;qcom,mdss-dsi-lane-1-state;qcom,mdss-dsi-lane-2-state;qcom,mdss-dsi-lane-3-state;qcom,mdss-dsi-panel-timings = [7F 1C 12 00 40 44 16 1E 17 03 04 00];qcom,mdss-dsi-t-clk-post = <0x04>;qcom,mdss-dsi-t-clk-pre = <0x1B>;qcom,mdss-dsi-bl-min-level = <1>;qcom,mdss-dsi-bl-max-level = <4095>;qcom,mdss-dsi-dma-trigger = "trigger_sw";qcom,mdss-dsi-mdp-trigger = "none";qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";qcom,mdss-dsi-reset-sequence = <1 20>, <0 20>, <1 120>;qcom,mdss-dsi-post-init-delay = <4>;qcom,mdss-pan-physical-width-dimension = <59>;qcom,mdss-pan-physical-height-dimension = <104>;};
};

修改文件:

kernel\arch\arm\boot\dts\qcom\msm8909-mtp.dtsi

在“&soc”中“i2c@78b9000”加入

/*add by rid start*/lt8912@48 {compatible = "qcom,lt8912_dsi0";reg = <0x48>;instance_id = <0>;//adi,enable-audio;
//          pinctrl-names = "pmx_lt8912_active","pmx_lt8912_suspend";
//          pinctrl-0 = <&lt8912_dis0_int_active &lt8912_dis0_rst_active>;
//          pinctrl-1 = <&lt8912_dis0_int_suspend &lt8912_dis0_rst_suspend>;
//          avdd-supply= <&pm8953_l17>;
//          adi,irq-gpio = <&tlmm 24 0x2002>;
//          adi,rst-gpio = <&tlmm 61 0x2002>;};
/*add by rid end*/

修改“&i2c_1”中“mpu6050@68”对应内容如下:

     invn,place = "Portrait Down Back Side";

完整文件内容如下:

/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 and* only version 2 as published by the Free Software Foundation.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.*/#include "msm8909.dtsi"
#include "msm8909-pinctrl.dtsi"
#include "msm8909-camera-sensor-mtp.dtsi"
#include "msm8909-regulator.dtsi"&soc {gpio-clock {compatible = "qcom,gpio_clk";pwm-gpio = <31>;};/** DT node to add support for SMB135x charger and integrate* with VM-BMS.*/i2c@78b8000 {smb1357_otg_vreg: smb1357-charger@57 {compatible = "qcom,smb1357-charger";reg = <0x57>;interrupt-parent = <&msm_gpio>;interrupts = <58 8>;pinctrl-names = "default";pinctrl-0 = <&smb_int_default>;qcom,bmd-algo-disabled;qcom,float-voltage-mv = <4200>;qcom,charging-timeout = <1536>;qcom,recharge-thresh-mv = <100>;regulator-name = "smb1357_otg_vreg";qcom,soft-vfloat-comp-disabled;qcom,thermal-mitigation = <1500 700 600 0>;qcom,bms-psy-name = "bms";/** Disable SMB1357 based charging termination as BMS* controls charging.*/qcom,iterm-disabled;/** Disable charge inhibit feature to start chargin on* charger insertion independent of battery voltage.*/qcom,inhibit-disabled;/* BMS is controlling charging/re-charge */qcom,bms-controlled-charging;/** To enable charger node:* set status = "ok" and* add 'qcom,use-external-charger' to pm8909_chg node*/status = "disabled";};};i2c@78b9000 { /* BLSP1 QUP5 */goodix@5d {compatible = "goodix,gt9xx";reg = <0x5d>;interrupt-parent = <&msm_gpio>;interrupts = <13 0x2008>;reset-gpios = <&msm_gpio 12 0x0>;interrupt-gpios = <&msm_gpio 13 0x2008>;power-gpios = <&msm_gpio 23 0x0>;vcc-i2c-supply = <&pm8909_l6>;goodix,panel-coords = <0 0 719 1405>;goodix,display-coords = <0 0 719 1279>;goodix,button-map= <139 172 158>;goodix,enable-power-off;goodix,product-id = "9147";goodix,fw_name = "gtp_fw.bin";pinctrl-names = "pmx_ts_active","pmx_ts_suspend";pinctrl-0 = <&ts_int_active &ts_reset_active>;pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;goodix,cfg-data0 = [44 DA 02 05 05 05 35 C1 01 0928 08 48 35 03 05 00 00 FF 7F10 50 85 14 17 1A 14 92 00 0A31 2F D3 07 03 00 00 A2 33 1D00 01 00 00 00 1E 00 09 10 002A 1E 50 94 C5 02 00 0E 00 04B1 21 00 96 28 00 7F 31 00 6F3B 00 60 48 00 60 10 30 48 00F0 4A 3A FF EF 27 00 00 00 0000 01 1C 19 17 0F 01 00 01 0F0F 03 04 10 42 8F 0F 19 00 0046 37 08 0A 0C 0E 10 12 14 1618 1A 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 0000 00 08 20 0A 1F 0C 1E 0E 1D22 05 24 04 28 00 29 02 2A 0600 00 00 00 00 00 00 00 00 0000 FF FF FF FF FF FF FF FF AFFF FF FF FF 87 01];goodix,have-touch-key;goodix,driver-send-cfg;};goodix_ts@14 {compatible = "goodix,gt1x";reg = <0x14>;interrupt-parent = <&msm_gpio>;interrupts = <13 0x2008>;goodix,rst-gpio  = <&msm_gpio 12 0x0>;goodix,irq-gpio = <&msm_gpio 13 0x2008>;goodix,power-gpio = <&msm_gpio 23 0x0>;//vdd_ana-supply = <&pm8909_l17>;vcc_i2c-supply  = <&pm8909_l6>;pinctrl-names = "pmx_ts_active","pmx_ts_suspend";pinctrl-0 = <&ts_int_active &ts_reset_active>;pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;};
/*add by rid start*/lt8912@48 {compatible = "qcom,lt8912_dsi0";reg = <0x48>;instance_id = <0>;//adi,enable-audio;
//          pinctrl-names = "pmx_lt8912_active","pmx_lt8912_suspend";
//          pinctrl-0 = <&lt8912_dis0_int_active &lt8912_dis0_rst_active>;
//          pinctrl-1 = <&lt8912_dis0_int_suspend &lt8912_dis0_rst_suspend>;
//          avdd-supply= <&pm8953_l17>;
//          adi,irq-gpio = <&tlmm 24 0x2002>;
//          adi,rst-gpio = <&tlmm 61 0x2002>;};
/*add by rid end*/};gen-vkeys {compatible = "qcom,gen-vkeys";label = "synaptics_dsx";qcom,disp-maxx = <719>;qcom,disp-maxy = <1279>;qcom,panel-maxx = <719>;qcom,panel-maxy = <1405>;qcom,key-codes = <158 139 172 217>;};i2c@78b6000 { /* BLSP1 QUP2 */nfc-nci@e {compatible = "qcom,nfc-nci";reg = <0x0e>;qcom,irq-gpio = <&msm_gpio 21 0x00>;qcom,dis-gpio = <&msm_gpio 20 0x00>;qcom,clk-src = "BBCLK2";interrupt-parent = <&msm_gpio>;interrupts = <21 0>;interrupt-names = "nfc_irq";pinctrl-names = "nfc_active","nfc_suspend";pinctrl-0 = <&nfc_int_active &nfc_disable_active>;pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;qcom,clk-gpio = <&pm8909_gpios 2 0>;clocks = <&clock_rpm clk_bb_clk2_pin>;clock-names = "ref_clk";};nq@28 {compatible = "qcom,nq-nci";reg = <0x28>;qcom,nq-irq = <&msm_gpio 21 0x00>;qcom,nq-ven = <&msm_gpio 20 0x00>;qcom,nq-firm = <&msm_gpio 45 0x00>;qcom,clk-src = "BBCLK2";interrupt-parent = <&msm_gpio>;interrupts = <21 0>;interrupt-names = "nfc_irq";pinctrl-names = "nfc_active","nfc_suspend";pinctrl-0 = <&nfc_int_active &nfc_disable_active>;pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>;clocks = <&clock_rpm clk_bb_clk2_pin>;clock-names = "ref_clk";};};gpio_keys {compatible = "gpio-keys";input-name = "gpio-keys";pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";pinctrl-0 = <&gpio_key_active>;pinctrl-1 = <&gpio_key_suspend>;camera_focus {label = "camera_focus";gpios = <&msm_gpio 93 0x1>;linux,input-type = <1>;linux,code = <0x210>;//  gpio-key,wakeup;    //law:del for system sleep abnormal,before modify sleep-current is 22mA ,after sleep-current is 7mA 2015-12-19debounce-interval = <15>;};camera_snapshot {label = "camera_snapshot";gpios = <&msm_gpio 92 0x1>;linux,input-type = <1>;linux,code = <0x2fe>;gpio-key,wakeup;debounce-interval = <15>;};vol_up {label = "volume_up";gpios = <&msm_gpio 90 0x1>;linux,input-type = <1>;linux,code = <115>;gpio-key,wakeup;debounce-interval = <15>;};vol_down {label = "volume_down";gpios = <&msm_gpio 91 0x1>;linux,input-type = <1>;linux,code = <114>;gpio-key,wakeup;debounce-interval = <15>;};home {label = "home";gpios = <&msm_gpio 11 0x1>;linux,input-type = <1>;linux,code = <102>;gpio-key,wakeup;debounce-interval = <15>;};menu {label = "menu";gpios = <&msm_gpio 17 0x1>;linux,input-type = <1>;linux,code = <139>;//  gpio-key,wakeup;    //law:del for system sleep abnormal,before modify sleep-current is 22mA ,after sleep-current is 7mA 2015-12-19debounce-interval = <15>;};back {label = "back";gpios = <&msm_gpio 98 0x1>;linux,input-type = <1>;linux,code = <158>;gpio-key,wakeup;debounce-interval = <15>;};};audio_codec_mtp: sound {compatible = "qcom,msm8x16-audio-codec";qcom,model = "msm8909-snd-card";qcom,msm-snd-card-id = <0>;qcom,msm-codec-type = "internal";qcom,msm-ext-pa = "primary";qcom,msm-mclk-freq = <9600000>;qcom,msm-mbhc-hphl-swh = <1>;     /*joseph modified*/qcom,msm-mbhc-gnd-swh = <0>;qcom,msm-hs-micbias-type = "internal";qcom,msm-micbias1-ext-cap;qcom,audio-routing ="RX_BIAS", "MCLK","SPK_RX_BIAS", "MCLK","INT_LDO_H", "MCLK","MIC BIAS Internal1", "Handset Mic",      /**joseph modified for internal bias**/"MIC BIAS Internal2", "Headset Mic","MIC BIAS Internal1", "Secondary Mic","AMIC1", "MIC BIAS Internal1","AMIC2", "MIC BIAS Internal2","AMIC3", "MIC BIAS Internal1";pinctrl-names = "cdc_lines_act","cdc_lines_sus","cross_conn_det_act","cross_conn_det_sus";pinctrl-0 = <&cdc_pdm_lines_act>;pinctrl-1 = <&cdc_pdm_lines_sus>;pinctrl-2 = <&cross_conn_det_act>;pinctrl-3 = <&cross_conn_det_sus>;qcom,cdc-us-euro-gpios = <&msm_gpio 97 0>;asoc-platform = <&pcm0>, <&pcm1>, <&voip>, <&voice>,<&loopback>, <&compress>, <&hostless>,<&afe>, <&lsm>, <&routing>, <&lpa>,<&voice_svc>;asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1","msm-voip-dsp", "msm-pcm-voice", "msm-pcm-loopback","msm-compress-dsp", "msm-pcm-hostless", "msm-pcm-afe","msm-lsm-client", "msm-pcm-routing", "msm-pcm-lpa","msm-voice-svc";asoc-cpu = <&dai_pri_auxpcm>, <&dai_hdmi>,<&dai_mi2s0>, <&dai_mi2s1>, <&dai_mi2s2>, <&dai_mi2s3>,<&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,<&sb_3_rx>, <&sb_3_tx>, <&sb_4_rx>, <&sb_4_tx>,<&bt_sco_rx>, <&bt_sco_tx>,<&bt_a2dp_rx>,<&int_fm_rx>, <&int_fm_tx>,<&afe_pcm_rx>, <&afe_pcm_tx>, <&afe_proxy_rx>, <&afe_proxy_tx>,<&incall_record_rx>, <&incall_record_tx>, <&incall_music_rx>,<&incall_music_2_rx>;asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-hdmi.8","msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1","msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3","msm-dai-q6-dev.16384", "msm-dai-q6-dev.16385","msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387","msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391","msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393","msm-dai-q6-dev.12288", "msm-dai-q6-dev.12289","msm-dai-q6-dev.12290", "msm-dai-q6-dev.12292","msm-dai-q6-dev.12293", "msm-dai-q6-dev.224","msm-dai-q6-dev.225", "msm-dai-q6-dev.241","msm-dai-q6-dev.240", "msm-dai-q6-dev.32771","msm-dai-q6-dev.32772", "msm-dai-q6-dev.32773","msm-dai-q6-dev.32770";asoc-codec = <&stub_codec>, <&pm8909_conga_dig>;asoc-codec-names = "msm-stub-codec.1", "tombak_codec";};
};&blsp1_uart1 {status = "ok";pinctrl-names = "default";pinctrl-0 = <&uart_console_sleep>;
};/*add by evan.hai for ttyHSL1*/
&blsp1_uart2 {status = "ok";pinctrl-names = "default";pinctrl-0 = <&uart_console_sleep1>;
};/ {mtp_batterydata: qcom,battery-data {qcom,rpull-up-kohm = <100>;qcom,vref-batt-therm = <1800000>;#include "batterydata-palladium.dtsi"};
};&qcom_rng {status = "okay";
};&qcom_crypto {status = "okay";
};&qcom_cedev {status = "okay";
};&qcom_seecom {status = "okay";
};&qcom_tzlog {status = "okay";
};&sdhc_1 {vdd-supply = <&pm8909_l8>;qcom,vdd-voltage-level = <2900000 2900000>;qcom,vdd-current-level = <200 400000>;vdd-io-supply = <&pm8909_l5>;qcom,vdd-io-always-on;qcom,vdd-io-lpm-sup;qcom,vdd-io-voltage-level = <1800000 1800000>;qcom,vdd-io-current-level = <200 60000>;pinctrl-names = "active", "sleep";pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";qcom,nonremovable;status = "ok";
};
//law---2016.4.14-11:47----modify for usb otg-------&usb_otg {interrupts = <0 134 0>,<0 140 0>,<0 136 0>;interrupt-names = "core_irq", "async_irq", "phy_irq";qcom,hsusb-otg-mode = <3>;vbus_otg-supply = <&oem_otg_ext_vreg>;
};
//------------------end-----------------------------
&sdhc_2 {#address-cells = <0>;interrupt-parent = <&sdhc_2>;interrupts = <0 1 2>;#interrupt-cells = <1>;interrupt-map-mask = <0xffffffff>;interrupt-map = <0 &intc 0 125 01 &intc 0 221 02 &msm_gpio 38 0>;interrupt-names = "hc_irq", "pwr_irq", "status_irq";cd-gpios = <&msm_gpio 38 0x1>;vdd-supply = <&pm8909_l11>;qcom,vdd-voltage-level = <1800000 2950000>;qcom,vdd-current-level = <15000 400000>;vdd-io-supply = <&pm8909_l12>;qcom,vdd-io-voltage-level = <1800000 2950000>;qcom,vdd-io-current-level = <200 50000>;pinctrl-names = "active", "sleep";pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;status = "ok";
};&tlmm_pinmux {mpu6050_int_pin {qcom,pins = <&gp 96>;qcom,pin-func = <0>;qcom,num-grp-pins = <1>;label = "mpu6050-irq";mpu6050_default: mpu6050_default {drive-strength = <6>;bias-pull-down;};mpu6050_sleep: mpu6050_sleep {drive-strength = <2>;bias-pull-down;};};apds99xx_int_pin {qcom,pins = <&gp 94>;qcom,pin-func = <0>;qcom,num-grp-pins = <1>;label = "apds99xx-irq";apds99xx_default: apds99xx_default {drive-strength = <6>;bias-pull-up;};apds99xx_sleep: apds99xx_sleep {drive-strength = <2>;bias-pull-down;};};ak8963_int_pin {qcom,pins = <&gp 65>;qcom,pin-func = <0>;qcom,num-grp-pins = <1>;label = "ak8963-irq";ak8963_default: ak8963_default {drive-strength = <6>;bias-pull-up;};ak8963_sleep: ak8963_sleep {drive-strength = <2>;bias-pull-down;};};
};&i2c_1 { /* BLSP1 QUP1 */mpu6050@68 { /* Gyroscope and accelerometer sensor combo */compatible = "invn,mpu6050";reg = <0x68>;pinctrl-names = "mpu_default","mpu_sleep";pinctrl-0 = <&mpu6050_default>;pinctrl-1 = <&mpu6050_sleep>;interrupt-parent = <&msm_gpio>;interrupts = <96 0x1>;vdd-supply = <&pm8909_l17>;vlogic-supply = <&pm8909_l6>;invn,gpio-int = <&msm_gpio 96 0x1>;invn,place = "Portrait Down Back Side";};avago@39 { /* Ambient light and proximity sensor */compatible = "avago,apds9900";reg = <0x39>;pinctrl-names = "default","sleep";pinctrl-0 = <&apds99xx_default>;pinctrl-1 = <&apds99xx_sleep>;interrupt-parent = <&msm_gpio>;interrupts = <94 0x2002>;vdd-supply = <&pm8909_l17>;vio-supply = <&pm8909_l6>;avago,irq-gpio = <&msm_gpio 94 0x2002>;avago,ps-threshold = <600>;avago,ps-hysteresis-threshold = <500>;avago,ps-pulse = <8>;avago,ps-pgain = <0>;avago,als-B = <186>;avago,als-C = <75>;avago,als-D = <129>;avago,ga-value = <256>;};memsic@30 { /* Magnetic field sensor */compatible = "memsic,mmc3416x";reg = <0x30>;vdd-supply = <&pm8909_l17>;vio-supply = <&pm8909_l6>;memsic,dir = "obverse-x-axis-forward";memsic,auto-report;};akm@c { /* Magnetic field sensor */compatible = "ak,ak8963";reg = <0x0c>;pinctrl-names = "ak8963_default", "ak8963_sleep";pinctrl-0 = <&ak8963_default>;pinctrl-1 = <&ak8963_sleep>;interrupt-parent = <&msm_gpio>;interrupts = <65 0x2>;vdd-supply = <&pm8909_l17>;vio-supply = <&pm8909_l6>;ak,layout = <0x6>;ak,auto-report;};stk@48 {/*law modify for p-sensor--------2015.11.18-13:07*/compatible = "stk,stk3x1x";reg = <0x48>;interrupt-parent = <&msm_gpio>;interrupts = <94 0x2>;vdd-supply = <&pm8909_l17>;vio-supply = <&pm8909_l6>;stk,irq-gpio = <&msm_gpio 94 0x02>;stk,transmittance = <500>;stk,state-reg = <0x00>;stk,psctrl-reg = <0x71>;stk,alsctrl-reg = <0x38>;stk,ledctrl-reg = <0xFF>;stk,wait-reg = <0x07>;stk,ps-thdh = <1700>;stk,ps-thdl = <1500>;stk,use-fir;};};#include "dsi-panel-auo-qvga-cmd.dtsi"
#include "dsi-panel-auo-cx-qvga-cmd.dtsi"
#include "dsi-panel-hx8394d-480p-video.dtsi"
#include "dsi-panel-hx8394d-720p-video.dtsi"
#include "dsi-panel-hx8394d-qhd-video.dtsi"
#include "dsi-panel-ili9881c-720p-video.dtsi"
#include "dsi-panel-hx8394f-720p-video.dtsi"&mdss_mdp {qcom,mdss-pref-prim-intf = "dsi";
};&dsi_hx8394f_720p_video {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&dsi_ili9881c_720p_video {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&dsi_auo_cx_qvga_cmd {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&dsi_auo_qvga_cmd {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&dsi_hx8394d_480_vid {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&dsi_hx8394d_720_vid {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&dsi_hx8394d_qhd_vid {qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;qcom,mdss-dsi-bl-pmic-bank-select = <0>;qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;qcom,cont-splash-enabled;
};&pmx_mdss {qcom,num-grp-pins = <2>;qcom,pins = <&gp 25>, <&gp 95>;
};&pmx_mdss_te {qcom,num-grp-pins = <1>;qcom,pins = <&gp 24>;
};&mdss_dsi0 {qcom,dsi-pref-prim-pan = <&dsi_ili9881c_720p_video>;pinctrl-names = "mdss_default", "mdss_sleep";pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;qcom,platform-enable-gpio = <&msm_gpio 95 0>;qcom,platform-reset-gpio = <&msm_gpio 25 0>;//qcom,platform-bklight-en-gpio = <&msm_gpio 37 0>;
};/* CoreSight */
&tpiu {pinctrl-names = "sdcard", "trace", "swduart","swdtrc", "jtag", "spmi";/* NIDnT */pinctrl-0 = <&qdsd_clk_sdcard &qdsd_cmd_sdcard&qdsd_data0_sdcard &qdsd_data1_sdcard&qdsd_data2_sdcard &qdsd_data3_sdcard>;pinctrl-1 = <&qdsd_clk_trace &qdsd_cmd_trace&qdsd_data0_trace &qdsd_data1_trace&qdsd_data2_trace &qdsd_data3_trace>;pinctrl-2 = <&qdsd_cmd_swduart &qdsd_data0_swduart&qdsd_data1_swduart &qdsd_data2_swduart&qdsd_data3_swduart>;pinctrl-3 = <&qdsd_clk_swdtrc &qdsd_cmd_swdtrc&qdsd_data0_swdtrc &qdsd_data1_swdtrc&qdsd_data2_swdtrc &qdsd_data3_swdtrc>;pinctrl-4 = <&qdsd_cmd_jtag &qdsd_data0_jtag&qdsd_data1_jtag &qdsd_data2_jtag&qdsd_data3_jtag>;pinctrl-5 = <&qdsd_clk_spmi &qdsd_cmd_spmi&qdsd_data0_spmi &qdsd_data3_spmi>;
};

Bootloader(LK)的修改

修改文件:

bootable\bootloader\lk\dev\gcdb\display\include\panel_ili9881c_720p_video.h

修改“panel_resolution ili9881c_720p_video_panel_res”如下:

static struct panel_resolution ili9881c_720p_video_panel_res = {1280, 720, 110, 220, 40, 0, 5, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

删除,注释掉以下内容,如下:

/*static char ili9881c_720p_video_on_cmd0[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x03,
};static char ili9881c_720p_video_on_cmd1[] = {0x02, 0x00, 0x39, 0xC0,0x01, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd2[] = {0x02, 0x00, 0x39, 0xC0,0x02, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd3[] = {0x02, 0x00, 0x39, 0xC0,0x03, 0x73, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd4[] = {0x02, 0x00, 0x39, 0xC0,0x04, 0x03, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd5[] = {0x02, 0x00, 0x39, 0xC0,0x05, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd6[] = {0x02, 0x00, 0x39, 0xC0,0x06, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd7[] = {0x02, 0x00, 0x39, 0xC0,0x07, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd8[] = {0x02, 0x00, 0x39, 0xC0,0x08, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd9[] = {0x02, 0x00, 0x39, 0xC0,0x09, 0x18, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd10[] = {0x02, 0x00, 0x39, 0xC0,0x0A, 0x04, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd11[] = {0x02, 0x00, 0x39, 0xC0,0x0B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd12[] = {0x02, 0x00, 0x39, 0xC0,0x0C, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd13[] = {0x02, 0x00, 0x39, 0xC0,0x0D, 0x03, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd14[] = {0x02, 0x00, 0x39, 0xC0,0x0E, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd15[] = {0x02, 0x00, 0x39, 0xC0,0x0F, 0x25, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd16[] = {0x02, 0x00, 0x39, 0xC0,0x10, 0x25, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd17[] = {0x02, 0x00, 0x39, 0xC0,0x11, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd18[] = {0x02, 0x00, 0x39, 0xC0,0x12, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd19[] = {0x02, 0x00, 0x39, 0xC0,0x13, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd20[] = {0x02, 0x00, 0x39, 0xC0,0x14, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd21[] = {0x02, 0x00, 0x39, 0xC0,0x15, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd22[] = {0x02, 0x00, 0x39, 0xC0,0x16, 0x0c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd23[] = {0x02, 0x00, 0x39, 0xC0,0x17, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd24[] = {0x02, 0x00, 0x39, 0xC0,0x18, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd25[] = {0x02, 0x00, 0x39, 0xC0,0x19, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd26[] = {0x02, 0x00, 0x39, 0xC0,0x1A, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd27[] = {0x02, 0x00, 0x39, 0xC0,0x1B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd28[] = {0x02, 0x00, 0x39, 0xC0,0x1C, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd29[] = {0x02, 0x00, 0x39, 0xC0,0x1D, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd30[] = {0x02, 0x00, 0x39, 0xC0,0x1E, 0xC0, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd31[] = {0x02, 0x00, 0x39, 0xC0,0x1F, 0x80, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd32[] = {0x02, 0x00, 0x39, 0xC0,0x20, 0x04, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd33[] = {0x02, 0x00, 0x39, 0xC0,0x21, 0x01, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd34[] = {0x02, 0x00, 0x39, 0xC0,0x22, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd35[] = {0x02, 0x00, 0x39, 0xC0,0x23, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd36[] = {0x02, 0x00, 0x39, 0xC0,0x24, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd37[] = {0x02, 0x00, 0x39, 0xC0,0x25, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd38[] = {0x02, 0x00, 0x39, 0xC0,0x26, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd39[] = {0x02, 0x00, 0x39, 0xC0,0x27, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd40[] = {0x02, 0x00, 0x39, 0xC0,0x28, 0x33, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd41[] = {0x02, 0x00, 0x39, 0xC0,0x29, 0x03, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd42[] = {0x02, 0x00, 0x39, 0xC0,0x2A, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd43[] = {0x02, 0x00, 0x39, 0xC0,0x2B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd44[] = {0x02, 0x00, 0x39, 0xC0,0x2C, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd45[] = {0x02, 0x00, 0x39, 0xC0,0x2D, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd46[] = {0x02, 0x00, 0x39, 0xC0,0x2E, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd47[] = {0x02, 0x00, 0x39, 0xC0,0x2F, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd48[] = {0x02, 0x00, 0x39, 0xC0,0x30, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd49[] = {0x02, 0x00, 0x39, 0xC0,0x31, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd50[] = {0x02, 0x00, 0x39, 0xC0,0x32, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd51[] = {0x02, 0x00, 0x39, 0xC0,0x33, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd52[] = {0x02, 0x00, 0x39, 0xC0,0x34, 0x04, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd53[] = {0x02, 0x00, 0x39, 0xC0,0x35, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd54[] = {0x02, 0x00, 0x39, 0xC0,0x36, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd55[] = {0x02, 0x00, 0x39, 0xC0,0x37, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd56[] = {0x02, 0x00, 0x39, 0xC0,0x38, 0x3c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd57[] = {0x02, 0x00, 0x39, 0xC0,0x39, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd58[] = {0x02, 0x00, 0x39, 0xC0,0x3A, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd59[] = {0x02, 0x00, 0x39, 0xC0,0x3B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd60[] = {0x02, 0x00, 0x39, 0xC0,0x3C, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd61[] = {0x02, 0x00, 0x39, 0xC0,0x3D, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd62[] = {0x02, 0x00, 0x39, 0xC0,0x3E, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd63[] = {0x02, 0x00, 0x39, 0xC0,0x3F, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd64[] = {0x02, 0x00, 0x39, 0xC0,0x40, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd65[] = {0x02, 0x00, 0x39, 0xC0,0x41, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd66[] = {0x02, 0x00, 0x39, 0xC0,0x42, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd67[] = {0x02, 0x00, 0x39, 0xC0,0x43, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd68[] = {0x02, 0x00, 0x39, 0xC0,0x44, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd69[] = {0x02, 0x00, 0x39, 0xC0,0x50, 0x01, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd70[] = {0x02, 0x00, 0x39, 0xC0,0x51, 0x23, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd71[] = {0x02, 0x00, 0x39, 0xC0,0x52, 0x45, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd72[] = {0x02, 0x00, 0x39, 0xC0,0x53, 0x67, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd73[] = {0x02, 0x00, 0x39, 0xC0,0x54, 0x89, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd74[] = {0x02, 0x00, 0x39, 0xC0,0x55, 0xab, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd75[] = {0x02, 0x00, 0x39, 0xC0,0x56, 0x01, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd76[] = {0x02, 0x00, 0x39, 0xC0,0x57, 0x23, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd77[] = {0x02, 0x00, 0x39, 0xC0,0x58, 0x45, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd78[] = {0x02, 0x00, 0x39, 0xC0,0x59, 0x67, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd79[] = {0x02, 0x00, 0x39, 0xC0,0x5A, 0x89, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd80[] = {0x02, 0x00, 0x39, 0xC0,0x5B, 0xab, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd81[] = {0x02, 0x00, 0x39, 0xC0,0x5C, 0xcd, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd82[] = {0x02, 0x00, 0x39, 0xC0,0x5D, 0xef, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd83[] = {0x02, 0x00, 0x39, 0xC0,0x5E, 0x11, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd84[] = {0x02, 0x00, 0x39, 0xC0,0x5F, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd85[] = {0x02, 0x00, 0x39, 0xC0,0x60, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd86[] = {0x02, 0x00, 0x39, 0xC0,0x61, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd87[] = {0x02, 0x00, 0x39, 0xC0,0x62, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd88[] = {0x02, 0x00, 0x39, 0xC0,0x63, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd89[] = {0x02, 0x00, 0x39, 0xC0,0x64, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd90[] = {0x02, 0x00, 0x39, 0xC0,0x65, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd91[] = {0x02, 0x00, 0x39, 0xC0,0x66, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd92[] = {0x02, 0x00, 0x39, 0xC0,0x67, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd93[] = {0x02, 0x00, 0x39, 0xC0,0x68, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd94[] = {0x02, 0x00, 0x39, 0xC0,0x69, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd95[] = {0x02, 0x00, 0x39, 0xC0,0x6A, 0x0c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd96[] = {0x02, 0x00, 0x39, 0xC0,0x6B, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd97[] = {0x02, 0x00, 0x39, 0xC0,0x6C, 0x0f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd98[] = {0x02, 0x00, 0x39, 0xC0,0x6D, 0x0e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd99[] = {0x02, 0x00, 0x39, 0xC0,0x6E, 0x0d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd100[] = {0x02, 0x00, 0x39, 0xC0,0x6F, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd101[] = {0x02, 0x00, 0x39, 0xC0,0x70, 0x07, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd102[] = {0x02, 0x00, 0x39, 0xC0,0x71, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd103[] = {0x02, 0x00, 0x39, 0xC0,0x72, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd104[] = {0x02, 0x00, 0x39, 0xC0,0x73, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd105[] = {0x02, 0x00, 0x39, 0xC0,0x74, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd106[] = {0x02, 0x00, 0x39, 0xC0,0x75, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd107[] = {0x02, 0x00, 0x39, 0xC0,0x76, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd108[] = {0x02, 0x00, 0x39, 0xC0,0x77, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd109[] = {0x02, 0x00, 0x39, 0xC0,0x78, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd110[] = {0x02, 0x00, 0x39, 0xC0,0x79, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd111[] = {0x02, 0x00, 0x39, 0xC0,0x7A, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd112[] = {0x02, 0x00, 0x39, 0xC0,0x7B, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd113[] = {0x02, 0x00, 0x39, 0xC0,0x7C, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd114[] = {0x02, 0x00, 0x39, 0xC0,0x7D, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd115[] = {0x02, 0x00, 0x39, 0xC0,0x7E, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd116[] = {0x02, 0x00, 0x39, 0xC0,0x7F, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd117[] = {0x02, 0x00, 0x39, 0xC0,0x80, 0x0c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd118[] = {0x02, 0x00, 0x39, 0xC0,0x81, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd119[] = {0x02, 0x00, 0x39, 0xC0,0x82, 0x0f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd120[] = {0x02, 0x00, 0x39, 0xC0,0x83, 0x0e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd121[] = {0x02, 0x00, 0x39, 0xC0,0x84, 0x0d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd122[] = {0x02, 0x00, 0x39, 0xC0,0x85, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd123[] = {0x02, 0x00, 0x39, 0xC0,0x86, 0x07, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd124[] = {0x02, 0x00, 0x39, 0xC0,0x87, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd125[] = {0x02, 0x00, 0x39, 0xC0,0x88, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd126[] = {0x02, 0x00, 0x39, 0xC0,0x89, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd127[] = {0x02, 0x00, 0x39, 0xC0,0x8A, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd128[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x04,
};static char ili9881c_720p_video_on_cmd129[] = {0x02, 0x00, 0x39, 0xC0,0x6c, 0x15, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd130[] = {0x02, 0x00, 0x39, 0xC0,0x6e, 0x22, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd131[] = {0x02, 0x00, 0x39, 0xC0,0x6f, 0x33, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd132[] = {0x02, 0x00, 0x39, 0xC0,0x3a, 0xa4, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd133[] = {0x02, 0x00, 0x39, 0xC0,0x8d, 0x0d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd134[] = {0x02, 0x00, 0x39, 0xC0,0x87, 0xba, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd135[] = {0x02, 0x00, 0x39, 0xC0,0x26, 0x76, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd136[] = {0x02, 0x00, 0x39, 0xC0,0xb2, 0xd1, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd137[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x01,
};static char ili9881c_720p_video_on_cmd138[] = {0x02, 0x00, 0x39, 0xC0,0x22, 0x0a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd139[] = {0x02, 0x00, 0x39, 0xC0,0x53, 0xbe, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd140[] = {0x02, 0x00, 0x39, 0xC0,0x55, 0xa7, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd141[] = {0x02, 0x00, 0x39, 0xC0,0x50, 0x74, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd142[] = {0x02, 0x00, 0x39, 0xC0,0x51, 0x74, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd143[] = {0x02, 0x00, 0x39, 0xC0,0x31, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd144[] = {0x02, 0x00, 0x39, 0xC0,0x60, 0x14, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd145[] = {0x02, 0x00, 0x39, 0xC0,0xa0, 0x15, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd146[] = {0x02, 0x00, 0x39, 0xC0,0xa1, 0x26, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd147[] = {0x02, 0x00, 0x39, 0xC0,0xa2, 0x2b, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd148[] = {0x02, 0x00, 0x39, 0xC0,0xa3, 0x14, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd149[] = {0x02, 0x00, 0x39, 0xC0,0xa4, 0x17, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd150[] = {0x02, 0x00, 0x39, 0xC0,0xa5, 0x2c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd151[] = {0x02, 0x00, 0x39, 0xC0,0xa6, 0x20, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd152[] = {0x02, 0x00, 0x39, 0xC0,0xa7, 0x21, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd153[] = {0x02, 0x00, 0x39, 0xC0,0xa8, 0x95, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd154[] = {0x02, 0x00, 0x39, 0xC0,0xa9, 0x1d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd155[] = {0x02, 0x00, 0x39, 0xC0,0xaa, 0x27, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd156[] = {0x02, 0x00, 0x39, 0xC0,0xab, 0x89, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd157[] = {0x02, 0x00, 0x39, 0xC0,0xac, 0x1a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd158[] = {0x02, 0x00, 0x39, 0xC0,0xad, 0x18, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd159[] = {0x02, 0x00, 0x39, 0xC0,0xae, 0x4b, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd160[] = {0x02, 0x00, 0x39, 0xC0,0xaf, 0x21, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd161[] = {0x02, 0x00, 0x39, 0xC0,0xb0, 0x26, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd162[] = {0x02, 0x00, 0x39, 0xC0,0xb1, 0x60, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd163[] = {0x02, 0x00, 0x39, 0xC0,0xb2, 0x71, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd164[] = {0x02, 0x00, 0x39, 0xC0,0xb3, 0x3f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd165[] = {0x02, 0x00, 0x39, 0xC0,0xc0, 0x05, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd166[] = {0x02, 0x00, 0x39, 0xC0,0xc1, 0x26, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd167[] = {0x02, 0x00, 0x39, 0xC0,0xc2, 0x3f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd168[] = {0x02, 0x00, 0x39, 0xC0,0xc3, 0x0f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd169[] = {0x02, 0x00, 0x39, 0xC0,0xc4, 0x14, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd170[] = {0x02, 0x00, 0x39, 0xC0,0xc5, 0x27, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd171[] = {0x02, 0x00, 0x39, 0xC0,0xc6, 0x1a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd172[] = {0x02, 0x00, 0x39, 0xC0,0xc7, 0x1e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd173[] = {0x02, 0x00, 0x39, 0xC0,0xc8, 0x9e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd174[] = {0x02, 0x00, 0x39, 0xC0,0xc9, 0x1a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd175[] = {0x02, 0x00, 0x39, 0xC0,0xca, 0x29, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd176[] = {0x02, 0x00, 0x39, 0xC0,0xcb, 0x82, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd177[] = {0x02, 0x00, 0x39, 0xC0,0xcc, 0x18, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd178[] = {0x02, 0x00, 0x39, 0xC0,0xcd, 0x16, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd179[] = {0x02, 0x00, 0x39, 0xC0,0xce, 0x4c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd180[] = {0x02, 0x00, 0x39, 0xC0,0xcf, 0x1f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd181[] = {0x02, 0x00, 0x39, 0xC0,0xd0, 0x28, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd182[] = {0x02, 0x00, 0x39, 0xC0,0xd1, 0x53, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd183[] = {0x02, 0x00, 0x39, 0xC0,0xd2, 0x62, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd184[] = {0x02, 0x00, 0x39, 0xC0,0xd3, 0x3f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd185[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x00,
};static char ili9881c_720p_video_on_cmd186[] = {0x11, 0x00, 0x05, 0x80
};static char ili9881c_720p_video_on_cmd187[] = {0x29, 0x00, 0x05, 0x80
};static char ili9881c_720p_video_on_cmd188[] = {0x02, 0x00, 0x39, 0xC0,0x35, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd189[] = {0x04, 0x00, 0x39, 0xC0,0xff, 0x98, 0x81, 0x01,
};static char ili9881c_720p_video_on_cmd190[] = {0x37, 0x00, 0x05, 0x80,
};static struct mipi_dsi_cmd ili9881c_720p_video_on_command[] = {{0x8, ili9881c_720p_video_on_cmd0, 0x00},{0x8, ili9881c_720p_video_on_cmd1, 0x00},{0x8, ili9881c_720p_video_on_cmd2, 0x00},{0x8, ili9881c_720p_video_on_cmd3, 0x00},{0x8, ili9881c_720p_video_on_cmd4, 0x00},{0x8, ili9881c_720p_video_on_cmd5, 0x00},{0x8, ili9881c_720p_video_on_cmd6, 0x00},{0x8, ili9881c_720p_video_on_cmd7, 0x00},{0x8, ili9881c_720p_video_on_cmd8, 0x00},{0x8, ili9881c_720p_video_on_cmd9, 0x00},{0x8, ili9881c_720p_video_on_cmd10, 0x00},{0x8, ili9881c_720p_video_on_cmd11, 0x00},{0x8, ili9881c_720p_video_on_cmd12, 0x00},{0x8, ili9881c_720p_video_on_cmd13, 0x00},{0x8, ili9881c_720p_video_on_cmd14, 0x00},{0x8, ili9881c_720p_video_on_cmd15, 0x00},{0x8, ili9881c_720p_video_on_cmd16, 0x00},{0x8, ili9881c_720p_video_on_cmd17, 0x00},{0x8, ili9881c_720p_video_on_cmd18, 0x00},{0x8, ili9881c_720p_video_on_cmd19, 0x00},{0x8, ili9881c_720p_video_on_cmd20, 0x00},{0x8, ili9881c_720p_video_on_cmd21, 0x00},{0x8, ili9881c_720p_video_on_cmd22, 0x00},{0x8, ili9881c_720p_video_on_cmd23, 0x00},{0x8, ili9881c_720p_video_on_cmd24, 0x00},{0x8, ili9881c_720p_video_on_cmd25, 0x00},{0x8, ili9881c_720p_video_on_cmd26, 0x00},{0x8, ili9881c_720p_video_on_cmd27, 0x00},{0x8, ili9881c_720p_video_on_cmd28, 0x00},{0x8, ili9881c_720p_video_on_cmd29, 0x00},{0x8, ili9881c_720p_video_on_cmd30, 0x00},{0x8, ili9881c_720p_video_on_cmd31, 0x00},{0x8, ili9881c_720p_video_on_cmd32, 0x00},{0x8, ili9881c_720p_video_on_cmd33, 0x00},{0x8, ili9881c_720p_video_on_cmd34, 0x00},{0x8, ili9881c_720p_video_on_cmd35, 0x00},{0x8, ili9881c_720p_video_on_cmd36, 0x00},{0x8, ili9881c_720p_video_on_cmd37, 0x00},{0x8, ili9881c_720p_video_on_cmd38, 0x00},{0x8, ili9881c_720p_video_on_cmd39, 0x00},{0x8, ili9881c_720p_video_on_cmd40, 0x00},{0x8, ili9881c_720p_video_on_cmd41, 0x00},{0x8, ili9881c_720p_video_on_cmd42, 0x00},{0x8, ili9881c_720p_video_on_cmd43, 0x00},{0x8, ili9881c_720p_video_on_cmd44, 0x00},{0x8, ili9881c_720p_video_on_cmd45, 0x00},{0x8, ili9881c_720p_video_on_cmd46, 0x00},{0x8, ili9881c_720p_video_on_cmd47, 0x00},{0x8, ili9881c_720p_video_on_cmd48, 0x00},{0x8, ili9881c_720p_video_on_cmd49, 0x00},{0x8, ili9881c_720p_video_on_cmd50, 0x00},{0x8, ili9881c_720p_video_on_cmd51, 0x00},{0x8, ili9881c_720p_video_on_cmd52, 0x00},{0x8, ili9881c_720p_video_on_cmd53, 0x00},{0x8, ili9881c_720p_video_on_cmd54, 0x00},{0x8, ili9881c_720p_video_on_cmd55, 0x00},{0x8, ili9881c_720p_video_on_cmd56, 0x00},{0x8, ili9881c_720p_video_on_cmd57, 0x00},{0x8, ili9881c_720p_video_on_cmd58, 0x00},{0x8, ili9881c_720p_video_on_cmd59, 0x00},{0x8, ili9881c_720p_video_on_cmd60, 0x00},{0x8, ili9881c_720p_video_on_cmd61, 0x00},{0x8, ili9881c_720p_video_on_cmd62, 0x00},{0x8, ili9881c_720p_video_on_cmd63, 0x00},{0x8, ili9881c_720p_video_on_cmd64, 0x00},{0x8, ili9881c_720p_video_on_cmd65, 0x00},{0x8, ili9881c_720p_video_on_cmd66, 0x00},{0x8, ili9881c_720p_video_on_cmd67, 0x00},{0x8, ili9881c_720p_video_on_cmd68, 0x00},{0x8, ili9881c_720p_video_on_cmd69, 0x00},{0x8, ili9881c_720p_video_on_cmd70, 0x00},{0x8, ili9881c_720p_video_on_cmd71, 0x00},{0x8, ili9881c_720p_video_on_cmd72, 0x00},{0x8, ili9881c_720p_video_on_cmd73, 0x00},{0x8, ili9881c_720p_video_on_cmd74, 0x00},{0x8, ili9881c_720p_video_on_cmd75, 0x00},{0x8, ili9881c_720p_video_on_cmd76, 0x00},{0x8, ili9881c_720p_video_on_cmd77, 0x00},{0x8, ili9881c_720p_video_on_cmd78, 0x00},{0x8, ili9881c_720p_video_on_cmd79, 0x00},{0x8, ili9881c_720p_video_on_cmd80, 0x00},{0x8, ili9881c_720p_video_on_cmd81, 0x00},{0x8, ili9881c_720p_video_on_cmd82, 0x00},{0x8, ili9881c_720p_video_on_cmd83, 0x00},{0x8, ili9881c_720p_video_on_cmd84, 0x00},{0x8, ili9881c_720p_video_on_cmd85, 0x00},{0x8, ili9881c_720p_video_on_cmd86, 0x00},{0x8, ili9881c_720p_video_on_cmd87, 0x00},{0x8, ili9881c_720p_video_on_cmd88, 0x00},{0x8, ili9881c_720p_video_on_cmd89, 0x00},{0x8, ili9881c_720p_video_on_cmd90, 0x00},{0x8, ili9881c_720p_video_on_cmd91, 0x00},{0x8, ili9881c_720p_video_on_cmd92, 0x00},{0x8, ili9881c_720p_video_on_cmd93, 0x00},{0x8, ili9881c_720p_video_on_cmd94, 0x00},{0x8, ili9881c_720p_video_on_cmd95, 0x00},{0x8, ili9881c_720p_video_on_cmd96, 0x00},{0x8, ili9881c_720p_video_on_cmd97, 0x00},{0x8, ili9881c_720p_video_on_cmd98, 0x00},{0x8, ili9881c_720p_video_on_cmd99, 0x00},{0x8, ili9881c_720p_video_on_cmd100, 0x00},{0x8, ili9881c_720p_video_on_cmd101, 0x00},{0x8, ili9881c_720p_video_on_cmd102, 0x00},{0x8, ili9881c_720p_video_on_cmd103, 0x00},{0x8, ili9881c_720p_video_on_cmd104, 0x00},{0x8, ili9881c_720p_video_on_cmd105, 0x00},{0x8, ili9881c_720p_video_on_cmd106, 0x00},{0x8, ili9881c_720p_video_on_cmd107, 0x00},{0x8, ili9881c_720p_video_on_cmd108, 0x00},{0x8, ili9881c_720p_video_on_cmd109, 0x00},{0x8, ili9881c_720p_video_on_cmd110, 0x00},{0x8, ili9881c_720p_video_on_cmd111, 0x00},{0x8, ili9881c_720p_video_on_cmd112, 0x00},{0x8, ili9881c_720p_video_on_cmd113, 0x00},{0x8, ili9881c_720p_video_on_cmd114, 0x00},{0x8, ili9881c_720p_video_on_cmd115, 0x00},{0x8, ili9881c_720p_video_on_cmd116, 0x00},{0x8, ili9881c_720p_video_on_cmd117, 0x00},{0x8, ili9881c_720p_video_on_cmd118, 0x00},{0x8, ili9881c_720p_video_on_cmd119, 0x00},{0x8, ili9881c_720p_video_on_cmd120, 0x00},{0x8, ili9881c_720p_video_on_cmd121, 0x00},{0x8, ili9881c_720p_video_on_cmd122, 0x00},{0x8, ili9881c_720p_video_on_cmd123, 0x00},{0x8, ili9881c_720p_video_on_cmd124, 0x00},{0x8, ili9881c_720p_video_on_cmd125, 0x00},{0x8, ili9881c_720p_video_on_cmd126, 0x00},{0x8, ili9881c_720p_video_on_cmd127, 0x00},{0x8, ili9881c_720p_video_on_cmd128, 0x00},{0x8, ili9881c_720p_video_on_cmd129, 0x00},{0x8, ili9881c_720p_video_on_cmd130, 0x00},{0x8, ili9881c_720p_video_on_cmd131, 0x00},{0x8, ili9881c_720p_video_on_cmd132, 0x00},{0x8, ili9881c_720p_video_on_cmd133, 0x00},{0x8, ili9881c_720p_video_on_cmd134, 0x00},{0x8, ili9881c_720p_video_on_cmd135, 0x00},{0x8, ili9881c_720p_video_on_cmd136, 0x00},{0x8, ili9881c_720p_video_on_cmd137, 0x00},{0x8, ili9881c_720p_video_on_cmd138, 0x00},{0x8, ili9881c_720p_video_on_cmd139, 0x00},{0x8, ili9881c_720p_video_on_cmd140, 0x00},{0x8, ili9881c_720p_video_on_cmd141, 0x00},{0x8, ili9881c_720p_video_on_cmd142, 0x00},{0x8, ili9881c_720p_video_on_cmd143, 0x00},{0x8, ili9881c_720p_video_on_cmd144, 0x00},{0x8, ili9881c_720p_video_on_cmd145, 0x00},{0x8, ili9881c_720p_video_on_cmd146, 0x00},{0x8, ili9881c_720p_video_on_cmd147, 0x00},{0x8, ili9881c_720p_video_on_cmd148, 0x00},{0x8, ili9881c_720p_video_on_cmd149, 0x00},{0x8, ili9881c_720p_video_on_cmd150, 0x00},{0x8, ili9881c_720p_video_on_cmd151, 0x00},{0x8, ili9881c_720p_video_on_cmd152, 0x00},{0x8, ili9881c_720p_video_on_cmd153, 0x00},{0x8, ili9881c_720p_video_on_cmd154, 0x00},{0x8, ili9881c_720p_video_on_cmd155, 0x00},{0x8, ili9881c_720p_video_on_cmd156, 0x00},{0x8, ili9881c_720p_video_on_cmd157, 0x00},{0x8, ili9881c_720p_video_on_cmd158, 0x00},{0x8, ili9881c_720p_video_on_cmd159, 0x00},{0x8, ili9881c_720p_video_on_cmd160, 0x00},{0x8, ili9881c_720p_video_on_cmd161, 0x00},{0x8, ili9881c_720p_video_on_cmd162, 0x00},{0x8, ili9881c_720p_video_on_cmd163, 0x00},{0x8, ili9881c_720p_video_on_cmd164, 0x00},{0x8, ili9881c_720p_video_on_cmd165, 0x00},{0x8, ili9881c_720p_video_on_cmd166, 0x00},{0x8, ili9881c_720p_video_on_cmd167, 0x00},{0x8, ili9881c_720p_video_on_cmd168, 0x00},{0x8, ili9881c_720p_video_on_cmd169, 0x00},{0x8, ili9881c_720p_video_on_cmd170, 0x00},{0x8, ili9881c_720p_video_on_cmd171, 0x00},{0x8, ili9881c_720p_video_on_cmd172, 0x00},{0x8, ili9881c_720p_video_on_cmd173, 0x00},{0x8, ili9881c_720p_video_on_cmd174, 0x00},{0x8, ili9881c_720p_video_on_cmd175, 0x00},{0x8, ili9881c_720p_video_on_cmd176, 0x00},{0x8, ili9881c_720p_video_on_cmd177, 0x00},{0x8, ili9881c_720p_video_on_cmd178, 0x00},{0x8, ili9881c_720p_video_on_cmd179, 0x00},{0x8, ili9881c_720p_video_on_cmd180, 0x00},{0x8, ili9881c_720p_video_on_cmd181, 0x00},{0x8, ili9881c_720p_video_on_cmd182, 0x00},{0x8, ili9881c_720p_video_on_cmd183, 0x00},{0x8, ili9881c_720p_video_on_cmd184, 0x00},{0x8, ili9881c_720p_video_on_cmd185, 0x00},{0x4, ili9881c_720p_video_on_cmd186, 0x78},{0x4, ili9881c_720p_video_on_cmd187, 0x0A},{0x8, ili9881c_720p_video_on_cmd188, 0x00},{0x8, ili9881c_720p_video_on_cmd189, 0x00},{0x4, ili9881c_720p_video_on_cmd190, 0x00},
};#define ILI9881C_720P_VIDEO_ON_COMMAND 191
*/

修改“videopanel_info ili9881c_720p_video_video_panel”如下:

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

修改“uint32_t ili9881c_720p_video_timings[]”如下:

static const uint32_t ili9881c_720p_video_timings[] = {0x7F, 0x1c, 0x12, 0x00, 0x40, 0x44, 0x16, 0x1e, 0x17, 0x03, 0x04, 0x00
};

修改“panel_timing ili9881c_720p_video_timing_info”如下:

static struct panel_timing ili9881c_720p_video_timing_info = {0x0, 0x04, 0x04, 0x1B
};

修改“panel_reset_sequence ili9881c_720p_video_reset_seq”如下:

static struct panel_reset_sequence ili9881c_720p_video_reset_seq = {
{ 1, 0, 1, }, { 20, 10, 200, }, 2
};

修改“backlight ili9881c_720p_video_backlight”如下:

static struct backlight ili9881c_720p_video_backlight = {1, 1, 4095, 200, 1, "PMIC_8941"
};

完整内容如下:

/* 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_ILI9881C_720P_VIDEO_H_
#define _PANEL_ILI9881C_720P_VIDEO_H_
/*---------------------------------------------------------------------------*/
/* HEADER files                                                              */
/*---------------------------------------------------------------------------*/
#include "panel.h"/*---------------------------------------------------------------------------*/
/* Panel configuration                                                       */
/*---------------------------------------------------------------------------*/
static struct panel_config ili9881c_720p_video_panel_data = {"qcom,mdss_dsi_ili9881c_720p_video", "dsi:0:", "qcom,mdss-dsi-panel",10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};/*---------------------------------------------------------------------------*/
/* Panel resolution                                                          */
/*---------------------------------------------------------------------------*/
static struct panel_resolution ili9881c_720p_video_panel_res = {1280, 720, 110, 220, 40, 0, 5, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0
};/*---------------------------------------------------------------------------*/
/* Panel color information                                                   */
/*---------------------------------------------------------------------------*/
static struct color_info ili9881c_720p_video_color = {24, 0, 0xff, 0, 0, 0
};/*---------------------------------------------------------------------------*/
/* Panel on/off command information                                          */
/*---------------------------------------------------------------------------*/
/*static char ili9881c_720p_video_on_cmd0[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x03,
};static char ili9881c_720p_video_on_cmd1[] = {0x02, 0x00, 0x39, 0xC0,0x01, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd2[] = {0x02, 0x00, 0x39, 0xC0,0x02, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd3[] = {0x02, 0x00, 0x39, 0xC0,0x03, 0x73, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd4[] = {0x02, 0x00, 0x39, 0xC0,0x04, 0x03, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd5[] = {0x02, 0x00, 0x39, 0xC0,0x05, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd6[] = {0x02, 0x00, 0x39, 0xC0,0x06, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd7[] = {0x02, 0x00, 0x39, 0xC0,0x07, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd8[] = {0x02, 0x00, 0x39, 0xC0,0x08, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd9[] = {0x02, 0x00, 0x39, 0xC0,0x09, 0x18, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd10[] = {0x02, 0x00, 0x39, 0xC0,0x0A, 0x04, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd11[] = {0x02, 0x00, 0x39, 0xC0,0x0B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd12[] = {0x02, 0x00, 0x39, 0xC0,0x0C, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd13[] = {0x02, 0x00, 0x39, 0xC0,0x0D, 0x03, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd14[] = {0x02, 0x00, 0x39, 0xC0,0x0E, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd15[] = {0x02, 0x00, 0x39, 0xC0,0x0F, 0x25, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd16[] = {0x02, 0x00, 0x39, 0xC0,0x10, 0x25, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd17[] = {0x02, 0x00, 0x39, 0xC0,0x11, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd18[] = {0x02, 0x00, 0x39, 0xC0,0x12, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd19[] = {0x02, 0x00, 0x39, 0xC0,0x13, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd20[] = {0x02, 0x00, 0x39, 0xC0,0x14, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd21[] = {0x02, 0x00, 0x39, 0xC0,0x15, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd22[] = {0x02, 0x00, 0x39, 0xC0,0x16, 0x0c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd23[] = {0x02, 0x00, 0x39, 0xC0,0x17, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd24[] = {0x02, 0x00, 0x39, 0xC0,0x18, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd25[] = {0x02, 0x00, 0x39, 0xC0,0x19, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd26[] = {0x02, 0x00, 0x39, 0xC0,0x1A, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd27[] = {0x02, 0x00, 0x39, 0xC0,0x1B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd28[] = {0x02, 0x00, 0x39, 0xC0,0x1C, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd29[] = {0x02, 0x00, 0x39, 0xC0,0x1D, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd30[] = {0x02, 0x00, 0x39, 0xC0,0x1E, 0xC0, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd31[] = {0x02, 0x00, 0x39, 0xC0,0x1F, 0x80, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd32[] = {0x02, 0x00, 0x39, 0xC0,0x20, 0x04, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd33[] = {0x02, 0x00, 0x39, 0xC0,0x21, 0x01, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd34[] = {0x02, 0x00, 0x39, 0xC0,0x22, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd35[] = {0x02, 0x00, 0x39, 0xC0,0x23, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd36[] = {0x02, 0x00, 0x39, 0xC0,0x24, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd37[] = {0x02, 0x00, 0x39, 0xC0,0x25, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd38[] = {0x02, 0x00, 0x39, 0xC0,0x26, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd39[] = {0x02, 0x00, 0x39, 0xC0,0x27, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd40[] = {0x02, 0x00, 0x39, 0xC0,0x28, 0x33, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd41[] = {0x02, 0x00, 0x39, 0xC0,0x29, 0x03, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd42[] = {0x02, 0x00, 0x39, 0xC0,0x2A, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd43[] = {0x02, 0x00, 0x39, 0xC0,0x2B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd44[] = {0x02, 0x00, 0x39, 0xC0,0x2C, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd45[] = {0x02, 0x00, 0x39, 0xC0,0x2D, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd46[] = {0x02, 0x00, 0x39, 0xC0,0x2E, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd47[] = {0x02, 0x00, 0x39, 0xC0,0x2F, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd48[] = {0x02, 0x00, 0x39, 0xC0,0x30, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd49[] = {0x02, 0x00, 0x39, 0xC0,0x31, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd50[] = {0x02, 0x00, 0x39, 0xC0,0x32, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd51[] = {0x02, 0x00, 0x39, 0xC0,0x33, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd52[] = {0x02, 0x00, 0x39, 0xC0,0x34, 0x04, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd53[] = {0x02, 0x00, 0x39, 0xC0,0x35, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd54[] = {0x02, 0x00, 0x39, 0xC0,0x36, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd55[] = {0x02, 0x00, 0x39, 0xC0,0x37, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd56[] = {0x02, 0x00, 0x39, 0xC0,0x38, 0x3c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd57[] = {0x02, 0x00, 0x39, 0xC0,0x39, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd58[] = {0x02, 0x00, 0x39, 0xC0,0x3A, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd59[] = {0x02, 0x00, 0x39, 0xC0,0x3B, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd60[] = {0x02, 0x00, 0x39, 0xC0,0x3C, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd61[] = {0x02, 0x00, 0x39, 0xC0,0x3D, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd62[] = {0x02, 0x00, 0x39, 0xC0,0x3E, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd63[] = {0x02, 0x00, 0x39, 0xC0,0x3F, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd64[] = {0x02, 0x00, 0x39, 0xC0,0x40, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd65[] = {0x02, 0x00, 0x39, 0xC0,0x41, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd66[] = {0x02, 0x00, 0x39, 0xC0,0x42, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd67[] = {0x02, 0x00, 0x39, 0xC0,0x43, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd68[] = {0x02, 0x00, 0x39, 0xC0,0x44, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd69[] = {0x02, 0x00, 0x39, 0xC0,0x50, 0x01, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd70[] = {0x02, 0x00, 0x39, 0xC0,0x51, 0x23, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd71[] = {0x02, 0x00, 0x39, 0xC0,0x52, 0x45, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd72[] = {0x02, 0x00, 0x39, 0xC0,0x53, 0x67, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd73[] = {0x02, 0x00, 0x39, 0xC0,0x54, 0x89, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd74[] = {0x02, 0x00, 0x39, 0xC0,0x55, 0xab, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd75[] = {0x02, 0x00, 0x39, 0xC0,0x56, 0x01, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd76[] = {0x02, 0x00, 0x39, 0xC0,0x57, 0x23, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd77[] = {0x02, 0x00, 0x39, 0xC0,0x58, 0x45, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd78[] = {0x02, 0x00, 0x39, 0xC0,0x59, 0x67, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd79[] = {0x02, 0x00, 0x39, 0xC0,0x5A, 0x89, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd80[] = {0x02, 0x00, 0x39, 0xC0,0x5B, 0xab, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd81[] = {0x02, 0x00, 0x39, 0xC0,0x5C, 0xcd, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd82[] = {0x02, 0x00, 0x39, 0xC0,0x5D, 0xef, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd83[] = {0x02, 0x00, 0x39, 0xC0,0x5E, 0x11, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd84[] = {0x02, 0x00, 0x39, 0xC0,0x5F, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd85[] = {0x02, 0x00, 0x39, 0xC0,0x60, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd86[] = {0x02, 0x00, 0x39, 0xC0,0x61, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd87[] = {0x02, 0x00, 0x39, 0xC0,0x62, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd88[] = {0x02, 0x00, 0x39, 0xC0,0x63, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd89[] = {0x02, 0x00, 0x39, 0xC0,0x64, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd90[] = {0x02, 0x00, 0x39, 0xC0,0x65, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd91[] = {0x02, 0x00, 0x39, 0xC0,0x66, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd92[] = {0x02, 0x00, 0x39, 0xC0,0x67, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd93[] = {0x02, 0x00, 0x39, 0xC0,0x68, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd94[] = {0x02, 0x00, 0x39, 0xC0,0x69, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd95[] = {0x02, 0x00, 0x39, 0xC0,0x6A, 0x0c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd96[] = {0x02, 0x00, 0x39, 0xC0,0x6B, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd97[] = {0x02, 0x00, 0x39, 0xC0,0x6C, 0x0f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd98[] = {0x02, 0x00, 0x39, 0xC0,0x6D, 0x0e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd99[] = {0x02, 0x00, 0x39, 0xC0,0x6E, 0x0d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd100[] = {0x02, 0x00, 0x39, 0xC0,0x6F, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd101[] = {0x02, 0x00, 0x39, 0xC0,0x70, 0x07, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd102[] = {0x02, 0x00, 0x39, 0xC0,0x71, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd103[] = {0x02, 0x00, 0x39, 0xC0,0x72, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd104[] = {0x02, 0x00, 0x39, 0xC0,0x73, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd105[] = {0x02, 0x00, 0x39, 0xC0,0x74, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd106[] = {0x02, 0x00, 0x39, 0xC0,0x75, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd107[] = {0x02, 0x00, 0x39, 0xC0,0x76, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd108[] = {0x02, 0x00, 0x39, 0xC0,0x77, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd109[] = {0x02, 0x00, 0x39, 0xC0,0x78, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd110[] = {0x02, 0x00, 0x39, 0xC0,0x79, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd111[] = {0x02, 0x00, 0x39, 0xC0,0x7A, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd112[] = {0x02, 0x00, 0x39, 0xC0,0x7B, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd113[] = {0x02, 0x00, 0x39, 0xC0,0x7C, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd114[] = {0x02, 0x00, 0x39, 0xC0,0x7D, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd115[] = {0x02, 0x00, 0x39, 0xC0,0x7E, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd116[] = {0x02, 0x00, 0x39, 0xC0,0x7F, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd117[] = {0x02, 0x00, 0x39, 0xC0,0x80, 0x0c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd118[] = {0x02, 0x00, 0x39, 0xC0,0x81, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd119[] = {0x02, 0x00, 0x39, 0xC0,0x82, 0x0f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd120[] = {0x02, 0x00, 0x39, 0xC0,0x83, 0x0e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd121[] = {0x02, 0x00, 0x39, 0xC0,0x84, 0x0d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd122[] = {0x02, 0x00, 0x39, 0xC0,0x85, 0x06, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd123[] = {0x02, 0x00, 0x39, 0xC0,0x86, 0x07, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd124[] = {0x02, 0x00, 0x39, 0xC0,0x87, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd125[] = {0x02, 0x00, 0x39, 0xC0,0x88, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd126[] = {0x02, 0x00, 0x39, 0xC0,0x89, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd127[] = {0x02, 0x00, 0x39, 0xC0,0x8A, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd128[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x04,
};static char ili9881c_720p_video_on_cmd129[] = {0x02, 0x00, 0x39, 0xC0,0x6c, 0x15, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd130[] = {0x02, 0x00, 0x39, 0xC0,0x6e, 0x22, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd131[] = {0x02, 0x00, 0x39, 0xC0,0x6f, 0x33, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd132[] = {0x02, 0x00, 0x39, 0xC0,0x3a, 0xa4, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd133[] = {0x02, 0x00, 0x39, 0xC0,0x8d, 0x0d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd134[] = {0x02, 0x00, 0x39, 0xC0,0x87, 0xba, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd135[] = {0x02, 0x00, 0x39, 0xC0,0x26, 0x76, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd136[] = {0x02, 0x00, 0x39, 0xC0,0xb2, 0xd1, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd137[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x01,
};static char ili9881c_720p_video_on_cmd138[] = {0x02, 0x00, 0x39, 0xC0,0x22, 0x0a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd139[] = {0x02, 0x00, 0x39, 0xC0,0x53, 0xbe, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd140[] = {0x02, 0x00, 0x39, 0xC0,0x55, 0xa7, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd141[] = {0x02, 0x00, 0x39, 0xC0,0x50, 0x74, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd142[] = {0x02, 0x00, 0x39, 0xC0,0x51, 0x74, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd143[] = {0x02, 0x00, 0x39, 0xC0,0x31, 0x02, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd144[] = {0x02, 0x00, 0x39, 0xC0,0x60, 0x14, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd145[] = {0x02, 0x00, 0x39, 0xC0,0xa0, 0x15, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd146[] = {0x02, 0x00, 0x39, 0xC0,0xa1, 0x26, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd147[] = {0x02, 0x00, 0x39, 0xC0,0xa2, 0x2b, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd148[] = {0x02, 0x00, 0x39, 0xC0,0xa3, 0x14, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd149[] = {0x02, 0x00, 0x39, 0xC0,0xa4, 0x17, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd150[] = {0x02, 0x00, 0x39, 0xC0,0xa5, 0x2c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd151[] = {0x02, 0x00, 0x39, 0xC0,0xa6, 0x20, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd152[] = {0x02, 0x00, 0x39, 0xC0,0xa7, 0x21, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd153[] = {0x02, 0x00, 0x39, 0xC0,0xa8, 0x95, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd154[] = {0x02, 0x00, 0x39, 0xC0,0xa9, 0x1d, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd155[] = {0x02, 0x00, 0x39, 0xC0,0xaa, 0x27, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd156[] = {0x02, 0x00, 0x39, 0xC0,0xab, 0x89, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd157[] = {0x02, 0x00, 0x39, 0xC0,0xac, 0x1a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd158[] = {0x02, 0x00, 0x39, 0xC0,0xad, 0x18, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd159[] = {0x02, 0x00, 0x39, 0xC0,0xae, 0x4b, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd160[] = {0x02, 0x00, 0x39, 0xC0,0xaf, 0x21, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd161[] = {0x02, 0x00, 0x39, 0xC0,0xb0, 0x26, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd162[] = {0x02, 0x00, 0x39, 0xC0,0xb1, 0x60, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd163[] = {0x02, 0x00, 0x39, 0xC0,0xb2, 0x71, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd164[] = {0x02, 0x00, 0x39, 0xC0,0xb3, 0x3f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd165[] = {0x02, 0x00, 0x39, 0xC0,0xc0, 0x05, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd166[] = {0x02, 0x00, 0x39, 0xC0,0xc1, 0x26, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd167[] = {0x02, 0x00, 0x39, 0xC0,0xc2, 0x3f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd168[] = {0x02, 0x00, 0x39, 0xC0,0xc3, 0x0f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd169[] = {0x02, 0x00, 0x39, 0xC0,0xc4, 0x14, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd170[] = {0x02, 0x00, 0x39, 0xC0,0xc5, 0x27, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd171[] = {0x02, 0x00, 0x39, 0xC0,0xc6, 0x1a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd172[] = {0x02, 0x00, 0x39, 0xC0,0xc7, 0x1e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd173[] = {0x02, 0x00, 0x39, 0xC0,0xc8, 0x9e, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd174[] = {0x02, 0x00, 0x39, 0xC0,0xc9, 0x1a, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd175[] = {0x02, 0x00, 0x39, 0xC0,0xca, 0x29, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd176[] = {0x02, 0x00, 0x39, 0xC0,0xcb, 0x82, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd177[] = {0x02, 0x00, 0x39, 0xC0,0xcc, 0x18, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd178[] = {0x02, 0x00, 0x39, 0xC0,0xcd, 0x16, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd179[] = {0x02, 0x00, 0x39, 0xC0,0xce, 0x4c, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd180[] = {0x02, 0x00, 0x39, 0xC0,0xcf, 0x1f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd181[] = {0x02, 0x00, 0x39, 0xC0,0xd0, 0x28, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd182[] = {0x02, 0x00, 0x39, 0xC0,0xd1, 0x53, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd183[] = {0x02, 0x00, 0x39, 0xC0,0xd2, 0x62, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd184[] = {0x02, 0x00, 0x39, 0xC0,0xd3, 0x3f, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd185[] = {0x04, 0x00, 0x39, 0xC0,0xFF, 0x98, 0x81, 0x00,
};static char ili9881c_720p_video_on_cmd186[] = {0x11, 0x00, 0x05, 0x80
};static char ili9881c_720p_video_on_cmd187[] = {0x29, 0x00, 0x05, 0x80
};static char ili9881c_720p_video_on_cmd188[] = {0x02, 0x00, 0x39, 0xC0,0x35, 0x00, 0xFF, 0xFF,
};static char ili9881c_720p_video_on_cmd189[] = {0x04, 0x00, 0x39, 0xC0,0xff, 0x98, 0x81, 0x01,
};static char ili9881c_720p_video_on_cmd190[] = {0x37, 0x00, 0x05, 0x80,
};static struct mipi_dsi_cmd ili9881c_720p_video_on_command[] = {{0x8, ili9881c_720p_video_on_cmd0, 0x00},{0x8, ili9881c_720p_video_on_cmd1, 0x00},{0x8, ili9881c_720p_video_on_cmd2, 0x00},{0x8, ili9881c_720p_video_on_cmd3, 0x00},{0x8, ili9881c_720p_video_on_cmd4, 0x00},{0x8, ili9881c_720p_video_on_cmd5, 0x00},{0x8, ili9881c_720p_video_on_cmd6, 0x00},{0x8, ili9881c_720p_video_on_cmd7, 0x00},{0x8, ili9881c_720p_video_on_cmd8, 0x00},{0x8, ili9881c_720p_video_on_cmd9, 0x00},{0x8, ili9881c_720p_video_on_cmd10, 0x00},{0x8, ili9881c_720p_video_on_cmd11, 0x00},{0x8, ili9881c_720p_video_on_cmd12, 0x00},{0x8, ili9881c_720p_video_on_cmd13, 0x00},{0x8, ili9881c_720p_video_on_cmd14, 0x00},{0x8, ili9881c_720p_video_on_cmd15, 0x00},{0x8, ili9881c_720p_video_on_cmd16, 0x00},{0x8, ili9881c_720p_video_on_cmd17, 0x00},{0x8, ili9881c_720p_video_on_cmd18, 0x00},{0x8, ili9881c_720p_video_on_cmd19, 0x00},{0x8, ili9881c_720p_video_on_cmd20, 0x00},{0x8, ili9881c_720p_video_on_cmd21, 0x00},{0x8, ili9881c_720p_video_on_cmd22, 0x00},{0x8, ili9881c_720p_video_on_cmd23, 0x00},{0x8, ili9881c_720p_video_on_cmd24, 0x00},{0x8, ili9881c_720p_video_on_cmd25, 0x00},{0x8, ili9881c_720p_video_on_cmd26, 0x00},{0x8, ili9881c_720p_video_on_cmd27, 0x00},{0x8, ili9881c_720p_video_on_cmd28, 0x00},{0x8, ili9881c_720p_video_on_cmd29, 0x00},{0x8, ili9881c_720p_video_on_cmd30, 0x00},{0x8, ili9881c_720p_video_on_cmd31, 0x00},{0x8, ili9881c_720p_video_on_cmd32, 0x00},{0x8, ili9881c_720p_video_on_cmd33, 0x00},{0x8, ili9881c_720p_video_on_cmd34, 0x00},{0x8, ili9881c_720p_video_on_cmd35, 0x00},{0x8, ili9881c_720p_video_on_cmd36, 0x00},{0x8, ili9881c_720p_video_on_cmd37, 0x00},{0x8, ili9881c_720p_video_on_cmd38, 0x00},{0x8, ili9881c_720p_video_on_cmd39, 0x00},{0x8, ili9881c_720p_video_on_cmd40, 0x00},{0x8, ili9881c_720p_video_on_cmd41, 0x00},{0x8, ili9881c_720p_video_on_cmd42, 0x00},{0x8, ili9881c_720p_video_on_cmd43, 0x00},{0x8, ili9881c_720p_video_on_cmd44, 0x00},{0x8, ili9881c_720p_video_on_cmd45, 0x00},{0x8, ili9881c_720p_video_on_cmd46, 0x00},{0x8, ili9881c_720p_video_on_cmd47, 0x00},{0x8, ili9881c_720p_video_on_cmd48, 0x00},{0x8, ili9881c_720p_video_on_cmd49, 0x00},{0x8, ili9881c_720p_video_on_cmd50, 0x00},{0x8, ili9881c_720p_video_on_cmd51, 0x00},{0x8, ili9881c_720p_video_on_cmd52, 0x00},{0x8, ili9881c_720p_video_on_cmd53, 0x00},{0x8, ili9881c_720p_video_on_cmd54, 0x00},{0x8, ili9881c_720p_video_on_cmd55, 0x00},{0x8, ili9881c_720p_video_on_cmd56, 0x00},{0x8, ili9881c_720p_video_on_cmd57, 0x00},{0x8, ili9881c_720p_video_on_cmd58, 0x00},{0x8, ili9881c_720p_video_on_cmd59, 0x00},{0x8, ili9881c_720p_video_on_cmd60, 0x00},{0x8, ili9881c_720p_video_on_cmd61, 0x00},{0x8, ili9881c_720p_video_on_cmd62, 0x00},{0x8, ili9881c_720p_video_on_cmd63, 0x00},{0x8, ili9881c_720p_video_on_cmd64, 0x00},{0x8, ili9881c_720p_video_on_cmd65, 0x00},{0x8, ili9881c_720p_video_on_cmd66, 0x00},{0x8, ili9881c_720p_video_on_cmd67, 0x00},{0x8, ili9881c_720p_video_on_cmd68, 0x00},{0x8, ili9881c_720p_video_on_cmd69, 0x00},{0x8, ili9881c_720p_video_on_cmd70, 0x00},{0x8, ili9881c_720p_video_on_cmd71, 0x00},{0x8, ili9881c_720p_video_on_cmd72, 0x00},{0x8, ili9881c_720p_video_on_cmd73, 0x00},{0x8, ili9881c_720p_video_on_cmd74, 0x00},{0x8, ili9881c_720p_video_on_cmd75, 0x00},{0x8, ili9881c_720p_video_on_cmd76, 0x00},{0x8, ili9881c_720p_video_on_cmd77, 0x00},{0x8, ili9881c_720p_video_on_cmd78, 0x00},{0x8, ili9881c_720p_video_on_cmd79, 0x00},{0x8, ili9881c_720p_video_on_cmd80, 0x00},{0x8, ili9881c_720p_video_on_cmd81, 0x00},{0x8, ili9881c_720p_video_on_cmd82, 0x00},{0x8, ili9881c_720p_video_on_cmd83, 0x00},{0x8, ili9881c_720p_video_on_cmd84, 0x00},{0x8, ili9881c_720p_video_on_cmd85, 0x00},{0x8, ili9881c_720p_video_on_cmd86, 0x00},{0x8, ili9881c_720p_video_on_cmd87, 0x00},{0x8, ili9881c_720p_video_on_cmd88, 0x00},{0x8, ili9881c_720p_video_on_cmd89, 0x00},{0x8, ili9881c_720p_video_on_cmd90, 0x00},{0x8, ili9881c_720p_video_on_cmd91, 0x00},{0x8, ili9881c_720p_video_on_cmd92, 0x00},{0x8, ili9881c_720p_video_on_cmd93, 0x00},{0x8, ili9881c_720p_video_on_cmd94, 0x00},{0x8, ili9881c_720p_video_on_cmd95, 0x00},{0x8, ili9881c_720p_video_on_cmd96, 0x00},{0x8, ili9881c_720p_video_on_cmd97, 0x00},{0x8, ili9881c_720p_video_on_cmd98, 0x00},{0x8, ili9881c_720p_video_on_cmd99, 0x00},{0x8, ili9881c_720p_video_on_cmd100, 0x00},{0x8, ili9881c_720p_video_on_cmd101, 0x00},{0x8, ili9881c_720p_video_on_cmd102, 0x00},{0x8, ili9881c_720p_video_on_cmd103, 0x00},{0x8, ili9881c_720p_video_on_cmd104, 0x00},{0x8, ili9881c_720p_video_on_cmd105, 0x00},{0x8, ili9881c_720p_video_on_cmd106, 0x00},{0x8, ili9881c_720p_video_on_cmd107, 0x00},{0x8, ili9881c_720p_video_on_cmd108, 0x00},{0x8, ili9881c_720p_video_on_cmd109, 0x00},{0x8, ili9881c_720p_video_on_cmd110, 0x00},{0x8, ili9881c_720p_video_on_cmd111, 0x00},{0x8, ili9881c_720p_video_on_cmd112, 0x00},{0x8, ili9881c_720p_video_on_cmd113, 0x00},{0x8, ili9881c_720p_video_on_cmd114, 0x00},{0x8, ili9881c_720p_video_on_cmd115, 0x00},{0x8, ili9881c_720p_video_on_cmd116, 0x00},{0x8, ili9881c_720p_video_on_cmd117, 0x00},{0x8, ili9881c_720p_video_on_cmd118, 0x00},{0x8, ili9881c_720p_video_on_cmd119, 0x00},{0x8, ili9881c_720p_video_on_cmd120, 0x00},{0x8, ili9881c_720p_video_on_cmd121, 0x00},{0x8, ili9881c_720p_video_on_cmd122, 0x00},{0x8, ili9881c_720p_video_on_cmd123, 0x00},{0x8, ili9881c_720p_video_on_cmd124, 0x00},{0x8, ili9881c_720p_video_on_cmd125, 0x00},{0x8, ili9881c_720p_video_on_cmd126, 0x00},{0x8, ili9881c_720p_video_on_cmd127, 0x00},{0x8, ili9881c_720p_video_on_cmd128, 0x00},{0x8, ili9881c_720p_video_on_cmd129, 0x00},{0x8, ili9881c_720p_video_on_cmd130, 0x00},{0x8, ili9881c_720p_video_on_cmd131, 0x00},{0x8, ili9881c_720p_video_on_cmd132, 0x00},{0x8, ili9881c_720p_video_on_cmd133, 0x00},{0x8, ili9881c_720p_video_on_cmd134, 0x00},{0x8, ili9881c_720p_video_on_cmd135, 0x00},{0x8, ili9881c_720p_video_on_cmd136, 0x00},{0x8, ili9881c_720p_video_on_cmd137, 0x00},{0x8, ili9881c_720p_video_on_cmd138, 0x00},{0x8, ili9881c_720p_video_on_cmd139, 0x00},{0x8, ili9881c_720p_video_on_cmd140, 0x00},{0x8, ili9881c_720p_video_on_cmd141, 0x00},{0x8, ili9881c_720p_video_on_cmd142, 0x00},{0x8, ili9881c_720p_video_on_cmd143, 0x00},{0x8, ili9881c_720p_video_on_cmd144, 0x00},{0x8, ili9881c_720p_video_on_cmd145, 0x00},{0x8, ili9881c_720p_video_on_cmd146, 0x00},{0x8, ili9881c_720p_video_on_cmd147, 0x00},{0x8, ili9881c_720p_video_on_cmd148, 0x00},{0x8, ili9881c_720p_video_on_cmd149, 0x00},{0x8, ili9881c_720p_video_on_cmd150, 0x00},{0x8, ili9881c_720p_video_on_cmd151, 0x00},{0x8, ili9881c_720p_video_on_cmd152, 0x00},{0x8, ili9881c_720p_video_on_cmd153, 0x00},{0x8, ili9881c_720p_video_on_cmd154, 0x00},{0x8, ili9881c_720p_video_on_cmd155, 0x00},{0x8, ili9881c_720p_video_on_cmd156, 0x00},{0x8, ili9881c_720p_video_on_cmd157, 0x00},{0x8, ili9881c_720p_video_on_cmd158, 0x00},{0x8, ili9881c_720p_video_on_cmd159, 0x00},{0x8, ili9881c_720p_video_on_cmd160, 0x00},{0x8, ili9881c_720p_video_on_cmd161, 0x00},{0x8, ili9881c_720p_video_on_cmd162, 0x00},{0x8, ili9881c_720p_video_on_cmd163, 0x00},{0x8, ili9881c_720p_video_on_cmd164, 0x00},{0x8, ili9881c_720p_video_on_cmd165, 0x00},{0x8, ili9881c_720p_video_on_cmd166, 0x00},{0x8, ili9881c_720p_video_on_cmd167, 0x00},{0x8, ili9881c_720p_video_on_cmd168, 0x00},{0x8, ili9881c_720p_video_on_cmd169, 0x00},{0x8, ili9881c_720p_video_on_cmd170, 0x00},{0x8, ili9881c_720p_video_on_cmd171, 0x00},{0x8, ili9881c_720p_video_on_cmd172, 0x00},{0x8, ili9881c_720p_video_on_cmd173, 0x00},{0x8, ili9881c_720p_video_on_cmd174, 0x00},{0x8, ili9881c_720p_video_on_cmd175, 0x00},{0x8, ili9881c_720p_video_on_cmd176, 0x00},{0x8, ili9881c_720p_video_on_cmd177, 0x00},{0x8, ili9881c_720p_video_on_cmd178, 0x00},{0x8, ili9881c_720p_video_on_cmd179, 0x00},{0x8, ili9881c_720p_video_on_cmd180, 0x00},{0x8, ili9881c_720p_video_on_cmd181, 0x00},{0x8, ili9881c_720p_video_on_cmd182, 0x00},{0x8, ili9881c_720p_video_on_cmd183, 0x00},{0x8, ili9881c_720p_video_on_cmd184, 0x00},{0x8, ili9881c_720p_video_on_cmd185, 0x00},{0x4, ili9881c_720p_video_on_cmd186, 0x78},{0x4, ili9881c_720p_video_on_cmd187, 0x0A},{0x8, ili9881c_720p_video_on_cmd188, 0x00},{0x8, ili9881c_720p_video_on_cmd189, 0x00},{0x4, ili9881c_720p_video_on_cmd190, 0x00},
};#define ILI9881C_720P_VIDEO_ON_COMMAND 191
*/
static char read_id_00h_cmd[] = {0x00, 0x00, 0x06, 0xa0};  /* DTYPE_DCS_READ */
static struct mipi_dsi_cmd ili9881c_720p_read_id_command ={sizeof(read_id_00h_cmd), read_id_00h_cmd};static char ili9881c_720p_videooff_cmd0[] = {0x28, 0x00, 0x05, 0x80
};static char ili9881c_720p_videooff_cmd1[] = {0x10, 0x00, 0x05, 0x80
};static struct mipi_dsi_cmd ili9881c_720p_video_off_command[] = {{0x4, ili9881c_720p_videooff_cmd0, 0x32},{0x4, ili9881c_720p_videooff_cmd1, 0x78}
};#define ILI9881C_720P_VIDEO_OFF_COMMAND 2static struct command_state ili9881c_720p_video_state = {0, 1
};/*---------------------------------------------------------------------------*/
/* Command mode panel information                                            */
/*---------------------------------------------------------------------------*/
static struct commandpanel_info ili9881c_720p_video_command_panel = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};/*---------------------------------------------------------------------------*/
/* Video mode panel information                                              */
/*---------------------------------------------------------------------------*/
static struct videopanel_info ili9881c_720p_video_video_panel = {0, 0, 0, 0, 1, 1, 1, 0, 0x9
};/*---------------------------------------------------------------------------*/
/* Lane configuration                                                        */
/*---------------------------------------------------------------------------*/
static struct lane_configuration ili9881c_720p_video_lane_config = {4, 0, 1, 1, 1, 1
};/*---------------------------------------------------------------------------*/
/* Panel timing                                                              */
/*---------------------------------------------------------------------------*/
static const uint32_t ili9881c_720p_video_timings[] = {0x7F, 0x1c, 0x12, 0x00, 0x40, 0x44, 0x16, 0x1e, 0x17, 0x03, 0x04, 0x00
};static struct panel_timing ili9881c_720p_video_timing_info = {0x0, 0x04, 0x04, 0x1B
};/*---------------------------------------------------------------------------*/
/* Panel reset sequence                                                      */
/*---------------------------------------------------------------------------*/
static struct panel_reset_sequence ili9881c_720p_video_reset_seq = {
{ 1, 0, 1, }, { 20, 10, 200, }, 2
};/*---------------------------------------------------------------------------*/
/* Backlight setting                                                         */
/*---------------------------------------------------------------------------*/
static struct backlight ili9881c_720p_video_backlight = {1, 1, 4095, 200, 1, "PMIC_8941"
};#define ILI9881C_720P_VIDEO_SIGNATURE 0x9800#endif /*_PANEL_ILI9881C_720P_VIDEO_H_*/

本次小结

这个人很懒什么也没有留下!

Andorid:msm8909:MIPI转HDMI调试记录相关推荐

  1. kernel下HDMI调试记录

    目录 平台环境及验证工具 1.1 软件环境 1.2 硬件环境 libdrm 移植 DRM 组件探测 HDMI图像显示调试流程 4.1 故障定位过程 4.1.1 modetest 匹配 connecto ...

  2. msm8909的摄像头调试记录

    MSM8909摄像头调试记录 前言 ​ 最近因为项目需要,客户需要用到摄像头的功能,与硬件沟通确认选型OV8858的摄像头资源,本人也是第一回进行摄像头相关驱动移植于调试,其间也遇到很多的坑,为了方便 ...

  3. RK3568开发笔记-EDP显示屏接口调试记录

    目录 文章目录 前言 一.edp显示接口介绍 二.edp接口部分原理图 三.edp接口显示屏参数介绍 四.RK3568设备树参数配置 五.完整DTS edp参数 六.RK3568多屏显示vop选择 七 ...

  4. Nvidia Xavier Nx平台GMSL接口imx390相机驱动调试记录

    1.前言 使用GMSL的串行器和解串器9295 9296 两路imx390相机 有两种采集方式, 一种是在前端拼接好作为一路采集: 另一种是独立采集,使用MIPI的虚拟通道. 下面为调试记录 2. 搭 ...

  5. 海思NNIE开发(一):海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录

    海思NNIE开发系列文章: 海思NNIE开发(一):海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录 海思NNIE开发(二):FasterRCNN在海思NNIE平 ...

  6. ROS上同时预览depth,IR,RGB 调试记录

    ROS上同时预览depth,IR,RGB 调试记录 用rviz同时显示RGB,IR,DEPTH(验证设备:astraprosm,canglong2,deeyea) 1.编译libuvc库 cd lib ...

  7. ML之回归预测:利用十(xgboost,10-1)种机器学习算法对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值——bug调试记录

    ML之回归预测:利用十(xgboost,10-1)种机器学习算法对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值--bug调试记录 目录 输出结果 1.增加XGBR算法 ...

  8. [Deepin - Pycharm调试记录] Pyinstaller索引系统库问题

    Deepin - Pycharm调试记录 - Pyinstaller索引不到系统库 现象 在Pycharm的Terminal中执行Pyinstaller指令时候遇到如下报错提示 OSError: Py ...

  9. RAISR-master:google图像新压缩技术RAISR的测试代码调试记录(Python实现,没接触过python的小白,内含pip install解决方案)

    RAISR-master:google图像新压缩技术RAISR的测试代码调试记录(Python实现,没接触过python的小白,内含pip install解决方案) 参考文章: (1)RAISR-ma ...

最新文章

  1. OSChina 周五乱弹 —— 一句话证明你看过此乱弹~
  2. 细粒度情感分析任务(ABSA)的最新进展
  3. caffe使用过程中遇到的问题和解决办法
  4. GraphQL入门之工程搭建
  5. String、StringBuffer、StringBuilder区别
  6. Cache工作原理,Cache一致性,你想知道的都在这里
  7. mysql监控sql_如何实时监控mysql中的SQL语句的执行情况
  8. 7-9 龟兔赛跑 (20 分)
  9. 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
  10. 怎么判断噎到没噎到_怎么判定股市是在走牛市还是走熊市呢?两种最简单的判定方法...
  11. sql server哪个版本比较好用_给视频加音乐的软件哪个比较好用?
  12. 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
  13. 国产银河麒麟 安装wps 的简单方法
  14. 李开复:几年内电子商务上市潮会来临
  15. macOS Sierra,Xcode 8配置openCV3
  16. [UWP/WPF]在应用开发中安全使用文件资源
  17. Android 系统应用开发实战
  18. windows 建立窗口的程序代码
  19. HTML5 的课堂案例
  20. OPenGL 学习笔记之 Mesh 网格知识

热门文章

  1. 电影数据读取、分析与展示(Python+Scrapy)
  2. 组装电脑配置推荐5000元左右 2021年5000元电脑最强组装
  3. 抖音直播技巧有哪些?鹰迪电商
  4. 中国全面战争mod汉化版​
  5. Qt在高分屏上显示不全的问题解决办法
  6. 软件实训-技术学习心得
  7. 基于MQTT通信协议的西门子PLC水塔水位远程监控系统
  8. 创业之初需要的是人而不是钱
  9. 最长回文子串与最长回文子序列
  10. 这份软件工程师简历火了:手磨14nm咖啡,在微软传播性病,90%公司伸橄榄枝