作家
登录

Linux平台总线驱动设备模型

作者: 来源: 2017-11-16 16:05:49 阅读 我要评论

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践


Linux平台总线驱动设备模型

platform总线是一种虚拟的总线,响应的设备则为platform_device,而驱动则为platform_driver。Linux 2.6的设备驱动模型中,把I2C、RTC、LCD等都归纳为platform_device。

总线将设备和驱动绑定,在体系每注册一个设备的时刻,会寻找与之匹配的驱动;相反的,在体系每注册一个驱动的时刻,会寻找与之匹配的设备,而匹配由总线完成。

Linux2.6体系中定义了一个bus_type的实例platform_bus_type

  1. struct bus_type platform_bus_type = {   
  2.     .name       = "platform",   
  3.     .dev_attrs  = platform_dev_attrs,   
  4.     .match      = platform_match,       //设备和驱动应用match函数来断定是否匹配   
  5.     .uevent     = platform_uevent,   
  6.     .pm     = PLATFORM_PM_OPS_PTR,   
  7. };   
  1. /* platform_match函数用于匹配总线中的驱动和设备 */   
  2. static int platform_match(struct device *dev, struct device_driver *drv)   
  3. {   
  4.     struct platform_device *pdev = to_platform_device(dev);   
  5.     struct platform_driver *pdrv = to_platform_driver(drv);   
  6.    
  7.     /* match against the id table first */   
  8.     if (pdrv->id_table)   
  9.         return platform_match_id(pdrv->id_table, pdev) != NULL;   
  10.    
  11.     /* fall-back to driver name match */   
  12.     return (strcmp(pdev->name, drv->name) == 0);   
  13. }   

platform_match函数起首断定是否由id_table,如不雅有则应用id_table来进行匹配,不然,断定platform_device和platform_driver成员里的name,如不雅二者的name字段雷同则匹配,如不雅匹配则调用platform_driver的probe函数。

platform_device构造体的定义

  1. struct platform_device {   
  2.     const char  * name;         /* 名字 */   
  3.     int     id;   
  4.     struct device   dev;   
  5.     u32     num_resources;      /* 资本总数 */   
  6.     struct resource * resource; /* 资本 */   
  7.    
     1/6    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      Linux Lite第一个支持Linux 4.14及如何安装

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 Linux Lite保护者Jerry Bezencon再次初次在Twitter上宣布他的基于Ubuntu的发行版的软件库中最新的Linux内>>>详细阅读


    本文标题:Linux平台总线驱动设备模型

    地址:http://www.17bianji.com/lsqh/38937.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)