高通的DRM图形显示框架没有devm_drm_of_get_bridge怎么办
时间: 2023-07-29 21:11:20 浏览: 60
如果高通的 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` 函数,你应该将返回的桥接器结构体保存在设备结构体中,以便以后可以快速访问它。