Lk:
1、添加驱动
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/
2、配置vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.c
/***注意,要跟驱动中的结构体名字对应***/
extern LCM_DRIVER xxxx_dsi_vdo_boe_lcm_drv;
#if defined(XXXX_DSI_VDO_BOE)
&xxxx_dsi_vdo_boe_lcm_drv,
3、配置vendor/mediatek/proprietary/bootable/bootloader/lk/project/tek6735m_65_d_n.mk
CUSTOM_LK_LCM="屏驱动文件夹名字"
同步修改Logo资源
BOOT_LOGO=qvgal
Kernel:
1、添加驱动
kernel-3.18/drivers/misc/mediatek/lcm/
2、配置kernel-3.18/drivers/misc/mediatek/lcm/mt65xx_lcm_list.h
/***注意,要跟驱动中的结构体名字对应***/
#if defined(XXXX_DSI_VDO_BOE)
&xxxx_dsi_vdo_boe_lcm_drv,
#endif
3、配置kernel-3.18/drivers/misc/mediatek/lcm/mt65xx_lcm_list.c
extern LCM_DRIVER xxxx_dsi_vdo_boe_lcm_drv;
4、配置kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig
CONFIG_CUSTOM_KERNEL_LCM="屏驱动文件夹名字"
/***选择自己屏对应的分辨率***/
CONFIG_LCM_HEIGHT="320"
CONFIG_LCM_WIDTH="240"
5、配置kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_debug_defconfig
CONFIG_CUSTOM_KERNEL_LCM="屏驱动文件夹名字"
CONFIG_LCM_HEIGHT="320"
CONFIG_LCM_WIDTH="240"
Device:
1、配置device/teksun/tek6735m_65_d_n/ProjectConfig.mk
BOOT_LOGO = qvgal
LCM_HEIGHT = 320
LCM_WIDTH = 240
2、配置device/teksun/tek6735m_65_d_n/device.mk
/***修改屏的密度,不然图标过大或过小显示不正常***/
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.sf.lcd_density=160
注意:单通道的屏以及cphy屏在平台端寄存器配置不一样,不修改会导致无法休眠唤醒
后续有空会更新其他设备移植流程
知识补充:
1.一般拿到屏厂初始化代码后,将其代替驱动中的static struct LCM_setting_table lcm_initialization_setting[] ={}参数,没有驱动则在原生代码中找一个差不多类型的修改下;
2.修改static void lcm_get_params(LCM_PARAMS *params)中的参数配置
params->type = LCM_TYPE_DSI;
params->width = FRAME_WIDTH;
params->height = FRAME_HEIGHT;
#if defined(LCM_DSI_CMD_MODE)
params->dsi.mode = CMD_MODE;
#else
params->dsi.mode =BURST_VDO_MODE; //SYNC_EVENT_VDO_MODE;//SYNC_PULSE_VDO_MODE
#endif
// DSI
/* Command mode setting */
params->dsi.LANE_NUM = LCM_TWO_LANE;//LCM_THREE_LANE;//对应所用屏的通道数
//The following defined the fomat for data coming from LCD engine.
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;
// Video mode setting
params->dsi.intermediat_buffer_num = 2;
params->dsi.PS=LCM_PACKED_PS_24BIT_RGB888;
/*VS=6 ,VBP=40 ,VFP=40 ,HS=10 ,HBP=40 ,HFP=40*/
//params->dsi.vertical_active_line = FRAME_HEIGHT;
//修改前后肩
params->dsi.vertical_sync_active = 4;//5;
params->dsi.vertical_backporch = 16;//15;
params->dsi.vertical_frontporch = 20;
params->dsi.vertical_active_line = FRAME_HEIGHT;
//params->dsi.vertical_active_line = 800;
params->dsi.horizontal_sync_active = 10;
params->dsi.horizontal_backporch = 60;//80;
params->dsi.horizontal_frontporch = 60;//80;
params->dsi.horizontal_active_pixel = FRAME_WIDTH;
params->dsi.HS_TRAIL = 20; //20
// Bit rate calculation
params->dsi.PLL_CLOCK = 185;//240;221 j208//this value must be in MTK suggested table //225 240
params->dsi.ssc_disable = 1;
3.修改下时序,一般上电时序在lcm_init中,有的也会有power相关的函数,不过调用也是在Init中调用,所以在lcm_init修改即可
4.不兼容其他屏的情况下,在static unsigned int lcm_compare_id(void)直接return 1;后续兼容判别也是在这里进行
理论上上面配置对后一般能点亮,没有点亮则接上串口看看哪里出错了
end========================================================