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

Platform device and platform driver linking

正在检查 linux 中的 usb 代码。我遇到了 platform_device_add() api.

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

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

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

如有错误请指正。此外,任何有关此的更多信息的文本资源都会有所帮助,因为我是新手。

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

  1. 只要我们100%确定我们希望在给定的平台上存在有问题的设备,我们就会调用platform_device_add()正在运行。

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

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

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