drm_of_find_panel_or_bridge怎么使用
时间: 2023-07-26 08:08:22 浏览: 96
`drm_of_find_panel_or_bridge()` 是 Linux 内核中一个用于查找设备节点中的显示面板或桥接器的函数。它的原型定义在 `include/drm/drm_panel.h` 头文件中,如下所示:
```c
struct drm_panel *drm_of_find_panel_or_bridge(struct device_node *np);
```
该函数接受一个 `device_node` 指针作为参数,返回一个指向 `drm_panel` 结构体的指针,该结构体表示了找到的显示面板或桥接器。
使用该函数的步骤如下:
1. 获取设备节点指针:使用 `of_find_node_by_name()` 等函数获取设备节点的指针。
2. 调用 `drm_of_find_panel_or_bridge()` 函数:将设备节点指针作为参数传递给该函数,获取指向 `drm_panel` 结构体的指针。
3. 检查返回值:如果返回值为 NULL,则表示没有找到显示面板或桥接器;否则,返回的指针可以用于访问显示面板或桥接器的属性和方法。
下面是一个示例代码:
```c
struct device_node *np;
struct drm_panel *panel;
// 获取设备节点指针
np = of_find_node_by_name(NULL, "panel");
// 查找显示面板或桥接器
panel = drm_of_find_panel_or_bridge(np);
if (panel == NULL) {
printk(KERN_ERR "Failed to find display panel or bridge\n");
} else {
// 访问显示面板或桥接器的属性和方法
...
}
// 释放设备节点指针
of_node_put(np);
```
需要注意的是,`drm_of_find_panel_or_bridge()` 函数只能在初始化时调用,不能在中断上下文中使用。