平台设备和平台驱动程序链接

时间:2021-02-25 04:13:36

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 每当我们100%确定在给定平台上我们希望相关设备存在并且正常运行时,我们都会调用platform_device_add()。< /p>

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

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

  4. 确实使用驱动程序名称进行匹配。当 API 被调用时,它按设备名称匹配。有关实际代码,请参阅 platform_match_id() 的实现。