framebuffer设备驱动的几个连接关键点

framebuffer设备驱动的几个连接关键点

framebuffer的架构

见到的宋宝华老师总结的一个图表,觉得很清晰,直接移过来了
在这里插入图片描述

关键点点析
  • 文件driver/video/fbmem.c中的file_operations结构体
  • 文件xxxfb.c,对应于各具体厂商的framebuffer驱动,我这边看的是fsl的驱动,名字是drivers/video/mxc/mxc_ipuv3_fb.c
  • 在文件xxxxfb.c中的重要结构体为fb_info,用来连接到文件driver/video/fbmem.c中,连接的函数就是register_framerbufferunregister_framerbuffer。所以在xxxxfb.c中找入口,连接上下层的东西就在这个结构体和两个函数入口。
  • 应用层的操作入口,例如读、写、控制等,在文件xxxxfb.c中实现,通过结构体fb_infofbops(类型为struct fb_ops)成员来连接。所以驱动最主要的是要实现结构体struct fb_ops成员的填充。以下根据实例代码,描述连接。
实例代码

文件drivers/video/mxc/mxc_ipuv3_fb.c

static struct fb_ops mxcfb_ops = {   /* 注册关键的操作函数 11111111111 */
	.owner = THIS_MODULE,
	.fb_set_par = mxcfb_set_par,
	.fb_check_var = mxcfb_check_var,
	.fb_setcolreg = mxcfb_setcolreg,
	.fb_pan_display = mxcfb_pan_display,
	.fb_ioctl = mxcfb_ioctl,
	.fb_mmap = mxcfb_mmap,
	.fb_fillrect = cfb_fillrect,
	.fb_copyarea = cfb_copyarea,
	.fb_imageblit = cfb_imageblit,
	.fb_blank = mxcfb_blank,
};

......
static struct fb_info *mxcfb_init_fbinfo(struct device *dev, struct fb_ops *ops)   /* 333333333  */
{
	struct fb_info *fbi;
	struct mxcfb_info *mxcfbi;

	/*
	 * Allocate sufficient memory for the fb structure
	 */
	fbi = framebuffer_alloc(sizeof(struct mxcfb_info), dev);
	if (!fbi)
		return NULL;

	mxcfbi = (struct mxcfb_info *)fbi->par;

	fbi->var.activate = FB_ACTIVATE_NOW;

	fbi
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值