展锐Android-Q LCD调试
模块功能描述
LCD模块功能主要是LCD液晶显示
LCD移植准备
以 skyworth ili9881c hd为例,首先需要准备东西如下:
1、屏IC Data Sheet
2、初始化代码 —>获得初始化屏幕ic的命令,用于编写u-boot初始化文件和.dtsi文件(kernel)
首先从Data Sheet或者初始化代码中可以获得以下一些信息:
1、水平脉冲宽度(qcom,mdss-dsi-h-pulse-width,Hsync)为68
2、水平后沿值(qcom,mdss-dsi-h-back-porch,HBP)为120
3、水平前沿值(qcom,mdss-dsi-h-front-porch,HFP)为88
4、垂直脉冲宽度(qcom,mdss-dsi-v-pulse-width,Vsync)为8
5、垂直后沿值(qcom,mdss-dsi-v-back-porch,VBP)为24
6、垂直前沿值(qcom,mdss-dsi-v-front-porch,VFP)为16
7、面板高度(qcom,mdss-dsi-panel-height,VAdr)为1280
8、面板宽度(qcom,mdss-dsi-panel-width,HAdr)为720
u-boot移植
增加LCD驱动文件
参考已有lcd驱动文件,添加要增加lcd的驱动文件,命名规则panel_ic_vendor_platform_res_mod.c
从原理图中获取gpio LCM_GPIO_VCC和LCM_GPIO_POWER
#include "sprd_panel.h"
#include "sprd_dsi.h"
#include "dsi/mipi_dsi_api.h"
#include "sprd_dphy.h"
static uint8_t init_data[] = {
0x39,0x00,0x00,0x04, 0xFF,0x98,0x81,0x03,
0x23,0x00,0x00,0x02, 0x01,0x00,
0x23,0x00,0x00,0x02, 0x02,0x00,
......
0x39,0x00,0x00,0x04, 0xFF,0x98,0x81,0x00,
0x23,0x00,0x00,0x02, 0x35,0x00,
0x39,0x00,0x00,0x03, 0x51,0xff,0xff,
0x23,0x00,0x00,0x02, 0x53,0x2c,
0x23,0x78,0x00,0x02, 0x11,0x00,
0x23,0x0A,0x00,0x02, 0x29,0x00,
CMD_END
};
//发送命令
static int mipi_dsi_send_cmds(struct sprd_dsi *dsi, void *data)
{
uint16_t len;
struct dsi_cmd_desc *cmds = data;
if ((cmds == NULL) || (dsi == NULL))
return -1;
for (; cmds->data_type != CMD_END;) {
len = (cmds->wc_h << 8) | cmds->wc_l;
mipi_dsi_gen_write(dsi, cmds->payload, len);
if (cmds->wait)
msleep(cmds->wait);
cmds = (struct dsi_cmd_desc