这段函数是什么意思 remote = of_graph_get_remote_node(np, port, endpoint); if (!remote) { return -ENODEV; }
时间: 2024-04-26 14:25:51 浏览: 91
这段代码是在使用 `of_graph_get_remote_node(np, port, endpoint)` 函数查找远程节点后,对返回值进行了判断。如果返回值是 `NULL`,说明查找失败,即远程节点不存在,此时函数返回一个错误码 `-ENODEV`,表示没有这个设备。如果返回值不是 `NULL`,说明查找成功,将指向远程节点的指针赋值给 `remote` 变量,后续代码可以使用该指针访问远程节点的属性。
相关问题
解释一下这段代码int drm_of_find_panel_or_bridge(const struct device_node *np, int port, int endpoint, struct drm_panel **panel, struct drm_bridge **bridge) { int ret = -EPROBE_DEFER; struct device_node *remote; if (!panel && !bridge) return -EINVAL; if (panel) *panel = NULL; /* * of_graph_get_remote_node() produces a noisy error message if port * node isn't found and the absence of the port is a legit case here, * so at first we silently check whether graph presents in the * device-tree node. */ if (!of_graph_is_present(np)) return -ENODEV; remote = of_graph_get_remote_node(np, port, endpoint); if (!remote) return -ENODEV; if (panel) { *panel = of_drm_find_panel(remote); if (!IS_ERR(*panel)) ret = 0; else *panel = NULL; } /* No panel found yet, check for a bridge next. */ if (bridge) { if (ret) { *bridge = of_drm_find_bridge(remote); if (*bridge) ret = 0; } else { *bridge = NULL; } } of_node_put(remote); return ret; }
这段代码是 Linux 内核 DRM 子系统中的函数 `drm_of_find_panel_or_bridge` 的实现代码,该函数用于查找设备树节点下的面板或桥接器。
该函数的参数 `np` 是一个指向设备树节点的指针,`port` 和 `endpoint` 是设备树节点的端口和端点号,`panel` 和 `bridge` 分别是指向 drm_panel 和 drm_bridge 结构体指针的指针。函数返回一个整数值,表示查找结果。
在函数实现中,首先判断传入的参数 `panel` 和 `bridge` 是否都为空指针,如果是则返回 -EINVAL。接着,使用 `of_graph_is_present` 函数判断设备树节点中是否存在 graph 节点,如果不存在则返回 -ENODEV。然后,调用 `of_graph_get_remote_node` 函数获取指定端口和端点号的远程节点,如果获取失败则返回 -ENODEV。
接着,如果 `panel` 不为空,则调用 `of_drm_find_panel` 函数查找面板节点并将结果存入 `panel` 指针中,如果查找成功则将返回值 `ret` 设为 0,否则将 `panel` 指针设为 NULL。如果 `panel` 为空,则不查找面板节点。
如果没有找到面板节点,则继续查找桥接器节点。如果 `bridge` 不为空,则先判断 `ret` 的值,如果不为 0,则调用 `of_drm_find_bridge` 函数查找桥接器节点并将结果存入 `bridge` 指针中,如果查找成功则将返回值 `ret` 设为 0,否则将 `bridge` 指针设为 NULL。如果 `bridge` 为空,则不查找桥接器节点。
最后,使用 `of_node_put` 函数释放获取到的远程节点,最终返回查找结果。
pdata->mipi_host_node = of_graph_get_remote_node(np, 0, 0);这段是什么意思
这段代码是获取 MIPI 主机设备节点的指针。`np` 是当前设备节点的指针,`of_graph_get_remote_node()` 函数的作用是获取与当前节点相连的远端节点的指针。`pdata->mipi_host_node` 是 MIPI 主机设备节点的指针,通过 `of_graph_get_remote_node(np, 0, 0)` 获取与当前节点相连的第一个远端节点的指针,并将其赋值给 `pdata->mipi_host_node` 变量。这段代码主要用于设备树中节点之间的关联,具体的用法可以参考 Linux 内核的文档。
阅读全文