新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 高清嵌入式系统中的DVI驱动开发

高清嵌入式系统中的DVI驱动开发

作者:时间:2012-05-08来源:网络收藏

4 程序设计
4.1 平台
从Linux2.6起引入了一套新的管理和注册机制:platform_device和platform_driver。
设备用platform_device表示,驱动用platform_driver注册。平台设备包括基于端口的设备、外围总线和集成在片上中的大多数控制器,作为MX51片上的独立硬件模块。LCD控制器是一个平台设备,因此驱动设计中需包含平台驱动。平台驱动的任务是向注册用到的设备,此处包括MX51的LCD控制器和TFP410 视频输出芯片,使得设备驱动加载时可以从中查询到相应的设备是已注册的状态,然后执行设备驱动程序中的probe函数。
在arch/arm/mach-mx51/rex51_3stack.C中,没置platform_device结构变量mxc_fb_device和i2c_board_info。结构变量mxc_i2cl_ board_info定义LCD控制器和TFP410设备。
调用函数platform_device_register(&mxc_fb_device)和i2c_register_board_info(1,mxc_i2cl_board_info,ARRAY_SIZE(mxc_i2cl_ board_info))向系统注册以上设备。
4.2 设备驱动
4.2.1 LCD控制器驱动
LCD控制器驱动是一个标准的帧缓冲设备驱动。首先在drivers/video/mxc/mxc_ipuv3_fb.c中定义全局结构变量mxcfb_driver:
d.jpg
然后,在驱动入口函数mxcfb_init(void)中调用platform_driver_register(&mxcfb_driver)注册驱动,当驱动加载成功后,会自动调用探测函数mxcfb_probe。
mxcfb_probe是驱动设计中的重要函数。主要负责初始化硬件。申请中断、分配framebuffer所需的内存、注册帧缓冲设备等,以下是与framebuffer相关的操作。
①调用mxcfb_init_fbinfo(&pdev->dev,&mxcfb_ops)函数,在其内通过framebuffer_alloc函数,为mx51帧缓冲信息结构体struct mxcfb_info分配所需空间。参数mxcfb_ops的定义如下:
e.jpg
mxcfb_ops定义了指向底层操作的一系列函数,这些函数针对MX51帧缓冲操作,是framebuffer核心驱动操作的具体实现。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