概述
mtk 平台LCD 驱动的
MTK_LCD_Driver
代码的路是在/mediatek/source/kernel/driver/vedio/mtkfb.c
module_init(mtkfb_init);模块初始化函数
int__init mtkfb_init(void)
{int r = 0;
MSG_FUNC_ENTER();
/* Register the driver withLDM */
if(platform_driver_register(&mtkfb_driver)) {//以platform方式进行注册mtkfb driver
PRNERR("failed toregister mtkfb drivern");
r = -ENODEV;
goto exit;
}
#ifdefCONFIG_HAS_EARLYSUSPEND
register_early_suspend(&mtkfb_early_suspend_handler);//LCD是以erly_suspend的方式注册的,这个涉及到power_management的内容
#endif
DBG_Init();
exit:
MSG_FUNC_LEAVE();
return r;
}
知道设备模型的人应该知道platformbus总线的match函数的规则是device和driver的名字必须相同,当name匹配一样的时候,我们就会调用driver里面的probe函数,这个函数是LCDdriver的核心入口函数。
进入LCDprobe世界。
staticint mtkfb_probe(struct device *dev)
{
struct platform_device *pdev;
struct mtkfb_device *fbdev= NULL;
struct fb_info *fbi;
int init_state;
int r = 0;
char*p = NULL;
MSG_FUNC_ENTER();
printk("%s,%sn", __func__, saved_command_line);
p= strstr(saved_command_line, "fps=");
if(p== NULL){
lcd_fps= 6000;
printk("[FBdriver]can not get fps from ubootn");
}
else{
p+= 4;
lcd_fps= simple_strtol(p, NULL, 10);
}
…........................
…........................
r = register_framebuffer(fbi);
if (r != 0) {
PRNERR("register_framebufferfailedn");
goto cleanup;
}
fbdev->state =MTKFB_ACTIVE;
MSG(INFO, "MTKframebuffer initialized vram=%lun", fbdev->fb_size_in_byte);
MSG_FUNC_LEAVE();
return 0;
cleanup:
mtkfb_free_resources(fbdev,init_state);
MSG_FUNC_LEAVE();
return r;
}
...
................/原文地址:http://bbs.16rd.com/thread-8352-1-292.html
最后
以上就是成就小土豆为你收集整理的mtk 平台LCD 驱动的的全部内容,希望文章能够帮你解决mtk 平台LCD 驱动的所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复