以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
主要在填充fbdev这个结构体。
二、framebuffer驱动分析2
1、probe函数分析
(1)struct s3c_platform_fb
- 这个结构体是fb的platform_data结构体;
- 这个结构体变量就是platform设备的私有数据,这个数据在(结构体platform_device中的)(成员元素结构体device中)platform_data中存储。
- 在mach-x210文件填充着这些数据;
- 在probe函数中,通过传参的platform_device指针取出来。
(2)struct s3cfb_global
- 这个结构体主要作用是在驱动部分的2个文件(s3cfb.c和s3cfb_fimd6x.c)的函数中做数据传递用的。
(3)struct resource
(4)regulator:整流器,负责供电管理。
2、platform_data的传递过程
(1)to_fb_plat
(2)platform_data定义在s3cfb_set_platdata函数中
- 之前我们一般提前就已经定义好了(因为简单固定),不用再使用函数来设置。
- 而这里因为lcd情况复杂,因此使用函数来设置。
(3)mdkc110_machine_init
三、framebuffer驱动分析3
1、struct s3cfb_lcd(fbdev->lcd = (struct s3cfb_lcd *)pdata->lcd;)
- pdata->lcd是lcd的一些硬件参数信息。
- 换屏幕时,修改的就是这些参数。
2、pdata->cfg_gpio:初始化lcd用到的一些GPIO;
3、pdata->clk_on:打开lcd有关的时钟;
4、resource的处理
(1)platform_device中提供resource结构体数组
(2)probe中platform_get_resource取出resource并且按FLAG分头处理
四、framebuffer驱动分析4
1、硬件操作函数集合文件:s3cfb_fimd6x.c文件
(1)s3cfb_set_vsync_interrupt0
(2)s3cfb_set_global_interrupt
2、s3cfb_init_global
以上内容主要是填充fbdev这个结构体。
3、向框架注册该fb设备
(1)s3cfb_alloc_framebuffer
(2)s3cfb_register_framebuffer
五、framebuffer驱动分析5
1、一些硬件操作
(1)s3cfb_set_clock:设置像素时钟
(2)s3cfb_set_window
(3)s3cfb_display_on
2、驱动中处理中断
(1)platform_get_irq
(2)request_irq
3、logo显示
- s3cfb_probe
- fb_prepare_logo
- fb_find_logo真正查找logo文件
- fb_show_logo
- fb_show_logo_line真正显示logo
- fb_do_show_logoinfo->fbops->fb_imageblit实际操作硬件fb进行显示工作的函数