OMAP3 DSS 初始化过程(2)总线关系
来源:互联网 发布:随心所欲mmd动作数据 编辑:程序博客网 时间:2024/06/05 03:06
这篇文章是对前面一片文章的补充。在文章(1)中遗漏了一些重要信息,而这些信息也是在随后的调试和修改过程中发现的。这里再做一次总结。还是那句老话,如有不足,请指出文章中错误的观点。
文章(1)中提到了omap_dss_register_device和omap_dss_register_driver这两个函数,这两个函数正是通过dss_bus总线进行配对的。在这两个函数配对之还有一个linux提供的总线配对函数,platform_device和platform_driver。通过以下:
static struct platform_device *omap3_stalker_devices[] __initdata = {
&omap3_stalker_dss_device,
&omap3stalker_camkit_device,
};
platform_add_devices(omap3_stalker_devices, ARRAY_SIZE(omap3_stalker_devices));
一个设备描述和一个device注册函数完成了platform_device的注册,然后通过name字段比较omapdss完成了platform_driver:找到了static struct platform_driver omap_dss_driver。随后调用probe函数,这个probe函数是:static int omap_dss_probe(struct platform_device *pdev)。注意函数的参数是struct platform_device *pdev。也就是说这个函数的调用使用的是linux自带的总线上设备和驱动的匹配方式,成功后导致probe的调用。那么如何总linux总线过度到omap的dss总线?文章(1)中也有交代但是没有交代清楚,随后在自己的调试过程中再次发现和总结了一下。
在函数omap_dss_probe,中出现了r = omap_dss_register_device(dssdev);,这里才开始omap_dss_device的注册,到了这里从一个for循环一次对应num_devices分别注册了lcd070,lcd043,venc,dvi。dss_bus上出现了设备,那么随后的驱动注册再回调用dss_bus提供的match函数,从而最后找到相应的probe函数,比如:omap_dss_register_driver(&at070tn13_panel)。注意omap_dss_register_driver函数中dssdriver->driver.probe = dss_driver_probe;这个probe才是通过dss_bus匹配后调用的probe函数。随后在这个函数中分别又对自己的lcd070做了probe函数。
static struct omap_dss_driver at070tn13_panel = { 结构体中有一个.name = "panel-at070tn13",字段。这个字段是platform_driver的类型。
逻辑关系就说道这里,只是稍微介绍了一下,随后的软件分析和设计分析中在细细说来。希望有相同兴趣爱好的omap或者Davinci系列的爱好者交流。
有人问我:为什么要去研究软件架构?我也很无奈,因为买来的开发板还有Demo都是好的,我当然不会去分析和阅读,就是应为不能工作,总是在修修补补,索性一下沉下心来,搞搞透。
- OMAP3 DSS 初始化过程(2)总线关系
- OMAP3 DSS 初始化过程(1)总线关系
- OMAP3 bootloader 运行过程
- DSS与MIS的关系
- PCI 初始化过程一 :总线拓扑结构的建立
- 含有继承关系的初始化过程
- DSS 代码分析【启动、初始化流程】
- 决策支持系统(DSS)
- dss
- DSS
- DSS
- DSS
- DSS
- DSS
- DSS
- DSS
- dss
- DW、OLAP、DM、DSS 的关系
- 如何在tomcat里为多个应用配置不同的访问端口
- Plugin is too old,please update to a more recent version,or set ANDROID_DAILY_OVERRIDE environment v
- ADT Bundle 理解开发环境 & Eclipse工具使用技巧
- Java 阻塞的概念
- Spring jdbcTemplate
- OMAP3 DSS 初始化过程(2)总线关系
- WC2016游记
- codeforce 621B Wet Shark and Bishops
- 机器学习正则化推导
- 用C文件编写通讯录系统
- redis主从切换部署
- scrollVie无限循环图片中定时器的两种方法
- 一个倒排索引(inverted index)的python实现
- linux下手动安装apache详解