搜索

2

主题

3

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2020-11-16 11:19:44 9470 浏览 1 回复

MTK LCM调试过程

本帖最后由 YWXY 于 2020-11-16 13:47 编辑

驱动移植环境:
LCM驱动:ili9881c_hd720_dsi_vdo
主  控:MT6761
内  核:kernel-4.9
工  程:k61v1_64_bsp

1.硬件IO口配置
打开vendor\mediatek\proprietary\scripts\dct\DrvGen.exe工具
配置kernel和vendor的dws文件,路径如下
vendor:vendor\mediatek\proprietary\bootable\bootloader\lk\target\k61v1_64_bsp\dct\dct\codegen.dws
kernel:kernel-4.9\drivers\misc\mediatek\dws\mt6761\k61v1_64_bsp.dws
配置相关LCM PWM引脚、RST复位引脚、DISP_PWM引脚和LCM电源控制引脚。本例中dws文件使用的默认配置。

2.文件移植
2.1 将屏驱动代码添加到lk、kernel 目录lcm文件中。路径如下
lk:vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\ili9881c_hd720_dsi_vdo
Kernel:kernel-4.9\drivers\misc\mediatek\lcm\ili9881c_hd720_dsi_vdo
2.2 修改配置文件
Lk:
2.2.1 在mt65xx_lcm_list.c文件中添加extern屏驱动设备名并在lcm_driver_list和lcm_name_list中添加屏驱动设备名
    路径:vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\mt65xx_lcm_list.c
  1. extern LCM_DRIVER ili9881c_hd720_lcm_drv;
复制代码
  1. LCM_DRIVER *lcm_driver_list[] = {
  2. #if defined(ILI9881C_HD720_DSI_VDO)
  3.         &ili9881c_hd720_lcm_drv,
  4. #endif};
复制代码
  1. unsigned char lcm_name_list[][128] = {
  2. #if defined(ILI9881C_HD720_DSI_VDO)
  3.         "ili9881c_hd720_lcm_drv",
  4. #endif};
复制代码

2.2.2 vendor\mediatek\proprietary\bootable\bootloader\lk\project\k61v1_64_bsp.mk      
配置屏驱动文件:   CUSTOM_LK_LCM="ili9881c_hd720_dsi_vdo"
配置对应分辨率logo: BOOT_LOGO := hd720

Kernel :
2.2.3 kernel-4.9\drivers\misc\mediatek\lcm\mt65xx_lcm_list.c 中在lcm_driver_list和lcm_name_list中添加屏驱动设备名
  1. LCM_DRIVER *lcm_driver_list[] = {
  2. #if defined(ILI9881C_HD720_DSI_VDO)
  3.         &ili9881c_hd720_lcm_drv,
  4. #endif };
复制代码
  1. unsigned char lcm_name_list[][128] = {
  2. #if defined(ILI9881C_HD720_DSI_VDO)
  3.         "ili9881c_hd720_lcm_drv",
  4. #endif };
复制代码

2.2.4 kernel-4.9\drivers\misc\mediatek\lcm\mt65xx_lcm_list.h中添加extern屏驱动设备名
  1. extern struct LCM_DRIVER ili9881c_hd720_lcm_drv;
复制代码
2.2.5 kernel-4.9\arch\arm64\configs\k61v1_64_bsp_defconfig中配置屏驱动文件
  1. CONFIG_CUSTOM_KERNEL_LCM="ili9881c_hd720_dsi_vdo"
复制代码
2.2.6 device\mediateksample\k61v1_64_bsp\ProjectConfig.mk
配置对应分辨率logo:BOOT_LOGO = hd720
配置对应分辨率:  LCM_HEIGHT = 1280
             LCM_WIDTH = 720
3.编译
编译通过后,烧录到硬件,上电后观察屏幕是否正常显示。

回复

使用道具 举报

2

主题

3

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2020-11-16 14:23:38
本帖最后由 YWXY 于 2020-11-16 14:25 编辑

4.调试过程中的异常与处理
本例中主要遇到的问题是:上电后所有显示画面旋转了180°
尝试过显示相位(MTK_LCM_PHYSICAL_ROTATION)设置为180、设置0X36寄存机初始值等方法,均未达预期效果。
最后发现在vendor目录下的硬件配置文件有以下硬件旋转设置:
文件路径:vendor\mediatek\proprietary\hardware\hwcomposer\hwc.cpp
  1. void HWCMediator::initFeatures()
  2. {
  3.     memset(&m_features, 0, sizeof(hwc_feature_t));
  4. #ifdef MTK_LCM_PHYSICAL_ROTATION_HW
  5.         m_features.phy_rotation_180 = 1;
  6. #endif};
复制代码
通过注释lk下的驱动配置文件k61v1_64_bsp.mk中的定义语句,达到了旋转lk层启动logo到正常显示的目的。
文件路径:vendor\mediatek\proprietary\bootable\bootloader\lk\project\k61v1_64_bsp.mk
  1. #DEFINES += MTK_LCM_PHYSICAL_ROTATION_HW
复制代码


相应的kernel层注释编译配置文件k61v1_64_bsp_defconfig中的以下语句后,LCM调试显示方向正常
文件路径:kernel-4.9\arch\arm64\configs\k61v1_64_bsp_defconfig
  1. #CONFIG_MTK_LCM_PHYSICAL_ROTATION_HW=y
复制代码

至此,调试完成。

回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


登录或注册
快速回复 返回顶部 返回列表