( /device/mediateksample/$projectname/projectconfig.mk
查看kenel_version 参数 就可以看到项目kernel版本
)
1 总MK配置LCM的相关尺寸
alps/device/mediateksample/k62v1_64_bsp/ProjectConfig.mk
BOOT_LOGO = hd720
LCM_HEIGHT = 1440
LCM_WIDTH = 720
2 cfg文件配置LCM的尺寸与编译LCD模块名称
alps/kernel-4.9/arch/arm64/configs/k62v1_64_bsp_defconfig
CONFIG_CUSTOM_KERNEL_LCM="ili9881c_hdp_dsi_vdo_ilitek_rt5081"
CONFIG_LCM_HEIGHT="1440"
CONFIG_LCM_WIDTH="720"
3 配置 bootloader的logo大小与编译LCD模块名称
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/project/k62v1_64_bsp.mk
CUSTOM_LK_LCM="ili9881c_hdp_dsi_vdo_ilitek_rt5081"
BOOT_LOGO := hd720
(
修改分辨率 lcm_width lcm_height 还要修改对应的logo
logo 所在文件夹 /vendor/mediatek/proprietary/bootable/bootloader/lk/dev/log
查看文件夹内图片的分辨率即可知道要改什么logo
)
4 根据上面的配置,添加对应的驱动文件。
kernel驱动文件ili9881c_hdp_dsi_vdo_ilitek_rt5081添加,将文件夹丢进kernel的alps/kernel-4.9/drivers/misc/mediatek/lcm/目录下;
alps/kernel-4.9/drivers/misc/mediatek/lcm/ili9881c_hdp_dsi_vdo_ilitek_rt5081/ili9881c_hdp_dsi_vdo_ilitek_rt5081.c
bootloader驱动文件ili9881c_hdp_dsi_vdo_ilitek_rt5081添加,将文件夹丢进bootloader的alps/kernel-4.9/drivers/misc/mediatek/lcm/目录下;
(
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm 下有项目驱动我就,还包含了这些驱动的定义,找不到对于驱动文件,复制一个类似的修改即可,文件名文件内容都要改
)
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/ili9881c_hdp_dsi_vdo_ilitek_rt5081/ili9881c_hdp_dsi_vdo_ilitek_rt5081.c
5 添加头文件定义
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.h
extern struct LCM_DRIVER ili9881c_hdp_dsi_vdo_ilitek_rt5081_lcm_drv;
6 添加LCM驱动列表
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.c
struct LCM_DRIVER *lcm_driver_list[] = {
......
#if defined(ILI9881C_HDP_DSI_VDO_ILITEK_RT5081)
&ili9881c_hdp_dsi_vdo_ilitek_rt5081_lcm_drv,
#endif
......
}
7 接口检查与GPIO配置
RESET_PIN
存在兼容屏幕
(1)通过读取寄存器值
(2)通过GPIO电平判断:读取GPIO电平,对应LCM电路选择支持的屏幕
配置gpio输入模式与管脚定义
alps/kernel-4.9/arch/arm64/boot/dts/mediatek/k62v1_64_bsp.dts
8 背光问题
(1)直接控制PMIC输出背光,如:
if (enabled)
{
pmic_set_register_value(PMIC_RG_LDO_VLDO28_EN_0,1);
pmic_set_register_value(PMIC_RG_VCAMA_VOSEL,0x01);
pmic_set_register_value(PMIC_RG_LDO_VCAMA_EN,1);
}
else
{
pmic_set_register_value(PMIC_RG_LDO_VLDO28_EN_0,0);
pmic_set_register_value(PMIC_RG_LDO_VCAMA_EN,0);
}
(2)通过LCM背光芯片控制背光
配置GPIO,模拟IIC 实现寄存器读写 ,控制背光亮度与开关
(3)外加背光芯片,方法同(2)
8 适当调整MIPI速率,改善射频干扰
static void lcm_get_params(LCM_PARAMS *params)
{
......
#ifndef CONFIG_FPGA_EARLY_PORTING
#if (LCM_DSI_CMD_MODE)
params->dsi.PLL_CLOCK = 220;
#else
params->dsi.PLL_CLOCK = 255;
#endif
params->dsi.PLL_CK_CMD = 220;
params->dsi.PLL_CK_VDO = 255;
#else
params->dsi.pll_div1 = 0;
params->dsi.pll_div2 = 0;
params->dsi.fbk_div = 0x1;
#endif
....
}
9 串口调试方法
飞串口线路,LCM_LOGI()打印LOG.
LCM_LOGI("%s,ili9881c_id=0x%08x,version_id=0x%xn",
__func__, id, version_id);