1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MTK车载平台实现MIPI转LVDS驱动移植

MTK车载平台实现MIPI转LVDS驱动移植

时间:2022-06-03 15:03:23

相关推荐

MTK车载平台实现MIPI转LVDS驱动移植

摘要:

该文档主要是基于MTK提供的BSP基础上针对sn65dsi83 LVDS转MIPI芯片的驱动移植,在移植LCM驱动的时候,需要配置LOGO,本文中将有体现。涉及到修改的文件:

LCM:

device/atc/evb3561sv_w_no2/ProjectConfig.mk

device/atc/evb3561sv_w_no2/system.prop

kernel-3.18/arch/arm64/configs/evb3561sv_w_no2_debug_defconfig

kernel-3.18/arch/arm64/configs/evb3561sv_w_no2_defconfig

kernel-3.18/drivers/misc/mediatek/lcm/cpt_clap070wp03xg_sn65dsi83/cpt_clap070wp03xg_sn65dsi83.c

kernel-3.18/drivers/misc/mediatek/lcm/cpt_clap070wp03xg_sn65dsi83/cpt_clap070wp03xg_sn65dsi83.h

kernel-3.18/drivers/misc/mediatek/lcm/cpt_clap070wp03xg_sn65dsi83/lcm_drv_cpt_clap070wp03xg_sn65dsi83.c

kernel-3.18/drivers/misc/mediatek/mach/mt3561/evb3561sv_w_no2/dct/dct/codegen-atc.dws

vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/cpt_clap070wp03xg_sn65dsi83/cpt_clap070wp03xg_sn65dsi83.c

vendor/mediatek/proprietary/bootable/bootloader/lk/project/evb3561sv_w_no2.mk

vendor/mediatek/proprietary/bootable/bootloader/lk/target/evb3561sv_w_no2/dct/dct/codegen.dws

vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/cmcc_1024x600/cmcc_1024x600_uboot.bmp

frameworks/base/core/res/assets/images/android-logo-mask.png

需要准备的资料:

电路原理图

GPIO配置列表

LCD(LVDS屏)屏幕规格书

sn65dsi83芯片应用手册

LCD(MIPI屏)屏幕规格书和MIPI屏SensorIC芯片应用手册

LCD屏的上下电时序、SensorID和Sensor的I2C设备地址

1 电路设计

根据电源原理图,从ARM引出的涉及,sn65dsi83的MIPI IN LEN0-LEN3四组、DVDD、AVDD使能管脚、LCM_RST复位管脚、LCD_TE管脚,根据硬件给出的GPIO列表,对应的管脚如下:

2 GPIO DCT的配置

根据1中描述,使用dct工具配置GPIO的相应功能,注意其中DSI_TE管脚为LCD中断输入管脚,其它I2C0和MIPI配置对应功能即可,其它管脚为输出GPIO模式。具体请参考LK和内核中的dct配置,涉及的文件如下:

Lk:

vendor\mediatek\proprietary\bootable\bootloader\lk\scripts\dct\DrvGen.exe

vendor/mediatek/proprietary/bootable/bootloader/lk/target/evb3561sv_w_no2/dct/dct/codegen.dws

Kernel:

kernel-3.18\tools\dct\DrvGen.exe

kernel-3.18\drivers\misc\mediatek\mach\mt3561\evb3561sv_w_no2\dct\dct\codegen.dws

3 LK和kernel部分LCM代码架构

请参考Driver_All_in_One_V1.0_MT6735_6753.pdf文档中的LCM部分,在这里只说明具体的移植过。

4项目全局配置

device\atc\evb3561sv_w_no2\ProjectConfig.mk

因为我们的LCD屏使用1024x600的分辨率,在项目全局部分将屏幕分辨率修改成1024x600

LCM_HEIGHT = 600

LCM_WIDTH = 1024

5 LK部分的配置

添加LK部分的项目配置:

vendor\mediatek\proprietary\bootable\bootloader\lk\project\evb3561sv_w_no2.mk

CUSTOM_LK_LCM="cpt_clap070wp03xg_sn65dsi83"

