drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &panel, NULL);
时间: 2024-04-26 11:27:02 浏览: 12
这是一个在 Linux 内核中使用的函数调用,用于查找设备树中的 DRM 面板或者桥接器。具体来说,该函数会在设备 dev 的设备树节点中查找一个名称为 "panel@2" 或者 "bridge@2" 的子节点,并返回一个指向该节点的指针。如果该节点是一个面板节点,则将其指针存储在 panel 变量中;否则,panel 变量将为 NULL。该函数还可以指定一个用于存储命名空间的变量,如果不需要,则可以将其置为 NULL。
相关问题
这么使用drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &panel, &panel_bridge);dts应该怎么配置
函数`drm_of_find_panel_or_bridge`的原型中并没有包含参数`2, 0, &panel, &panel_bridge`,这些参数可能是你的代码中自定义的。不过,我可以解释一下这些参数的意义。
`2, 0, &panel, &panel_bridge`这些参数应该是自定义的,它们的含义如下:
- 第一个参数`2`表示查找层数,即查找面板或桥接器设备节点的深度。这里的`2`表示查找到设备节点的子节点的子节点,即深度为2的节点。如果这个参数为0,则表示只查找直接子节点。
- 第二个参数`0`表示查找类型,即查找面板还是桥接器。这里的`0`表示查找面板设备节点。如果这个参数为1,则表示查找桥接器设备节点。
- 第三个参数`&panel`表示面板设备节点的指针。如果该函数找到面板设备节点,则会将该节点的指针存储到`panel`中。
- 第四个参数`&panel_bridge`表示桥接器设备节点的指针。如果该函数找到桥接器设备节点,则会将该节点的指针存储到`panel_bridge`中。
因此,在DTS中配置面板或桥接器设备节点的节点名需要与代码中的查找类型参数相对应。例如,如果代码中查找类型参数为0,表示查找面板设备节点,则需要在DTS中定义名为"panel"的节点;如果代码中查找类型参数为1,表示查找桥接器设备节点,则需要在DTS中定义名为"bridge"的节点。
例如,下面是一个DTS的示例,其中定义了一个名为"panel"的节点:
```
panel {
compatible = "acme,panel";
reg = <0x0>;
// 其他属性和配置
};
```
注意,节点的`compatible`属性需要与DRM驱动程序中的设备匹配。另外,节点的`reg`属性用于指定设备的寄存器地址。根据实际情况进行配置。
高通的显示框架中这个是怎么匹配的drm_of_find_panel_or_bridge(dev->of_node, 1, 0, &panel, &panel_bridge);
在高通的DRM显示框架中,`drm_of_find_panel_or_bridge`函数的使用与标准的DRM框架类似,用于在设备树中查找与显示控制器相关的面板或桥接器节点。`drm_of_find_panel_or_bridge`函数的原型如下:
```c
int drm_of_find_panel_or_bridge(struct device_node *np,
int endpoint,
int port,
struct drm_panel **panel,
struct drm_bridge **bridge);
```
其中,`np`参数是要查找的设备树节点;`endpoint`和`port`参数用于指定查找的端口号和端口类型;`panel`和`bridge`参数用于返回查找到的面板和桥接器的指针。
在你提供的代码中,`dev->of_node`是一个指向设备树节点的指针,也就是`drm_of_find_panel_or_bridge`函数的第一个参数`np`。`1`是`endpoint`参数的值,表示查找的端口号为1;`0`是`port`参数的值,表示查找的端口类型为0(即DT_PORT_TYPE_ENDPOINT)。`&panel`和`&panel_bridge`分别是返回查找到的面板和桥接器的指针。
因此,这行代码的作用是在`dev->of_node`节点下查找端口号为1、类型为DT_PORT_TYPE_ENDPOINT的节点,并返回对应的面板和桥接器指针。如果查找成功,则返回0;否则返回负数错误码。