framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)
以下內容源于朱有鵬《物聯網大講堂》課程的學習,如有侵權,請告知刪除。
主要在填充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進行顯示工作的函數
總結
以上是生活随笔為你收集整理的framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《托马斯大学微积分》习题1.4——31
- 下一篇: 月圆之夜,更新了一下1024客户端【强烈