of_find_node_by_name()如何使用?举例说明
时间: 2023-11-26 10:03:58 浏览: 288
of_find_node_by_name()是一个用于查找设备树中指定节点的函数。它的使用方法如下:
1. 在需要使用该函数的文件中包含头文件“#include <linux/of.h>”。
2. 通过of_find_node_by_name()函数查找指定节点。该函数的参数是一个指向设备树节点的指针,返回值是指向找到节点的指针。
3. 如果找到节点,则可以使用of_property_read_*()等函数来读取该节点的属性值。
举例说明:
假设设备树中有以下节点:
```
my_device {
compatible = "my_device";
reg = <0x1000>;
...
};
```
现在想要在驱动程序中获取该节点的属性值,可以按以下步骤操作:
1. 定义一个指向节点的指针:
```
struct device_node *np;
```
2. 在probe函数中使用of_find_node_by_name()函数查找节点:
```
np = of_find_node_by_name(NULL, "my_device");
if (!np) {
dev_err(dev, "Failed to find node\n");
return -ENODEV;
}
```
这里的第一个参数NULL表示从根节点开始查找,第二个参数"my_device"表示要查找的节点名称。
3. 使用of_property_read_*()函数读取属性值:
```
u32 reg_val;
if (of_property_read_u32(np, "reg", ®_val)) {
dev_err(dev, "Failed to read property 'reg'\n");
return -EINVAL;
}
```
这里使用了of_property_read_u32()函数读取节点的"reg"属性值,如果读取失败则返回错误码。
以上就是使用of_find_node_by_name()函数的一个简单例子。
阅读全文