如果有多个屏兼容,在CUSTOM_LK_LCM=""中添加即可,用空格隔开,如下:

CUSTOM_LK_LCM="cpt_clap070wp03xg_sn65dsi83 xxxx_xxxx_xxx_xxx"

5.1 LK中添加LCD驱动

5.1.1 lk中添加LCD驱动的全局配置

在vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm目录中添加

cpt_clap070wp03xg_sn65dsi83文件夹,如下:

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83

注意:cpt_clap070wp03xg_sn65dsi83文件夹名称必须跟

CUSTOM_LK_LCM="cpt_clap070wp03xg_sn65dsi83"

配置的名称一致,否则将不会生效。

在vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83文件夹中添加相应的驱动文件,如下:

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83\cpt_clap070wp03xg_sn65dsi83.c

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83\Makefile

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83\sn65dsi83_i2c.c

5.1.2 将配置的驱动加入的LCD驱动列表中

将上面添加的驱动添加到上一层驱动文件中

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\mt65xx_lcm_list.c

LCD驱动是通过mt65xx_lcm_list.c回调到LCD具体驱动结构体指针,再由LCD具体驱动结构体指针调用到对应的接口函数的。如果是多屏兼容的时候,mt65xx_lcm_list.c是通过具体驱动的ID号毁调到不同的子功能函数中的,具体请参考

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\mt65xx_lcm_list.c

的注册流程。

将lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83驱动添加到mt65xx_lcm_list.c中需要修改如下:

