linux驱动由浅入深系列:显示子系统之二(高通平台lcd驱动代码分析)

在上一篇文章中我们初步了解了lcd对应用层提供的接口-framebuffer,以及应用层通过fb在lcd上画图的示例。本文我们来看一下驱动层的相关逻辑,主要介绍几个核心数据结构fb_info, fb_var_screeninfo, fb_fix_screeninfo,以及framebuffer设备注册的过程,framebuffer大小的确定。
我们从kernel中lcd最核心的一个文件看起
kernel\msm-3.18\drivers\video\fbdev\core\fbmem.c
核心函数
/**
 *	register_framebuffer - registers a frame buffer device
 *	@fb_info: frame buffer info structure
 *
 *	Registers a frame buffer device @fb_info.
 *
 *	Returns negative errno on error, or zero for success.
 *
 */
int register_framebuffer(struct fb_info *fb_info)
{
	int ret;
	mutex_lock(®istration_lock);
	ret = do_register_framebuffer(fb_info);
	mutex_unlock(®istration_lock);
	return ret;
}
EXPORT_SYMBOL(register_framebuffer);/导出函数,以供实际设备驱动中调用
核心结构体
struct fb_info {
	atomic_t count;
	int node;
	int flags;
	struc

你可能感兴趣的:(linux驱动由浅入深系列)