Linux 内核 API 从平台驱动获取结构设备

Linux Kernel API to get struct device from platform driver

我想知道是否有一个内核 API 允许根据一些参数获得 struct device。我正在使用主线内核,版本 3.3。

情况如下: 我已经注册了平台设备 A 并设置了一些与 A 关联的驱动程序数据。A 有多个具有不同 ID 的实例,因此 A(1)、A(2)、A(3).. .

现在,我正在注册平台设备BB 的驱动程序需要拥有与 A(1)A(2) 关联的 struct device 的特定实例或 A(3)...

所以可以把它想象成 B 以某种方式拥有 A(n)。我可以实现此目的的一种方法是让 A 驱动程序具有一个全局 struct device 数组来跟踪所有已注册的设备。但是,对于像平台驱动程序这样通用的东西,我想知道内核是否提供了一个 API 来根据一些参数(例如 platform driver name 和相关的 id 来获得它.

谢谢!

不确定它是否存在。实际上我没有看到什么参数可以用于select一个struct device实例。

我认为你必须在 A 驱动程序中实现你自己的搜索方法。 在 A 驱动程序中,您跟踪(全局变量)所有实例。

从驱动程序 A 中导出一个函数 find_instance(<parameters>) 并在驱动程序 B 中使用它。

如果我没记错的话,为了查找 I2C 设备,V4L2 框架中有类似的东西。