.........................................................................................................extern LCM_DRIVER hx8394d_hd720_dsi_vdo_tianma_lcm_drv;extern LCM_DRIVER cpt_clap070wp03xg_sn65dsi83_lcm_drv;extern LCM_DRIVER nt35520_hd720_tm_lcm_drv;...........................................................................................LCM_DRIVER *lcm_driver_list[] = {.........................................................#if defined(CPT_CLAP070WP03XG_SN65DSI83)&cpt_clap070wp03xg_sn65dsi83_lcm_drv,#endif.............................................................}

5.1.3 sn65dsi83针对1024x600鑫源屏的具体配置

sn65dsi83是TI的MIPI转LVDS芯片,ti提供相应的工具来设置sn65dsi83芯片的寄存器参数,在使用TI的DSI Tuner 2.0.exe(这个工具在TI网站上可以自己去下载)工具配置之前,首先先看鑫源屏的具体参数,注意我们硬件链接使用DE的Video模式(请参考电路原理图)。鑫源屏参数使用如下参数:

这个表格的理解:

HD+VD(可显示的有效像素)=1024x600

Vbp+vfP+vsync=320

Hbp+hfp+hsync=35

总的分辨率:HP+VP=(Vbp+vfP+vsync)+(VD+HD)=1344x635

如下图:

有该数据列表可知(其后所述均采用标称值),该屏幕分辨率为1024x600,时钟频率为51.2MHz,由此可知像素时钟周期(单位皮秒)为14065。但是其他数据就和结构体里的元素对应不上了,有以上数据手册可以得知,其一行1344个像素点,空白点是320个,即其扫描一行在行首会有320个无效像素点。根据手册又可知,其扫描一场即扫描一屏有35个空白行

即:

right_margin + hsync_len + left_margin = 一行总的空白数,在该款屏幕中这个和的值为320

upper_margin + lower_margin + hsync_len = 一场总空白行,在该款屏幕中,这个和的值为35

那么我们就可以根据这个原理,只要满足上面的要求,原则都是OK的。

5.1.3.1 sn65dsi83 寄存器配置

sn65dsi83我们使用TI提供的DSI Tuner 2.0.exe工具进行配置,打开DSI Tuner 2.0.exe工具,安装后打开,按照上面的配置信息填入DSI Tuner 2.0.exe工具,如下:

点击箭头执行下一步:

点击上图中圆圈,选择Generate CSR List, 生成如下图:

点击上图中标注红色按钮,生成CSR.txt文件,将文件保存,然后打开CSR.txt文件,将生成的寄存器数组合并到LCD驱动中,如下:

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83\cpt_clap070wp03xg_sn65dsi83.cstatic sn65dsi8x_setting_table sn65dis83_1024x600_init_table[] = {{0x09 , 0x00},{0x0A , 0x03},//0x05},{0x0B , 0x10},{0x0D , 0x00},{0x10 , 0x26},//0x26},{0x11 , 0x00},{0x12 , 0x1f},//0x26},{0x13 , 0x00},{0x18 , 0x78},{0x19 , 0x00},{0x1A , 0x03},{0x1B , 0x00},{0x20 , 0x00},{0x21 , 0x04},//0x05},{0x22 , 0x00},{0x23 , 0x00},{0x24 , 0x00},{0x25 , 0x00},{0x26 , 0x00},{0x27 , 0x00},{0x28 , 0x21},{0x29 , 0x00},{0x2A , 0x00},{0x2B , 0x00},{0x2C , 0x14},//0x28},//0x0a},{0x2D , 0x00},{0x2E , 0x00},{0x2F , 0x00},{0x30 , 0x03},//0x08},//0x0a},{0x31 , 0x00},{0x32 , 0x00},{0x33 , 0x00},{0x34 , 0xa0},//0x78},//0x14},{0x35 , 0x00},{0x36 , 0x00},{0x37 , 0x00},{0x38 , 0x00},{0x39 , 0x00},{0x3A , 0x00},{0x3B , 0x00},{0x3C , 0x00},{0x3D , 0x00},{0x3E , 0x00},{0x0D, 0x01},{REGFLAG_DELAY, 0x0a},{0x09, 0x01},{0xFF, 0x00},};

5.1.3.2 sn65dsi83和LCD模组的上下电时序

根据第1章节中描述,硬件给出的GPIO列表针对上下电时序部分有:

按照LCM电路描述AVDD和DVDD主要是给LVDS屏使用,而LCD_EN(原理图上为LVDS_RST PIN)给sn65dsi83用,所以上电时序需要分别查看对应器件的使用手册,如下:

LVDS的DVDD和AVDD上电时序:

sn65dsi83的RST管脚时序(请参开sn65dsi83.pdf 11页):

按照以上的上电时序部分的描述,代码修改如下:

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83\cpt_clap070wp03xg_sn65dsi83.c#define GPIO_LCD_AVDD_EN GPIO82#define GPIO_LCD_DVDD_EN GPIO83#define GPIO_LCD_BRIDGE_EN GPIO43 static void lcm_init(void){...............................................................#ifdef BUILD_LKprintf("[LK/LCM]lcm_init \n");/* step1: sn65dsi8x enbable and init *//* GPIO42 VDD18_LVDS for SN65DSI83 power */mt_set_gpio_mode(GPIO_LCD_DVDD_EN, GPIO_MODE_00); //IO口模式设置mt_set_gpio_dir(GPIO_LCD_DVDD_EN, GPIO_DIR_OUT);MDELAY(5);mt_set_gpio_mode(GPIO_LCD_AVDD_EN, GPIO_MODE_00);mt_set_gpio_dir(GPIO_LCD_AVDD_EN, GPIO_DIR_OUT);MDELAY(5);mt_set_gpio_out(GPIO_LCD_DVDD_EN, GPIO_OUT_ONE);MDELAY(20);mt_set_gpio_out(GPIO_LCD_AVDD_EN, GPIO_OUT_ONE);MDELAY(20);/* GPIO127 LVDS_EN_R for SN65DSI83 */lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ONE);MDELAY(5);lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ZERO);MDELAY(20);lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ONE);MDELAY(50);DSI_clk_HS_mode(0, NULL, 1);MDELAY(5);init_sn65dsi8x();MDELAY(10);.....................................}static void lcm_suspend(void){.......................................................unsigned char temp;printk("[Kernel/LCM]lcm_suspend enter \n");lcm_set_gpio_output(GPIO_LCD_BL_EN, GPIO_OUT_ZERO); //先将拉sn65dsi83 RST管脚,在拉AVDD和DVDD使能管脚MDELAY(20);/* step 1 power down lvds lcd */lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ZERO);MDELAY(10);//power down by zhaojrlcm_set_gpio_output(GPIO_LCD_AVDD_EN, GPIO_OUT_ZERO);MDELAY(20);lcm_set_gpio_output(GPIO_LCD_DVDD_EN, GPIO_OUT_ZERO);MDELAY(20);.................................................}static void lcm_resume(void){..................................................................printk("[Kernel/LCM]lcm_resume enter \n");DSI_clk_HS_mode(0, NULL, 1);MDELAY(50);/* step 1 resume sn65dsi8x *///power ON by zhaojrlcm_set_gpio_output(GPIO_LCD_DVDD_EN, GPIO_OUT_ONE);//先上电,再复位MDELAY(20);lcm_set_gpio_output(GPIO_LCD_AVDD_EN, GPIO_OUT_ONE);MDELAY(20);//end power on by zhaojrlcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ONE);MDELAY(5);lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ZERO);MDELAY(20);lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ONE);MDELAY(10);init_sn65dsi8x();MDELAY(10);.......................................................................................}

5.1.3.3 LCD在BB端调用设备端打开的时候参数的设置

按照LVDS屏和sn65dsi83 IC链接到主机端的DSI接口的链接方式设置lcm_get_params()函数,如下:

#define FRAME_WIDTH (1024)

#define FRAME_HEIGHT (600)

static void lcm_get_params(LCM_PARAMS *params)

{

............................................

memset(params, 0, sizeof(LCM_PARAMS));

if (NO_USE_LCD_ID_GPIO80_PIN) {

printf("lcm_get_params::[yzq][LK]...1024x600 lcm_get_params...\n");

params->type = LCM_TYPE_DSI; //使用DSI接口

params->width = FRAME_WIDTH; //LCD显示宽度

params->height = FRAME_HEIGHT; //LCD显示高度

params->dsi.mode = SYNC_EVENT_VDO_MODE; //DSI Video模式

/* DSI */

/* Command mode setting */

params->dsi.LANE_NUM = LCM_FOUR_LANE; //DSI接口使用4 Lens

/* The following defined the fomat for data coming from LCD engine. */

params->dsi.data_format.format = LCM_DSI_FORMAT_RGB888; //24位显示

params->dsi.word_count = FRAME_WIDTH * 3;

params->dsi.vertical_sync_active =3;// 8;//10;//2 //vsync

params->dsi.vertical_backporch =12;// 15;//30;//2;//vbp

params->dsi.vertical_frontporch = 20;//32;//4; //vfp

params->dsi.vertical_active_line = FRAME_HEIGHT;

params->dsi.horizontal_sync_active =20;//40;//10; //hsync

params->dsi.horizontal_backporch = 160;//120;//20;//24;//hbp

params->dsi.horizontal_frontporch = 140;//30;//hfp

params->dsi.horizontal_active_pixel = FRAME_WIDTH;

params->dsi.PS = LCM_PACKED_PS_24BIT_RGB888; //24位显示

params->dsi.pll_select = 0; /* 0: MIPI_PLL; 1: LVDS_PLL */

params->dsi.PLL_CLOCK = 156;//52MHZ=(1424x645x24x60)/4(lanes)/2

params->dsi.cont_clock = 1;

}

5.1.3.4 链接到BB端的LCM SensorsIC使用同一个的情况

即SensorID号项目,LVDS的LCD不同分辨率的屏进行兼容

驱动将根据硬件设计的LCD ID管脚进行判断是链接到哪块屏幕,根据不同的ID管脚的值下不同屏幕的sn65dsi83寄存器配置参数和LVDS屏幕的显示参数,主要是修改初始化和屏幕参数,我们的项目目前没有做同一Sensor ID,不同LVDS屏的兼容,所以需要去掉这个功能,但保留接口,具体代码修改如下:

#define NO_USE_LCD_ID_GPIO80_PIN 1

void init_sn65dsi8x(void)

{

..........................................

//if (lcm_get_gpio_value(GPIO80)) {/*GPIO80 == 1*/

if (NO_USE_LCD_ID_GPIO80_PIN) { //1024x600的屏初始化

printf("init_sn65dsi8x::[yzq][LK]...1024x600 panel path...\n");

push_table(sn65dis83_1024x600_init_table,

sizeof(sn65dis83_1024x600_init_table) / sizeof(sn65dsi8x_setting_table));

}else {

printf("init_sn65dsi8x::[yzq][LK]...1280x800 panel path...\n"); //1280x800屏的初始化

push_table(sn65dis83_1280x800_table,

sizeof(sn65dis83_1280x800_table) / sizeof(sn65dsi8x_setting_table));

}

.......................................................................

}

static void lcm_get_params(LCM_PARAMS *params)

{

memset(params, 0, sizeof(LCM_PARAMS));

//if (lcm_get_gpio_value(GPIO80)) {

if (NO_USE_LCD_ID_GPIO80_PIN) { //1024x600屏的参数配置

printf("lcm_get_params::[yzq][LK]...1024x600 lcm_get_params...\n");

params->type = LCM_TYPE_DSI;

.................................

}esle{ //另外分辨率屏的参数设置

.............................

}

lk部分最后请参考

vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\cpt_clap070wp03xg_sn65dsi83\

目录下的源码修改。

6 LCD内核部分的移植

6.1 内核配置

kernel-3.18\arch\arm64\configs\evb3561sv_w_no2_defconfig

CONFIG_MTK_LCM=y

CONFIG_CUSTOM_KERNEL_LCM="cpt_clap070wp03xg_sn65dsi83"

#CONFIG_MTK_LCM_DEVICE_TREE_SUPPORT=y

CONFIG_MTK_FB=y

CONFIG_MTK_LCM_PHYSICAL_ROTATION="0"

CONFIG_LCM_HEIGHT="600"

CONFIG_LCM_WIDTH="1024"

6.2 添加驱动

按照LK部分的代码说明,内核的LCM驱动架构其实跟LK基本是一样的,稍微有一定的差别。

kernel-3.18\drivers\misc\mediatek\lcm\mt65xx_lcm_list.h

添加一行:

extern LCM_DRIVER cpt_clap070wp03xg_sn65dsi83_lcm_drv;

kernel-3.18\drivers\misc\mediatek\lcm\mt65xx_lcm_list.c

添加以下内容:

LCM_DRIVER *lcm_driver_list[] = {

...........................................................

#if defined(CPT_CLAP070WP03XG_SN65DSI83)

&cpt_clap070wp03xg_sn65dsi83_lcm_drv,

#endif

.............................................................

}

配置sn65dsi83的I2C号和地址:

kernel-3.18\drivers\misc\mediatek\lcm\cpt_clap070wp03xg_sn65dsi83\sn65dsi83_i2c.c

#define sn65dsi83_SLAVE_ADDR_WRITE (0x5a >> 1)

#define sn65dsi83_in_i2c0 0

配置LCD模块电源控制管脚在内核中的访问方式:

kernel-3.18\drivers\misc\mediatek\lcm\cpt_clap070wp03xg_sn65dsi83\lcm_drv_cpt_clap070wp03xg_sn65dsi83.c

void lcm_request_gpio_control(struct device *dev)

{

.....................................

GPIO_LCD_BRIDGE_EN = 43;// of_get_named_gpio(dev->of_node, "gpio_lcm_bridge_en", 0);

GPIO_LCD_DVDD_EN = 83;

GPIO_LCD_AVDD_EN = 82;

............................................

gpio_request(GPIO_LCD_BRIDGE_EN, "GPIO_LCD_BRIDGE_EN");

//printk("[KE/LCM] GPIO_LCD_BRIDGE_EN = 0x%x\n", GPIO_LCD_BRIDGE_EN);

gpio_request(GPIO_LCD_DVDD_EN, "GPIO_LCD_DVDD_EN");

gpio_request(GPIO_LCD_AVDD_EN, "GPIO_LCD_AVDD_EN");

kernel-3.18\drivers\misc\mediatek\lcm\cpt_clap070wp03xg_sn65dsi83\cpt_clap070wp03xg_sn65dsi83.h

extern unsigned int GPIO_LCD_BRIDGE_EN;

extern unsigned int GPIO_LCD_DVDD_EN;

extern unsigned int GPIO_LCD_AVDD_EN;

具体驱动的实现,这个文件可以直接拷贝LK中的驱动,稍加修改即可实现:

kernel-3.18\drivers\misc\mediatek\lcm\cpt_clap070wp03xg_sn65dsi83\cpt_clap070wp03xg_sn65dsi83.c

内核中实现LCM模组具体的驱动是需要注意,LCD驱动在加载的时候,初始化我们将其设置成空并保持时钟输出即可,原因是保证LK阶段和内核阶段logo的连续性,因为在lk阶段已经正确初始化LCM模组,内核阶段不需要再次初始化,否则会导致LCD闪屏。具体情况如下:

static void lcm_init(void)

{

pr_info("[Kernel/LCM]lcm_init\n");

DSI_clk_HS_mode(0, NULL, 1);

}

而必须实现休眠唤醒函数,否则系统休眠之后无法唤醒:

以下注意:上电时先上DVDD,后上AVDD。下电时:先下AVDD,后下DVDD

static void lcm_suspend(void)

{

pr_info("[Kernel/LCM]lcm_suspend enter \n");

// step 1 sn65dsi83 RST no enable

gpio_request(GPIO_LCD_BRIDGE_EN, "sn65dsi83");

lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ZERO);

gpio_free(GPIO_LCD_BRIDGE_EN);

MDELAY(10);

//AVDD power down /DVDD power down by zhaojr

gpio_request(GPIO_LCD_AVDD_EN, "sn65dsi83_avdd_en");

lcm_set_gpio_output(GPIO_LCD_AVDD_EN, GPIO_OUT_ZERO);

gpio_free(GPIO_LCD_AVDD_EN);

MDELAY(20);

gpio_request(GPIO_LCD_DVDD_EN, "sn65dsi83_dvdd_en");

lcm_set_gpio_output(GPIO_LCD_DVDD_EN, GPIO_OUT_ZERO);

gpio_free(GPIO_LCD_DVDD_EN);

MDELAY(20);

//end power down by zhaojr

/* step 3 set dsi LP mode */

DSI_clk_HS_mode(0, NULL, 0);}

static void lcm_resume(void)

{

pr_info("[Kernel/LCM]lcm_resume enter\n");

/* step 1 resume sn65dsi8x */

DVDD power on /AVDD power on by zhaojr

gpio_request(GPIO_LCD_DVDD_EN, "sn65dsi83_dvdd_en");

lcm_set_gpio_output(GPIO_LCD_DVDD_EN, GPIO_OUT_ONE);

gpio_free(GPIO_LCD_DVDD_EN);

MDELAY(20);

gpio_request(GPIO_LCD_AVDD_EN, "sn65dsi83_avdd_en");

lcm_set_gpio_output(GPIO_LCD_AVDD_EN, GPIO_OUT_ONE);

gpio_free(GPIO_LCD_AVDD_EN);

MDELAY(20);

//end power on by zhaojr

//sn65dsi83 enable RST

gpio_request(GPIO_LCD_BRIDGE_EN, "sn65dsi83");

lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ONE);

MDELAY(5);

lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ZERO);

MDELAY(20);

lcm_set_gpio_output(GPIO_LCD_BRIDGE_EN, GPIO_OUT_ONE);

MDELAY(50);

gpio_free(GPIO_LCD_BRIDGE_EN);

DSI_clk_HS_mode(0, NULL, 1);

MDELAY(5);

//Re initialization of LCD

init_sn65dsi8x();

MDELAY(10);

}

7 Android OS系统部分

Android系统启动之后主界面显示超大或图标偏小,主要原因是Android的LCD分辨率density设置得不正确引起的,一般使用的比率为160、240、320等,尝试修改一下即可。

我们的屏的分辨率是1024x600使用的标准值density值是240。在Android全部配置文件中将density值修改成240即可

device\atc\evb3561sv_w_no2\system.prop

#ro.sf.lcd_density=320

ro.sf.lcd_density=240

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。