基于展讯平台下调LCD各文件路径关联总结

本文详细介绍了基于展讯平台的LCD驱动结构及其工作原理,包括用户空间的应用程序、内核空间的驱动实现及硬件层的LCD控制器。重点阐述了fbmem.c与sprdfb_main.c的作用,并解释了如何通过lcdc.c文件进行设备枚举。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2012-08-04 14:44

基于展讯平台下调LCD各文件路径关联总结

以下各层为从上往下调用关系:用户空间——>内核空间——>硬件

一、用户空间——应用程序

二、内核空间:

1)kernel/driver/video/fbmem.c(母目录,一律注册字符设备,不针对平台)

作用:a. 定义结构体file_operations包括fb_read()、fb_write()、fb_ioctl()等

b. 在module_init()初始化时,调用register_chrdev(FB_MAJOR,"fb",&fb_fops)函数传递该

该结构体以注册字符设备

如下图:

2)kernel/driver/video/sc8810(视平台而定)/sprdfb_main.c(一般为XX fb_main.c)

作用:注册framebuffer(调用函数在fbmem.c内定义)、注册平台设备

作用:a. 定义结构体platform_driver包括probe、suspend、resume等

b. 在module_init()初始化时,调用platform_driver_register(&sprdfb_driver)函数传递该结

构体“针对该平台”进行平台驱动注册

如下图:

c. 在该结构体内成员probe函数里调用 register_framebuffer(fb)注册framebuffer

且在probe探测函数里“针对该平台”进行硬件初始化、申请帧缓冲空间等

//********************************************

//********************************************

注释:sprdfb_main.c会调用同个目录下lcdc.c文件下函数,进行ID的枚举等,具体参考前一章。

1)通过lcdc.c的find_adapt_from_readid()函数(uboot下也有)会在kernel下重新枚举

备(如果uboot枚举不通过返回-1)如下图

2)find_adapt_from_readid()和find_adapt_from_uboot区别如下,其中

find_adapt_from_readid()会重新枚举panel如下图灰色区域

3)a. 图中lcd_panel_size即为枚举数量,函数位置为:

/customize/cutomer_cfg/sp8810ga/kernel/lcd/lcd_cfg.c

或/u-boot/drivers/video/sc8810_fb.c

如下图定义:

b. 其中平台设备函数位置为:

/3rdparty/lcd/lcd_ili9486kernel/lcd_ili9486.c

或/u-boot/board/spreadtrum/sp8810/lcd_ili9486.c

如下图定义:

c. lcd_operations结构体定义如下:

//********************************************

三、硬件——LCD控制器

备注:LCD平时运行函数(属于 fb_ops、 lcd_operations的ops操作函数,为上层软件调用执行):

<4>[ 39.549000] sprdfb pan_display!!,fb_state=0
<4>[ 39.549000] hx8369_invalidate_rect : (0, 0, 479, 799)
<4>[ 39.549000] hx8369_set_window

在kernel读ID如果读取不对,会使fb_state置1,即通过不了sprdfb pan_display(),

一直在调用该函数而不执行hx8369的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值