of_match_ptr函数
时间: 2023-11-04 15:04:21 浏览: 244
一个有关匹配的matlab程序
of_match_ptr函数是一个用于比较设备树节点的函数,通常用于驱动程序的probe函数中,用于确定设备是否与驱动程序匹配。
of_match_ptr函数的原型如下:
```c
const struct of_device_id *of_match_ptr(const struct of_device_id *matches, const struct device_node *node);
```
其中,matches是一个由of_device_id结构体组成的数组,表示驱动程序支持的设备类型。node是一个指向设备树节点的指针,表示当前正在被检查的设备。
of_match_ptr函数会遍历matches数组中的每个元素,比较其compatible属性与node节点的compatible属性是否匹配。如果匹配成功,of_match_ptr函数将返回与之匹配的of_device_id结构体指针;否则返回NULL。
例如,以下代码片段演示了如何在probe函数中使用of_match_ptr函数来确定设备是否与驱动程序匹配:
```c
static const struct of_device_id my_driver_of_match[] = {
{ .compatible = "my_device" },
{ },
};
MODULE_DEVICE_TABLE(of, my_driver_of_match);
static int my_driver_probe(struct platform_device *pdev)
{
const struct of_device_id *match;
match = of_match_ptr(my_driver_of_match, pdev->dev.of_node);
if (!match)
return -ENODEV;
// ...
}
```
上述代码定义了一个my_driver_of_match数组,表示驱动程序支持的设备类型。在probe函数中,调用of_match_ptr函数来比较pdev所对应的设备节点是否与my_driver_of_match数组中的任何一个元素匹配。如果匹配成功,probe函数将继续执行;否则返回-ENODEV,表示设备不匹配。
阅读全文