MTK平台多种LCD兼容方案

  近期一个MTK6572项目中需要兼容多种不同厂商不同型号的显示屏,其中有两种天马屏(IC:HX8394和IC:NT35512S)在项目中不能通过硬件标识区别开,这样只能通过读取displayID来判定是哪种屏。分析了该平台显示相关逻辑,发现是支持多驱动的。这样一来,也方便对不同的屏进行调试与调优。下面介绍该方案的具体修改:

  1.修改配置文件,路径mediatek/config/{project}/Project.mk

  CUSTOM_LK_LCM = FWVGA_HX8394  FWVGA_NT35512S

  CUSTOM_KERNEL_LCM = FWVGA_HX8394  FWVGA_NT35512S

  2.在list文件中,添加其声明和引用.路径mediatek/custom/commom/kernel/lcm/mt65xx_lcm_list.c

...

extern LCM_DRIVER fwvga_hx8394_tianma_lcm_drv;

extern LCM_DRIVER fwvga_hx8394_tianma_lcm_drv;

...

LCM_DRIVER* lcm_driver_list[] = 

{

......

#if defined(FWVGA_HX8394)

&fwvga_hx8394_tianma_lcm_drv,

#endif

#if defined(FWVGA_HX8394)

&fwvga_nt35512s_tianma_lcm_drv,

#endif

......

}

3.在相应的驱动文件中,添加lcm_compare_id(),用于判断当前连接的LCD

如在fwvga_hx8394_tianma中,

  static unsigned int lcm_compare_id(void)
{
  ......

    
    //*************Enable CMD2 Page1  *******************//
    data_array[0]=0x00063902;
    data_array[1]=0x52AA55F0;
    data_array[2]=0x00000108;
    dsi_set_cmdq(data_array, 3, 1);
    MDELAY(10); 
    
    data_array[0] = 0x00033700;// read id return two byte,version and id
    dsi_set_cmdq(data_array, 1, 1);
    MDELAY(10); 
    
    len = read_reg_v2(0xC5, buffer, 2);
       DMS_LCD(" (TIANMA,IC:HX8394)compare_id--buf[0]=0x%x, buf[1]=0x%x, len=%d\n", buffer[0], buffer[1], len);

      if ((buffer[0] == 0x55) && (buffer[1] == 0x12)) 
      {
/*the type:TIANMA(IC:NT35512). Another driver will be used.*/
return 0;
      }

      /*the type:TIANMA(IC:HX8394) */
      return 1;
}

你可能感兴趣的:(LCD)