高通的DRM显示框架 of_graph_get_remote_node(np, port, endpoint);的返回值是什么
时间: 2024-03-08 22:45:40 浏览: 44
函数 of_graph_get_remote_node(np, port, endpoint) 的返回值是一个指向目标节点的 struct device_node 指针。该函数用于获取与当前节点连接的远程节点,其中 np 是当前节点的指针,port 是连接到远程节点的端口的编号,endpoint 是远程节点上连接到当前节点的端口的名称。
相关问题
基于高通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` 错误码,否则返回远程节点的指针。
高通的DRM图形显示框架没有devm_drm_of_get_bridge怎么办
如果高通的 DRM 图形显示框架没有 `devm_drm_of_get_bridge`,你可以使用 `drm_of_find_panel_or_bridge` 函数来替代。这个函数可以在设备树中查找与指定设备节点匹配的面板或桥接器节点,然后返回一个指向 drm_bridge 结构的指针。你可以通过该指针来访问桥接器的属性和方法。
下面是一个使用 `drm_of_find_panel_or_bridge` 函数来获取 DRM 桥接器的示例代码:
```c
struct drm_bridge *bridge;
struct device_node *node;
/* 获取设备节点 */
node = of_parse_phandle(dev->of_node, "port", 0);
if (!node) {
dev_err(dev, "failed to find port node\n");
return -ENODEV;
}
/* 查找桥接器 */
bridge = drm_of_find_panel_or_bridge(node);
if (!bridge) {
dev_err(dev, "failed to find bridge\n");
return -ENODEV;
}
/* 访问桥接器属性和方法 */
bridge->funcs->attach(bridge);
```
在这个示例代码中,我们首先使用 `of_parse_phandle` 函数获取设备节点,然后通过 `drm_of_find_panel_or_bridge` 函数查找与该设备节点匹配的 DRM 桥接器。最后,我们可以通过桥接器的 `attach` 方法来连接桥接器。
请注意,如果你需要在驱动程序中频繁使用 `drm_of_find_panel_or_bridge` 函数,你应该将返回的桥接器结构体保存在设备结构体中,以便以后可以快速访问它。