【问题标题】:Platform device and platform driver linking平台设备和平台驱动链接
【发布时间】:2021-05-27 10:43:29
【问题描述】:

在 linux 中浏览 USB 代码时。我遇到了 platform_device_add() api。

我的问题是,当我们使用上述 api 创建平台设备时,相关的驱动程序如何绑定到它?

据我了解,平台驱动程序会自行注册,当设备树兼容字符串与驱动程序中提到的字符串匹配时,会调用驱动程序的探测器。

那么它是否像设备树一样使用“兼容字符串”之类的东西? 它是否使用“struct platform_device”中存在的“name”字段并将其与“struct platform_driver”的“name”字段匹配。

如果我错了,请纠正我。此外,任何可以了解更多信息的文本资源都会有所帮助,因为我是新手。

【问题讨论】:

    标签: linux-kernel usb linux-device-driver platform


    【解决方案1】:

    所以,你在这里问了几个问题。

    1. 只要我们100% 确定在给定平台上我们期望相关设备存在并且正常工作,我们就会致电platform_device_add()

    2. 在大多数情况下,->probe() 回调会在添加设备时(如果驱动程序已加载)或在驱动程序加载阶段(如果系统中存在设备)同步调用。

    3. 使用设备树,它纯粹是基于板文件的枚举(设备存在是通过 ACPI 或设备树以外的其他方式识别的)。

    4. 确实它使用驱动程序名称来匹配。调用 API 时,它会按设备名称匹配。实际代码见platform_match_id()的实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多