DRM 框架drm_of_find_panel_or_bridge函数是做什么的
时间: 2023-09-22 12:07:20 浏览: 48
DRM 框架中的drm_of_find_panel_or_bridge函数是用于在设备树中查找指定的显示面板或者桥接器节点。该函数首先会通过device_node_is_compatible函数检查当前节点是否与指定的compatible字符串匹配,如果匹配则返回当前节点的指针,否则继续向下遍历设备树的子节点,直到找到匹配的节点或遍历完所有子节点为止。该函数主要用于在设备树中查找显示面板或桥接器节点的情况下使用,以便于构建显示管道。
相关问题
高通的DRM图形框架drm_of_find_panel_or_bridge的使用
函数`drm_of_find_panel_or_bridge`是在DRM驱动中查找并返回驱动程序所需的面板或桥接器设备节点的函数。它的原型如下:
```
struct device_node *drm_of_find_panel_or_bridge(struct device_node *np);
```
该函数接受一个设备节点参数`np`,用于指定要查找的设备节点。函数的返回值是一个指向面板或桥接器设备节点的指针。如果未找到匹配的设备节点,则返回空指针。
使用该函数需要先包含`<linux/of.h>`头文件。
该函数的实现是通过遍历设备节点的子节点来查找面板或桥接器设备节点。它首先查找`"panel"`节点,如果找到则返回该节点的指针;否则查找`"bridge"`节点,如果找到则返回该节点的指针;否则返回空指针。
以下是一个使用`drm_of_find_panel_or_bridge`函数的示例代码:
```
struct device_node *panel_node;
panel_node = drm_of_find_panel_or_bridge(dev->of_node);
if (panel_node) {
// 找到面板设备节点,进行相关操作
// ...
} else {
// 没有找到面板设备节点
// ...
}
```
在这个示例中,`dev->of_node`是一个指向设备节点的指针,用于指定要查找的设备节点。如果函数返回的`panel_node`不为空,则表示找到了面板设备节点,可以对其进行相关操作。否则表示没有找到面板设备节点。
drm_of_find_panel_or_bridge怎么使用
函数 `drm_of_find_panel_or_bridge` 是在Linux内核的DRM子系统中使用的函数, 用于查找指定设备树节点下的面板或者桥接器。它的定义在 `include/drm/drm_of.h` 头文件中。
函数原型如下:
```c
struct device_node *drm_of_find_panel_or_bridge(struct device_node *np);
```
函数参数是一个指向设备树节点的指针 `np`,函数返回值是一个指向找到的设备树节点的指针。如果没有找到,则返回空指针。
使用 `drm_of_find_panel_or_bridge` 函数,可以在设备树中查找指定设备节点下的面板或桥接器节点,然后对其进行配置和初始化。例如,可以使用以下代码来查找设备树中名为 "panel" 的节点:
```c
struct device_node *panel_node;
panel_node = of_find_node_by_name(NULL, "panel");
if (panel_node) {
struct device_node *panel_or_bridge_node;
panel_or_bridge_node = drm_of_find_panel_or_bridge(panel_node);
if (panel_or_bridge_node) {
//对面板或桥接器节点进行配置和初始化
...
}
}
```
需要注意的是,在使用 `drm_of_find_panel_or_bridge` 函数之前,需要先使用 `of_find_node_by_name` 函数查找设备树中对应的节点。