欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

MTK平台的LCM驱动移植

程序员文章站 2022-04-12 19:28:46
在Kernel部分,添加新lcm型号支持步骤:1.将新LCM的驱动文件 xxxx_hd720_dsi_vdo 文件夹放在kernel-3.18\drivers\misc\mediatek\lcm下驱动文件的命名格式为:型号_分辨率_MIPI接口_ 接口下SYNC模式1)MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口)、DPI(也叫RGB接口)、DSI2)接口下SYNC模式:DSI接口有两种sync 模式:video mode和command mode,其中video mode是BB端一...

一、Android系统开机启动过程及驱动概述:

MTK平台的显示驱动分两块,一块在LK代码里面,一块在kernel代码里面;
LK的lcm驱动路径在:vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\xxxx_hd720_dsi_vdo
kernel的lcm驱动路径在:kernel-x.x\drivers\misc\mediatek\lcm\xxxx_hd720_dsi_vdo
lcm驱动中,最主要的是了解该结构体中的成员函数运行过程

LCM_DRIVER xxxx_hd720_lcm_drv =
{
    .name            ="xxxx_hd720_lcm_drv",   //LCM 的型号名,lk的型号名和kernel 型号名必须保持一致,否则会重启;
    .set_util_funcs = lcm_set_util_funcs,
    .get_params     = lcm_get_params,    //lcm 显示和mipi 时序参数配置,
    .init           = lcm_init,             //lcm 的初始化参数
    .suspend        = lcm_suspend,          /休眠
    .resume         = lcm_resume,           //唤醒
    .compare_id    = lcm_compare_id,  //LCM ID 获取,只有在lk有效,lk在启动阶段会调用该接口,通过返回值来判断当前lcm模组与驱动匹配
};

开机启动会首先跑LK的中lcm驱动的.get_params和.init 给LCM模组进行初始化,其作用的生命周期一直到系统启动完成后,短按pwrkey或者自动休眠完成。
重新唤醒之后,就跑kernel 中lcm驱动中的.suspend和.resume;
MTK平台的LCM驱动移植

移植前需要注意:
了解清楚本身本身的硬件特性:
比如分辨率最高支持到多少(MTK平台还比较关心当前的LCM显示屏是物理竖屏还是物理横屏,MTK的手机平台有默认不支持竖屏之说)?最多能支持几通道的mipi-DSI?

二、LK部分,添加新lcm型号支持
1.将新LCM的驱动xxxx_hd720_dsi_vdo文件夹放在vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm下面;
2.添加LCM的驱动型号到lcm_list中,修改文件如下:
vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\mt65xx_lcm_list.c

LCM_DRIVER *lcm_driver_list[] = {
#if defined(xxxx_HD720_DSI_VDO)
        &xxxx_hd720_lcm_drv,
#endif

3.将新lcm的文件型号添加到lk的配置文件中:
vendor\mediatek\proprietary\bootable\bootloader\lk\project\xx_xx_bsp.mk
在CUSTOM_LK_LCM添加你要添加的屏型号,比如:CUSTOM_LK_LCM="xxxx_hd720_dsi_vdo"

4.在device文件夹下需要配置对应屏幕分辨率的LOGO(看文件夹下有以下哪个路径就改哪个路径):
device\mediateksample\len6737m_65_sh_n\ProjectConfig.mk
device\lentek\len6737m_65_sh_n\ProjectConfig.mk

BOOT_LOGO = wvga (对应LOGO名在该路径下找:vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo)
LCM_HEIGHT = 800
LCM_WIDTH = 480

三、在Kernel部分,添加新lcm型号支持步骤:

1.将新LCM的驱动文件 xxxx_hd720_dsi_vdo 文件夹放在kernel-3.18\drivers\misc\mediatek\lcm下
驱动文件的命名格式为:型号_分辨率_MIPI接口_ 接口下SYNC模式
1)MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口)、DPI(也叫RGB接口)、DSI
2)接口下SYNC模式:DSI接口有两种sync 模式:video mode和command mode,其中video mode是BB端一直刷数据到LCM,cmd mode是在有数据更新时刷数据到LCM GRAM中)

2.将LCM的驱动型号添加到lcm_list.c中:kernel-3.18\drivers\misc\mediatek\lcm\mt65xx_lcm_list.c

LCM_DRIVER *lcm_driver_list[] = {
#if defined(XXXX_HD720_DSI_VDO)  //需要大写
  &xxxx_hd720_lcm_drv,
#endif

3.在lcm_list.h中添加LCM名称:kernel-3.18\drivers\misc\mediatek\lcm\mt65xx_lcm_list.h

extern LCM_DRIVER xxxxx_hd720_lcm_drv;

4.修改配置文件中的LCM名称:kernel-3.18\arch\arm64\configs\len6737m_65_sh_n_defconfig

CONFIG_CUSTOM_KERNEL_LCM="xxxx_hd720_dsi_vdo"

同时在该文件下配置对应的分辨率:若没有在该文件下发现配置分辨率信息,则需要在kernel-3.18\drivers\misc\mediatek\video\Kconfig下修改对应的分辨率

CONFIG_LCM_HEIGHT="480"
CONFIG_LCM_WIDTH="800"

本文地址:https://blog.csdn.net/weixin_44375547/article/details/107575447

相关标签: MTK驱动 mtk