MTK LCM显示驱动源码分析(二)
来源:互联网 发布:宣传海报设计app软件 编辑:程序博客网 时间:2024/05/20 14:19
三. 分析mtkfb_probe
1. mtkfb_probe 的函数调用关系
static int mtkfb_probe(struct device *dev){struct mtkfb_device *fbdev = NULL;struct fb_info *fbi;_parse_tag_videolfb(); /* 获取从lk传递过来的video参数*/fbi = framebuffer_alloc(sizeof(struct mtkfb_device), dev); /* 分配内存,大小为 sizeof(struct mtkfb_device)+sizeof(struct fb_info) */disp_hal_allocate_framebuffer(fb_base, (fb_base + vramsize - 1), (unsigned long *)&fbdev->fb_va_base, &fb_pa);primary_display_set_frame_buffer_address((unsigned long)fbdev->fb_va_base, fb_pa);primary_display_init(mtkfb_find_lcm_driver(), lcd_fps, is_lcm_inited); /* 初始化显示驱动*/mtkfb_fbinfo_init(fbi); /* 初始化 fb_info */mtkfb_fbi = fbi;register_framebuffer(fbi); /* 注册 fb_info */}
2. 分析 _parse_tag_videolfb
(1) _parse_tag_videolfb 的定义为:
/* Retrun value, 0: success, 1: fail */int _parse_tag_videolfb(void){int ret;unsigned long node = 0;if (of_scan_flat_dt(fb_early_init_dt_get_chosen, &node) > 0) {ret = __parse_tag_videolfb(node);return 0;}}(2) __parse_tag_videolfb 的定义如下
static int __parse_tag_videolfb(unsigned long node){struct tag_videolfb *videolfb_tag = NULL;unsigned long size = 0;videolfb_tag = (struct tag_videolfb *)of_get_flat_dt_prop(node, "atag,videolfb", (int *)&size);if (videolfb_tag) {memset((void *)mtkfb_lcm_name, 0, sizeof(mtkfb_lcm_name));strcpy((char *)mtkfb_lcm_name, videolfb_tag->lcmname);mtkfb_lcm_name[strlen(videolfb_tag->lcmname)] = '\0';lcd_fps = videolfb_tag->fps;islcmconnected = videolfb_tag->islcmfound;vramsize = videolfb_tag->vram;fb_base = videolfb_tag->fb_base;lcm_hwinfo_cfg = videolfb_tag->lcdid; /* lk没有传递lcdid,lcm_hwinfo_cfg为0*/is_lcm_inited = 1;return 0;}}(3) 事实上,在串口抓到的开机log中,可以发现以下代码:
videolfb - fb_base = 0x9f370000videolfb - islcmfound = 1mt_disp_get_lcd_time, fps=6335videolfb - fps = 6335videolfb - vram = 13172736videolfb - lcm_hwinfo_cfg = 0videolfb - lcmname = lcm_common_drv
阅读全文
0 0
- MTK LCM显示驱动源码分析(二)
- MTK LCM显示驱动源码分析(一)
- MTK平台LCM驱动详细分析(二)
- MTK 平台lcm驱动框架分析1
- MTK LCM驱动移植
- mtk lcm驱动添加
- mtk lcm驱动流程
- MTK LCM驱动移植
- MTK平台LCM驱动详细分析(一)
- mtk lcm驱动加载流程
- mtk lcm驱动加载流程
- MTK6577---LCM驱动分析
- lcm 驱动分析
- MTK lcm 驱动加载流程 android M
- MTK lcm 驱动加载流程 android M
- 对MTK安卓平台LCM驱动的理解
- JAVA JDBC(MySQL)驱动源码分析(二)
- Linux网络驱动源码分析(二)
- 线程安全
- mybatis关联查询的的resultMap 用法
- 原声js实现无缝滚动
- 机器学习中的数学(8)——卡方检验原理及应用
- 【Hibernate】实体映射文件--标签了解
- MTK LCM显示驱动源码分析(二)
- jquery处理ajax跨域问题方法(三)--jsonp详解(转)
- 平行垂直(叉积点积为0)的应用
- C语言经典算法16-26
- oracle中pl/sql编程(四):
- IE 下 JSP 中的 textarea 控件只能显示两行字
- Sourcetree 的基本使用
- PHP面向对象编程-笔记
- python迭代对象,迭代器,生成器,以及yield用法详解