平台设备和平台驱动程序链接
Platform device and platform driver linking
正在检查 linux 中的 usb 代码。我遇到了 platform_device_add() api.
我的问题是,当我们使用上述 api 创建平台设备时,关联的驱动程序如何绑定到它?
据我了解,平台驱动程序会自行注册,当设备树兼容字符串与驱动程序中提到的匹配时,将调用驱动程序的探测。
那么它是否像设备树那样使用类似“兼容字符串”的东西?
它是否使用“struct platform_device”中存在的“name”字段并将其与“struct platform_driver”的“name”字段匹配。
如有错误请指正。此外,任何有关此的更多信息的文本资源都会有所帮助,因为我是新手。
所以,你在这里问了几个问题。
只要我们100%确定我们希望在给定的平台上存在有问题的设备,我们就会调用platform_device_add()
和正在运行。
在大多数情况下,->probe()
回调在添加设备时(如果驱动程序已加载)或在驱动程序加载阶段(如果系统中存在设备)被同步调用。
它不使用设备树,它纯粹是基于板文件的枚举(设备存在通过 ACPI 或设备树以外的其他方式识别)。
确实是用驱动名来匹配的。当调用 API 时,它按设备名称进行匹配。有关实际代码,请参阅 platform_match_id()
的实现。
正在检查 linux 中的 usb 代码。我遇到了 platform_device_add() api.
我的问题是,当我们使用上述 api 创建平台设备时,关联的驱动程序如何绑定到它?
据我了解,平台驱动程序会自行注册,当设备树兼容字符串与驱动程序中提到的匹配时,将调用驱动程序的探测。
那么它是否像设备树那样使用类似“兼容字符串”的东西? 它是否使用“struct platform_device”中存在的“name”字段并将其与“struct platform_driver”的“name”字段匹配。
如有错误请指正。此外,任何有关此的更多信息的文本资源都会有所帮助,因为我是新手。
所以,你在这里问了几个问题。
只要我们100%确定我们希望在给定的平台上存在有问题的设备,我们就会调用
platform_device_add()
和正在运行。在大多数情况下,
->probe()
回调在添加设备时(如果驱动程序已加载)或在驱动程序加载阶段(如果系统中存在设备)被同步调用。它不使用设备树,它纯粹是基于板文件的枚举(设备存在通过 ACPI 或设备树以外的其他方式识别)。
确实是用驱动名来匹配的。当调用 API 时,它按设备名称进行匹配。有关实际代码,请参阅
platform_match_id()
的实现。