LCM Driver Porting Guide

Chinese, Simplified

简述:

 

本文档主要介绍mipi接口的LCM驱动调试移植的步骤,基于mtk android开发平台。

 

方法一 在参考代码基础上直接修改,适用于调试阶段。

 

以参考代码为例,Lcm driver主要的驱动文件路径是:

kernel-3.10/drivers/misc/mediatek/lcm/hx8392a_dsi_cmd/hx8392a_dsi_cmd.c, 需客制化的地方主要有以下:

 

1. 修改mipi的工作模式,有两种,cmd mode 和video,根据spec来修改:

 

如果是cmd mode, 定义如下:

#define LCM_DSI_CMD_MODE        1

是video mode,定义如下:

#define LCM_DSI_CMD_MODE        0

 

2. 修改lcd 分辨率, 例如:

 

#define FRAME_WIDTH                                                      (720)

#define FRAME_HEIGHT                                                     (1280)

 

3. 修改mipi 时钟,例如:

 

params->dsi.PLL_CLOCK = 350;

 

4. 修改mipi lane的个数:

 

  params->dsi.LANE_NUM                       = LCM_FOUR_LANE;

 

5. 修改data格式(大多数情况用默认即可):

 

    params->dsi.data_format.color_order = LCM_COLOR_ORDER_RGB;

    params->dsi.data_format.trans_seq   = LCM_DSI_TRANS_SEQ_MSB_FIRST;

    params->dsi.data_format.padding     = LCM_DSI_PADDING_ON_LSB;

    params->dsi.data_format.format      = LCM_DSI_FORMAT_RGB888;

 

6. 如果是video mode还需修改porch参数,具体值请参考lcd 规格书 。

 

    params->dsi.vertical_sync_active                        = 2;

    params->dsi.vertical_backporch                          = 2;

    params->dsi.vertical_frontporch                         = 2;

    params->dsi.vertical_active_line                         = FRAME_HEIGHT;

 

    params->dsi.horizontal_sync_active                   = 8;

    params->dsi.horizontal_backporch                     = 60;

    params->dsi.horizontal_frontporch                            = 60;

    params->dsi.horizontal_active_pixel                   = FRAME_WIDTH;

 

7. 修改数组lcm_initialization_setting,填充对应的初始化参数,这些参数一般由屏厂FAE提供。

 

8. 修改数组lcm_deep_sleep_mode_in_setting[] 和lcm_sleep_out_setting[], 分别对应屏sleep和sleep out时需下的指令。

 

9. 如果是cmd mode的屏,可能还需修改lcm_update()函数,填充刷屏的起始位置和结束位置,

大多数情况用默认的即可。有些屏的寄存器可能比较特殊,此时请参考规格书修改。

 

10. 有些屏用的不是系统电源,需要外部供电,需增加对应的上电函数。例如:

 

static void lcm_init_power(void)

{

#ifdef BUILD_LK

       mt6325_upmu_set_rg_vgp1_en(1);

#else

       printk("%s, begin\n", __func__);

       hwPowerOn(MT6325_POWER_LDO_VGP1, VOL_DEFAULT, "LCM_DRV");

       printk("%s, end\n", __func__);

#endif

}

 

 

LCM_DRIVER nt35595_fhd_dsi_cmd_truly_nt50358_720p_lcm_drv=

{

    .name              = "nt35595_fhd_dsi_cmd_truly_nt50358_720p_drv",

    .set_util_funcs   = lcm_set_util_funcs,

    .get_params          = lcm_get_params,

    .init                        = lcm_init,/*tianma init fun.*/

    .suspend            = lcm_suspend,

    .resume             = lcm_resume,

     .compare_id        = lcm_compare_id,

     .init_power              = lcm_init_power,

     .resume_power = lcm_resume_power,

     .suspend_power = lcm_suspend_power,

     .esd_check = lcm_esd_check,

     .set_backlight = lcm_setbacklight,

        .ata_check          = lcm_ata_check,

        .update         = lcm_update,

//     .switch_mode        = lcm_switch_mode,

};

 

方法二 新增一个lcd driver. 步骤如下, 以 hx8xxx为例:

 

1. 在kernel-3.10/drivers/misc/mediatek/lcm/ 路径下新建文件夹hx8xxx_dsi_cmd。在文件夹里添加2个文件: hx8xxx_dsi_cmd.c , Makefile.  Makefile的内容如下:

 

include $(srctree)/drivers/misc/mediatek/Makefile.custom

 

obj-y += hx8xxx_dsi_cmd.o

 

hx8xxx_dsi_cmd.o 即对应源文件 hx8xxx_dsi_cmd.c。  hx8xxx_dsi_cmd.c的内容可直接复制 hx8392a_dsi_cmd.c, 客制化的地方参考前面方法1. 另外要改下一些变量的名字,如

LCM_DRIVER hx8392a_dsi_cmd_lcm_drv =

{

    .name                  = "hx8392a_dsi_cmd",

 

改为:

LCM_DRIVER hx8xxx_dsi_cmd_lcm_drv =

{

    .name                  = "hx8xxx_dsi_cmd",

 

2. 修改kernel-3.10/drivers/misc/mediatek/lcm/mt65xx_lcm_list.c. 增加 hx8xxx_dsi_cmd_lcm_drv的声明和引用:

 

extern LCM_DRIVER hx8xxx_dsi_cmd_lcm_drv ;

 

LCM_DRIVER* lcm_driver_list[] =

{

….

#if defined(HX8XXX_DSI_CMD)

       &hx8xxx_dsi_cmd_lcm_drv ,

#endif

 

3. 修改kernel-3.10/arch/arm64/configs/xxx_debug_defconfig 和xxx_defconfig.

CONFIG_CUSTOM_KERNEL_LCM="hx8392a_dsi_cmd"

改为

CONFIG_CUSTOM_KERNEL_LCM="hx8xxx_dsi_cmd"

 

如果分辨率有变化,下面2行也要改:

CONFIG_LCM_HEIGHT="1280"

CONFIG_LCM_WIDTH="720"

 

 

修改后,需重新编译kernel 和boot.img. 然后下载即可。

 

 

 

 

The end..

文档中心

以上内容是否对您有帮助?