lcm的分析首先是mtkfb.c
1.mtk_init中platform_driver_register(&mtkfb_driver)注册平台驱动
panelmaster_init();
DBG_init();
mtkfb_ipo_init();
2.mtkfb_probe进行普配
3.然后执行primary_display_init(mtkfb_find_lcm_driver(),lcd_fps);
4.mtkfb_find_lcm_driver()进行查找驱动:
p=strstr(saved_command_line,"lcm=")
memset((void *)mtkfb_lcm_name,0,sizeof(mtkfb_lcm_name));//
strncpy((char *)mtkfb_lcm_name,(const char *)p,(int)(q-p));//得到lcm的名字
主要是通过在之前LK阶段向kernel传参的command_line地址中,拿出lcm驱动名字字符串的,之后再将第一个字符串的地址返回
然后进入primary_display_init函数中,再执行disp_lcm_probe()函数。
pgc->plcm=disp_lcm_probe(lcm_name,LCM_INTERFACE_NOTDEFFINE)
5.disp_lcm.c中disp_lcm_probe()
lcm_drv=lcm_driver_list[0];//这里的名字就是command_line中拿出来的名字。
lcm_param=disp_lcm_get_param(pgc->plcm);//获得lcm参数
接下来模式选择
6.LCM_DRIVER包括:lcm的名字,相关功能函数,获得参数,初始化,休眠,唤醒,比较id,esd_check,esd_recover,ata_check