drm_bridge_add
时间: 2023-06-21 20:12:55 浏览: 418
`drm_bridge_add` 是一个函数,用于将一个 DRM 桥连接到 DRM 子系统中。DRM 桥是连接两个不同的显示管道,例如从 HDMI 到 DisplayPort,或者从 LVDS 到 eDP 等。这个函数会将桥连到 DRM 子系统的桥链表中,并将桥的模式设置为默认模式。该函数的原型如下:
```
int drm_bridge_add(struct drm_bridge *bridge);
```
其中,`struct drm_bridge` 是一个表示 DRM 桥的结构体,包含了桥的属性和方法等信息。返回值为 0 表示成功,否则表示失败。
相关问题
这段代码是什么意思 rc = drm_bridge_attach(encoder, ext_bridge, prev_bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (rc) { DSI_ERR("[%s] ext brige attach failed, %d\n", display->name, rc); goto error; }
这段代码是将一个 DRM encoder 和一个 DRM bridge 进行连接,其中 encoder 是该显示控制器的一个输出端口,而 bridge 则是将图像数据传输到该端口的一个中间组件。具体来说,该函数会将 ext_bridge(新的 DRM bridge)连接到 encoder 上,并且将 prev_bridge(之前连接的 DRM bridge)作为中间组件,以便传输图像数据。DRM_BRIDGE_ATTACH_NO_CONNECTOR 参数表示不需要连接到具体的显示器,而是仅仅进行连接。如果连接失败,会打印错误信息并跳转到 error 标签进行错误处理。
drm_bridge_funcs
`drm_bridge_funcs` 是一个结构体,用于定义 DRM 框架中桥接器(bridge)设备的操作函数。它包含一组函数指针,每个指针指向一个特定的操作函数,这些函数可以被桥接器驱动程序实现,以实现特定的操作。
下面是 `drm_bridge_funcs` 结构体的定义:
```
struct drm_bridge_funcs {
int (*attach)(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags);
void (*mode_set)(struct drm_bridge *bridge,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode);
void (*mode_fixup)(struct drm_bridge *bridge,
const struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode);
void (*mode_set_nofb)(struct drm_bridge *bridge,
const struct drm_display_mode *mode);
void (*disable)(struct drm_bridge *bridge);
void (*post_disable)(struct drm_bridge *bridge);
void (*pre_enable)(struct drm_bridge *bridge);
void (*enable)(struct drm_bridge *bridge);
void (*post_enable)(struct drm_bridge *bridge);
void (*mode_valid)(struct drm_bridge *bridge,
const struct drm_display_info *info,
const struct drm_display_mode *mode);
enum drm_mode_status (*mode_valid_crts)(struct drm_bridge *bridge,
const struct drm_display_info *info,
const struct drm_display_mode *mode);
};
```
这些操作函数的功能如下:
- `attach`:将桥接器连接到 CRTC,启用桥接器。
- `mode_set`:在 CRTC 上设置显示模式和调整显示模式。
- `mode_fixup`:根据显示模式调整显示模式。
- `mode_set_nofb`:在没有帧缓冲(framebuffer)的情况下设置显示模式。
- `disable`:停用桥接器。
- `post_disable`:桥接器停用后执行的操作。
- `pre_enable`:启用桥接器前执行的操作。
- `enable`:启用桥接器。
- `post_enable`:桥接器启用后执行的操作。
- `mode_valid`:检查显示模式是否有效。
- `mode_valid_crts`:检查显示模式是否有效,并返回相应的 `drm_mode_status`。
这些操作函数是桥接器驱动程序必须实现的函数,以便与 DRM 框架进行交互。
阅读全文