of_graph_get_remote_node这个函数的用途
时间: 2023-08-03 17:03:46 浏览: 38
of_graph_get_remote_node 是一个函数,用于在设备树中查找指定节点的远程节点(remote node),也就是与该节点连接的另一个节点。这个函数的用途是在设备树中查找两个节点之间的连接关系,以便在某些驱动程序中使用该节点的信息来进行设备的初始化和配置。
对于某些设备来说,比如网络设备、PCI设备等,它们通常会与其他设备进行连接,这些连接关系通常会在设备树中进行描述。通过使用 of_graph_get_remote_node 函数,驱动程序可以获取到这些连接关系的信息,从而实现设备间的通信和数据传输。
相关问题
of_graph_get_remote_port_parent函数的怎么使用
`of_graph_get_remote_port_parent` 函数用于获取远程节点的父节点。
函数原型如下:
```c
struct device_node *of_graph_get_remote_port_parent(const struct device_node *np,
const struct property *pro)
```
参数说明:
- `np`:指向远程节点的 `device_node` 结构体指针。
- `pro`:指向包含远程节点信息的 `property` 结构体指针。
该函数的作用是根据 `pro` 中描述的远程节点的信息,获取该远程节点的父节点。
示例代码:
```c
#include <linux/of.h>
struct device_node *parent_node;
const struct property *remote_prop;
// 获取远程节点信息
remote_prop = of_get_property(np, "remote-endpoint", NULL);
if (remote_prop) {
// 获取远程节点的父节点
parent_node = of_graph_get_remote_port_parent(np, remote_prop);
}
```
基于高通DRM图形显示框架of_graph_get_remote_node(np, 1, 0);
在高通的 DRM 图形显示框架中,`of_graph_get_remote_node(np, 1, 0)` 函数用于查找与当前设备连接的第一个远程节点。其中,`np` 参数是指向当前设备节点的指针,`1` 表示端口号为 1,`0` 表示远程节点的 phandle 为 0。在高通的 DRM 中,通常使用 `of_graph_parse_endpoint` 函数来解析设备树中的连接信息,然后调用 `of_graph_get_remote_node` 函数查找远程节点。
例如,以下代码片段是高通 DRM 中的一个示例,用于查找与当前设备连接的 fbdev 节点:
```
struct device_node *ep;
struct device_node *remote;
ep = of_graph_parse_endpoint(dev->of_node, "output");
if (!ep) {
return ERR_PTR(-EINVAL);
}
remote = of_graph_get_remote_node(ep, 1, 0);
if (!remote) {
return ERR_PTR(-ENODEV);
}
if (!of_device_is_available(remote)) {
return ERR_PTR(-ENODEV);
}
of_node_put(ep);
```
在这个示例中,`of_graph_parse_endpoint` 函数解析当前设备节点的连接信息,`of_graph_get_remote_node` 函数查找与当前设备连接的远程节点,然后通过 `of_device_is_available` 函数检查远程节点是否可用。如果远程节点不可用,函数返回 `-ENODEV` 错误码,否则返回远程节点的指针。