5.7.7.framebuffer驱动框架分析2

5.7.7.1、register_framebuffer

(1)fb驱动框架开放给驱动编写着的注册接口
linux提供了register_framebuffer和unregister_framebuffer函数分别注册和注销帧缓冲设备

对于register_framebuffer而言,如果注册的帧缓冲设备超过了FB_MAX(32),则返回-ENXIO,注册成功则返回0

(2)fb_check_foreignness
(3)remove_conflicting_framebuffers
(4)device_create
(5)fb_init_device



每个从设备都需要传递一个fb_info的数据结构指针,其即代表单个显示缓存设备。从中,可以看到fb_info最终会存储到全局数组struct fb_info * registered_fb[FB_MAX]中,FB_MAX是32,从这里我们可以看出,framebuffer最多支持32个从设备。另外,每个从设备还会在/sys/class/graphics/设备类中创建一个设备,最终有mdev在/dev目录中生成对应的设备文件。假设M个从设备调用那个register_framebuffer接口,即会在/dev中生成M个设备文件,如/dev/fb0,/dev/fb1、/dev/fb2 等等。这M个设备的主设备号都是29,从设备则是0、1、2等等。

每个被注册的帧缓冲硬件设备在/dev/graphics目录下都有一个对应的设备文件fb

fb_init_device
dev_set_drvdata(&pdev->dev, dev); //把设备相关信息放到设备结构体里最为私有数据保存起来

猜你喜欢

转载自www.cnblogs.com/Ocean-Star/p/9251136.html