热门内容

公众号"MAKE1"

获取行业最新资讯

请扫码添加

专业客服企业微信

Android/Linux 驱动层LCD屏幕的调试总结

简介

屏的调试总结

1、初始化参数的注意事项:

1.>mipi长包参数的添加:

{0x00, DCS_CMD, LW_PACK, 0x06, 0x04, 0x00, 0xB9, 0XFF, 0X83, 0X94},

第一个参数0x00,为整个包发送后的延时;

第二个和第三个参数为该数据包的格式,长包用(DCS_CMD, LW_PACK,),短包分两种,

一种是1个参数的用(DCS_CMD, SW_PACK1),两个参数的用(DCS_CMD, SW_PACK2);

【注意:这里说的参数包括,寄存器地址和寄存器参数,即:如果寄存器的值只有一个,则他就属于这里的两个参数;

如果寄存器没有参数,则属于这里的一个参数。】

第四个参数0x06为后面所跟的参数个数;

第五个和第六个参数( 0x04, 0x00, )为后面长包的参数个数。

 

2、刷白屏:

修改代码目录:kernellinux-3.10archarmplat-lcdriversvideocomipfb2

修改文件:comipfb.c

具体修改如下:

static int comipfb_map_video_memory(struct comipfb_layer_info *layer)

{

……

if (layer->map_cpu) {

/* prevent initial garbage on screen */

//if (!FB_MEMORY_FIX)

memset(layer->map_cpu, 0xff, layer->map_size); //把0x00,修改为0xff,即刷白屏

layer->fb.screen_base = (char __iomem *)layer->map_cpu;

layer->fb.screen_size = layer->map_size;

……

}

 

3、关掉休眠:

修改代码目录:kernellinux-3.10kernelpower

修改文件:earlysuspend.c

具体修改如下:

 

void request_suspend_state(suspend_state_t new_state)

{

unsigned long irqflags;

int old_sleep;

return; //直接返回,不让其进入休眠。

……

}

 

4、mipi信号极性的配置(HS、VS)

修改代码目录:kernellinux-3.10archarmplat-lcdriversvideocomipfb2

修改文件:mipi_interface.c

具体修改如下:

int mipi_dsih_config(struct comipfb_info *fbi)

{

……

if (mipi->display_mode == MIPI_VIDEO_MODE) {

mipi_dsih_hal_dpi_hsync_pol(fbi, 1); //0为高有效,1为低有效

mipi_dsih_hal_dpi_vsync_pol(fbi, 1); //0为高有效,1为低有效

mipi_dsih_hal_dpi_dataen_pol(fbi, 0);

mipi_dsih_hal_dpi_color_mode_pol(fbi, 0);

……

}

 

5、修改dpi:

修改文件:用ADB进入手机的/system下将build.prop pull到本地,然后修改如下的参数

ro.sf.lcd_density=240(3.7寸)

然后在push到/system 目录下,并修改会build.prop的权限(chmod 644),

注意:在修改权限的时候要用root权限,并且要remount一下。

 

6、修改video size:

修改代码目录:kernellinux-3.10archarmplat-lcdriversvideocomipfb2

修改文件:mipi_interface.c

具体修改如下:

int mipi_dsih_config(struct comipfb_info *fbi)

{

……

for (i = 1; i < 1000; i++) {

if ((mipi->hs_freq * mipi->no_lanes * i) % (fbi->pixclock / 1000) == 0) {

total_bytes = (mipi->hs_freq * mipi->no_lanes * i) / (fbi->pixclock / 1000);

if ((total_bytes - i * bytes_per_pixel_x100 / 100) >= 12)

break;

}

}

video_size = i; //young.yang change i 480

if ((videoinfo->xres % video_size) != 0)

no_of_chunks = videoinfo->xres / video_size + 1;

else

no_of_chunks = videoinfo->xres / video_size;

……

}

0
 条评论
相关内容推荐