转自:https://www.cnblogs.com/sky-heaven/p/6869591.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Obsession2015/article/details/77933852

device方面:

platform_device_register(struct platform_device *dev)
------platform_device_add(pdev);
----------device_add(&pdev->dev);
--------------bus_probe_device(dev);
-------------------device_attach(dev);
-------------------------bus_for_each_drv(dev->bus, NULL, dev, __device_attach);
-------------------------------driver_match_device(drv, dev);成功才向下执行probe!
-------------------------------------driver_probe_device(drv, dev);
--------------------------------------------really_probe(dev, drv);
----------------------------------------------------dev->bus->probe(dev);或者drv->probe(dev);platform_device_add(pdev);

driver方面:
platform_driver_register(struct platform_driver * drv)
--------driver_register(&drv->driver);
------------bus_add_driver(drv);
-----------------driver_attach(drv);
------------------------bus_for_each_dev(drv->bus, NULL, drv, __driver_attach); 遍历所有节点!
-------------------------------driver_match_device(drv, dev);成功才向下执行probe!
---------------------------------------driver_probe_device(drv, dev);
------------------------------------------------really_probe(dev, drv);
---------------------------------------------------------dev->bus->probe(dev);或者drv->probe(dev);

driver_match_device()  是匹配的关键,实质是上执行:
--------return drv->bus->match ? drv->bus->match(dev, drv) : 1;
------------------.match = platform_match  最终调用bus中的platform_match函数来匹配。

bus_for_each_drv/dev()  函数中:
---------while ((dev = next_device(&i)) && !error)  遍历所有节点;
---------------error = fn(dev, data); 使用id_table匹配方式则可匹配多个设备。
————————————————
版权声明:本文为CSDN博主「Linux匿名者」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/obsession2015/article/details/77933852

platform平台device和driver如何匹配【转】的更多相关文章

  1. Linux设备驱动模型之platform(平台)总线详解

    /********************************************************/ 内核版本:2.6.35.7 运行平台:三星s5pv210 /*********** ...

  2. platform平台总线

    一.何为平台总线 (1)相对于usb.pci.i2c等物理总线来说,platform总线是虚拟的.抽象出来的.(2)CPU与外部通信的2种方式:地址总线式连接和专用协议类接口式连接.平台总线,是扩展到 ...

  3. [platform]Device和Driver注册顺序

    1. 设备和驱动注册,无论谁先谁后,都可以通过查询总线进行匹配 设备挂接到总线上时,与总线上的所有驱动进行匹配(用bus_type.match进行匹配),如果匹配成功,则调用bus_type.prob ...

  4. Linux platform平台总线、平台设备、平台驱动

    平台总线(platform_bus)的需求来源? 随着soc的升级,S3C2440->S3C6410->S5PV210->4412,以前的程序就得重新写一遍,做着大量的重复工作, 人 ...

  5. 【总结】设备树对platform平台设备驱动带来的变化(史上最强分析)【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74375086 版权声明:本文为博主原创文章,转载请注明http://blog.c ...

  6. Linux kernel驱动相关抽象概念及其实现 之“bus,device,driver”

    bus,device,driver三个很重要的概念贯穿Linux内核驱动架构,特转载一篇博文: (转载自http://blog.csdn.net/gdt_a20/article/details/642 ...

  7. Linux Platform Device and Driver

    从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Platform_driver . Linux 中大部分的设备驱动,都可以使用这套机制 , 设备用 P ...

  8. platform平台设备驱动简化示例代码

    driver.c: #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h& ...

  9. 解决Apple Mobile Device USB Driver

    在设备管理器里找到便携设备:APPLE IPHONE 更新驱动 自定义更新:在设备管理器里找到便携设备:APPLE IPHONE 更新驱动 自定义更新:C:\Program Files\Common ...

随机推荐

  1. 关于独显A卡利用率一直是0不运行的问题

    情况: 独显一直是0,玩游戏时核显,也就是GPU-0快满了GPU-1也是0,跟没有一样,怀疑自己买电脑的时候是不是被骗了. 在高级电源选项中,有个可切换动态显卡->全局设置的选项,设置成最大化性 ...

  2. python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]

    目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...

  3. Prometheus学习系列(二)之Prometheus FIRST STEPS

    前言 本文来自Prometheus官网手册 和 Prometheus简介 说明 Prometheus是一个监控平台,通过在监控目标上的HTTP端点来收集受监控目标的指标.本指南将向您展示如何使用Pro ...

  4. C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比

    测试结果如下图: 测试结果整理后: 结论: 1.这几个工具中,protobuf-net序列化和反序列化效率是最快的 2.BinaryFormatter和Newtonsoft.Json反序列化慢的比较多 ...

  5. Android项目实战之高仿网易云音乐创建项目和配置

    这一节我们来讲解创建项目:说道大家可能就会说了,创建项目还有谁不会啊,还需要讲吗,别急听我慢慢到来,肯定有你不知道的. 使用项目Android Studio创建项目我们这里就不讲解了,主要是讲解如何配 ...

  6. iOS AOP实战

    AOP: 面向切面编程,偏向于处理业务的某个阶段 适用场景: 1. 参数校验:网络请求前的参数校验,返回数据的格式校验等等 2. 无痕埋点:统一处理埋点,降低代码耦合度 3. 页面统计:帮助统计页面访 ...

  7. A Code Farmer‘s Entertainment

    My guitar playing and singing 码农的自娱自乐 https://v.youku.com/v_show/id_XNDM4NTY1MTEwNA==.html?spm=a2hzp ...

  8. SERCOS总线程序相关

    SERCOS程序就是围绕主机发送MDT电报,伺服在下一个周期发送AT电报作为应答这个原则来实现的,这个过程是由控制字等控制实现的,读程序的时候如果忽略这点,可能在想程序从哪里读数据,在哪里写数据呢.. ...

  9. 从简单Sql探索优化之道

    从简单Sql探索优化之道 梁敬彬 2016-03-17 09:39:41 本文需要优化的语句是select count(*) from t,这简单的统计语句一出,估计不少人纳闷了,能有啥优化空间,还优 ...

  10. Shell—脚本编程进阶

    shell脚本进阶之条件语句 条件选择if语句 https://www.runoob.com/?s=shell&page=1 https://www.cnblogs.com/flylinux/ ...