通过rockchip_drm_match_add为每个component(各种encoder和crtc)注册一个component_match_array到component_match; 通过component_master_add_with_match触发各种encoder和crtccomponent的bind操作,例如vop_bind、dw_hdmi_rockchip_bind等; bind的含义就是将DRM框架里的组件关联在一起,以vop_bind为例: VOP driver对应crtc...
linux内核将DRM驱动相关的代码都放在drivers/gpu/drm目录下,这下面的文件还是比较多的,我们大概了解一下即可; root@zhengyang:/work/sambashare/rk3399/linux-6.3# ls drivers/gpu/drm/ -I "*.o" amd drm_fbdev_generic.c drm_print.c logicvc arm drm_fb_dma_helper.c drm_privacy_screen.c Makefile ar...
logo-memory-region = <&drm_logo>;secure-memory-region = <&secure_memory>;route { route_hdmi:...
component_master_add_with_match(dev, &rockchip_drm_ops, match); //将match数组加入master中 struc...
return component_master_add_with_match(dev, &rockchip_drm_ops, match); } static void rockchip_add_endpoints(...) { for_each_child_of_node(port, ep) { remote = of_graph_get_remote_port_parent(ep); /* 这边的remote即为和vop关联的输出设备, 即为edp, mipi或hdmi */ ...
3.1.1 struct drm_display_info 3.1.2 struct drm_hdmi_info 3.2 操作函数 3.2.1 struct drm_connector_funcs 3.2.2 struct drm_connector_helper_funcs 四、encoder 核心API 4.1 encoder初始化 4.2 encoder注册 五、encoder 核心API 5.1 connector初始化 5.2 connector注册 5.2.1 drm_sysfs_connector_add 5.2....
(-) create mode 100644 drivers/gpu/drm/rockchip/dw_hdmi-rockchip.h diff --git a/drivers/gpu/drm/bridge/dw-hdmi.c b/drivers/gpu/drm/bridge/dw-hdmi.c index 5ad72ec..5e03d83 100644 --- a/drivers/gpu/drm/bridge/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/dw-hdmi.c @@ -735,10 ...
- 我们无视其余语句,直接定位到component_master_add_with_match函数处。此处传入了一个参数rockchip_drm_ops,我们摸上去 - 可见,这个参数为component_master_ops型结构体,内有一个成员bind初始化为rockchip_drm_bind,继续摸上去 - 继续无视其他语句,直接看drm_dev_alloc这句。此处传入一个参数为rockchip_drm_dr...
drm/rockchip/Kconfig | 9 + drivers/gpu/drm/rockchip/Makefile | 1 + drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 385 ++++++++++++++ include/drm/bridge/analogix_dp.h | 1 + 4 files changed, 396 insertions(+) create mode 100644 drivers/gpu/drm/rockchip/analogix_dp-rockchip.c...
return component_master_add_with_match(dev, &rockchip_drm_ops, match); } static void rockchip_add_endpoints(...) { for_each_child_of_node(port, ep) { remote = of_graph_get_remote_port_parent(ep); /* 这边的remote即为和vop关联的输出设备, 即为edp, mipi或hdmi */ ...