s3c6410_LCDframebuffer驱动分析(一).doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
s3c6410_LCD

s3c6410_LCD frame buffer 驱动分析 fb_info结构体中的成员变量fops直接指向底层操作函数指针 struct fb_ops s3cfb_ops = { ?? ?.owner?? ??? ?= THIS_MODULE, ?? ?.fb_check_var?? ?= s3cfb_check_var,//检测可变参数,并调整到支持的值 ?? ?.fb_set_par?? ?= s3cfb_set_par,????? //设置video的模式 ?? ?.fb_blank?? ?= s3cfb_blank,????????????? //显示空白区域 ?? ?.fb_pan_display?? ?= s3cfb_pan_display,//pan显示 ?? ?.fb_setcolreg?? ?= s3cfb_setcolreg,//设置color寄存器,设置颜色表 ?? ?.fb_fillrect?? ?= cfb_fillrect,??????? //矩形填充 ?? ?.fb_copyarea?? ?= cfb_copyarea,??? //数据复制 ?? ?.fb_imageblit?? ?= cfb_imageblit,? //图形填充 ?? ?.fb_cursor?? ?= soft_cursor,?????? //绘制光标 ?? ?.fb_ioctl?? ?= s3cfb_ioctl,???????? //fb特定的ioctl }; //上面这些操作函数指针需要驱动开发人员自己编写的,如果没赋值则默认调用系统中的 static struct platform_driver s3cfb_driver = { ?? ?.probe?? ??? ?= s3cfb_probe, ?? ?.remove?? ??? ?= s3cfb_remove, ?? ?.suspend?? ?= s3cfb_suspend, ?? ?.resume?? ??? ?= s3cfb_resume, ??????? .driver?? ??? ?= { ?? ??? ?.name?? ?= s3c-fb, ?? ??? ?.owner?? ?= THIS_MODULE, ?? ?}, }; int __devinit s3cfb_init(void) { ??? /**模块加载函数实现平台驱动的注册**/ ?? ?return platform_driver_register(s3cfb_driver); } static void __exit s3cfb_cleanup(void) { ?? ?platform_driver_unregister(s3cfb_driver); } module_init(s3cfb_init); module_exit(s3cfb_cleanup); //s3cfb_probe平台驱动的探测函数,主要初始化fb_info结构体中的可变参数和不可变参数结构体,LCD硬件控制器的初始化,获取时钟来源,显示缓存空间的申请,注册帧缓冲设备等工作。 static int __init s3cfb_probe(struct platform_device *pdev) { ?? //定义局部变量 ??? struct resource *res; //保存平台资源的局部变量 ?? ?struct fb_info *fbinfo;//帧缓冲结构 ?? ?s3cfb_info_t *info;//对于特定的bsp封装了驱动中所需要的一些信息 ?? ?char driver_name[] = s3cfb;/*驱动名称*/ ?? ?int index = 0, ret, size;//用来临时保存信息 ??? /**分配fb_info结构体**/ ?? ?fbinfo = framebuffer_alloc(sizeof(s3cfb_info_t), pdev-dev); ?? ?if (!fbinfo) ?? ??? ?return -ENOMEM; ??? /*将fbinfo传递给内核中总线设备结构所对应的驱动数据信息*/ ?? ?platform_set_drvdata(pdev, fbinfo);//方便后面用到 /********************************************************* platform_set_drvdata(pdev, fbinfo)的具体实现函数: *void dev_set_drvdata(struct device *dev, void *data) *{ *??? int error; *?? if (!dev) *??

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档