一、LK阶段LCD的初始化流程
高通平台下的Android系统的正常运行,分为PBL、SBL1、LK、Kernel、android系统5个阶段,而LCD的初始化是在LK阶段。在LK阶段又分为target_init()和app_init()部分,LCD的初始化函数target_display_init()是在app_init()函数中的aboot_init()中加载的,在aboot_init()中先去判断系统是以哪种方式启动的,然后在进入target_display_init()函数中初始化LCD。大致流程如下:
1.在target_display_init()函数中主要调用gcdb_display_init()函数,这个函数是一个核心函数。从这个函数值中一步步去运行。
2.进入oem_panel_select()函数去选择要使用那一款LCD屏,选择的机制有3种方式,第一种:根据LCD的引脚电平去判断,不同的LCD引脚的电平不一样;第二种:使用I2C读取寄存器方式去读取LCD芯片内部寄存器中的ID去判断;第三种:将第一种和第二种方式结合起来去判断是哪一款屏。
3.确定哪一款屏后,进入init_panel_data()函数去把屏的参数放到panel_struct结构体中,而屏参数的来自屏的头文件里,这个头文件里面包含了屏亮、屏灭、屏timing 、背光等参数。所有的屏的参数都存放在dev/gcdb/display/include下面。
4.存储好屏参数信息后,就进入dsi_panel_init()函数去开始初始化屏的相关参数,如:分辨率、颜色、操作模式、数据通道的配置。其实这个函数的实现就是把之前从屏头文件拷贝过来的参数在重新赋给另一变量。屏的操作模式分为两种:commend模式和video模式,两种模式的本质区别是通过有无RAM来区分的。