标签:内容类型 metadata reference htm 矩阵 钩子函数 head 端口 mic
struct drm_mode_config
模式配置控制结构体。
定义
struct drm_mode_config { struct mutex mutex; struct drm_modeset_lock connection_mutex; struct drm_modeset_acquire_ctx *acquire_ctx; struct mutex idr_mutex; struct idr object_idr; struct idr tile_idr; struct mutex fb_lock; int num_fb; struct list_head fb_list; spinlock_t connector_list_lock; int num_connector; struct ida connector_ida; struct list_head connector_list; struct llist_head connector_free_list; struct work_struct connector_free_work; int num_encoder; struct list_head encoder_list; int num_total_plane; struct list_head plane_list; int num_crtc; struct list_head crtc_list; struct list_head property_list; struct list_head privobj_list; int min_width, min_height; int max_width, max_height; const struct drm_mode_config_funcs *funcs; resource_size_t fb_base; bool poll_enabled; bool poll_running; bool delayed_event; struct delayed_work output_poll_work; struct mutex blob_lock; struct list_head property_blob_list; struct drm_property *edid_property; struct drm_property *dpms_property; struct drm_property *path_property; struct drm_property *tile_property; struct drm_property *link_status_property; struct drm_property *plane_type_property; struct drm_property *prop_src_x; struct drm_property *prop_src_y; struct drm_property *prop_src_w; struct drm_property *prop_src_h; struct drm_property *prop_crtc_x; struct drm_property *prop_crtc_y; struct drm_property *prop_crtc_w; struct drm_property *prop_crtc_h; struct drm_property *prop_fb_id; struct drm_property *prop_in_fence_fd; struct drm_property *prop_out_fence_ptr; struct drm_property *prop_crtc_id; struct drm_property *prop_fb_damage_clips; struct drm_property *prop_active; struct drm_property *prop_mode_id; struct drm_property *prop_vrr_enabled; struct drm_property *dvi_i_subconnector_property; struct drm_property *dvi_i_select_subconnector_property; struct drm_property *dp_subconnector_property; struct drm_property *tv_subconnector_property; struct drm_property *tv_select_subconnector_property; struct drm_property *tv_mode_property; struct drm_property *tv_left_margin_property; struct drm_property *tv_right_margin_property; struct drm_property *tv_top_margin_property; struct drm_property *tv_bottom_margin_property; struct drm_property *tv_brightness_property; struct drm_property *tv_contrast_property; struct drm_property *tv_flicker_reduction_property; struct drm_property *tv_overscan_property; struct drm_property *tv_saturation_property; struct drm_property *tv_hue_property; struct drm_property *scaling_mode_property; struct drm_property *aspect_ratio_property; struct drm_property *content_type_property; struct drm_property *degamma_lut_property; struct drm_property *degamma_lut_size_property; struct drm_property *ctm_property; struct drm_property *gamma_lut_property; struct drm_property *gamma_lut_size_property; struct drm_property *suggested_x_property; struct drm_property *suggested_y_property; struct drm_property *non_desktop_property; struct drm_property *panel_orientation_property; struct drm_property *writeback_fb_id_property; struct drm_property *writeback_pixel_formats_property; struct drm_property *writeback_out_fence_ptr_property; struct drm_property *hdr_output_metadata_property; struct drm_property *content_protection_property; struct drm_property *hdcp_content_type_property; uint32_t preferred_depth, prefer_shadow; bool prefer_shadow_fbdev; bool quirk_addfb_prefer_xbgr_30bpp; bool quirk_addfb_prefer_host_byte_order; bool async_page_flip; bool allow_fb_modifiers; bool normalize_zpos; struct drm_property *modifiers_property; uint32_t cursor_width, cursor_height; struct drm_atomic_state *suspend_state; const struct drm_mode_config_helper_funcs *helper_private; };
成员
mutex
这是一个可怕的大模型BKL,它保护所有不能保护的东西。范围是不清楚和模糊的,尝试从它的保护下删除任何东西,并将其移到范围更广的锁中。
它保护的一件重要的事情是使用acquire_ctx。
connection_mutex
这保护了连接器状态和连接器到编码器到CRTC的路由链。
特别是对于原子驱动程序,它保护drm_connector.state。
acquire_ctx
对于遗留的ioctl,原子驱动程序使用全局隐式获取上下文。已弃用,因为隐式锁定上下文使得不可能使用驱动程序私有结构drm_modeset_lock。用户必须持有互斥锁。
idr_mutex
用于KMS ID分配和管理的互斥锁。保护object_idr和tile_idr。
object_idr
主要KMS ID跟踪对象。使用这个idr为所有的id, fb, crtc,connector,modes-用一个id表示所有模式相关信息,以方便后期使用。
tile_idr
使用这个idr为tiled sinks分配新的id,就像在一些高分辨率DP MST屏幕中使用的那样。
fb_lock
保护全局的fb_list和num_fb。
num_fb
fb_list上的元素数。
fb_list
connector_list_lock
保护num_connector、connector_list和connector_free_list。
num_connector
此设备上的connector数量。受connector_list_lock保护。
connector_ida
connector索引的id分配器。
connector_list
用drm_connector.head链接的connector对象列表。受connector_list_lock保护。仅使用drm_for_each_connector_iter()和结构体drm_connector_list_iter遍历此列表。
connector_free_list
用drm_connector.free_head链接的connector对象列表。受connector_list_lock保护。由drm_for_each_connector_iter()和struct drm_connector_list_iter使用connector_free_work保存空闲连接器。
connector_free_work
清理connector_free_list的work.
num_encoder
此设备上的encoder数目。这在设备的生命周期内是不变的,因此不需要任何锁。
encoder_list
通过drm_encoder.head链接为列表的encoder对象列表。这在设备的生命周期内是不变的,因此不需要任何锁。
num_total_plane
此设备上通用(即primary/cursor)平面的数量。这在设备的生命周期内是不变的,因此不需要任何锁。
plane_list
用drm_plane.head链接的平面对象列表。这在设备的生命周期内是不变的,因此不需要任何锁。
num_crtc
此设备上通过drm_crtc.head链接的crtc数量。这在设备的生命周期内是不变的,因此不需要任何锁。
crtc_list
通过drm_crtc.head链接的CRTC对象列表。这在设备的生命周期内是不变的,因此不需要任何锁。
property_list
用drm_property.head链接的属性类型对象的列表。这在设备的生命周期内是不变的,因此不需要任何锁。
privobj_list
通过drm_private_obj.head链接的私有对象列表。这在设备的生命周期内是不变的,因此不需要任何锁。
min_width
此设备上的fb像素最小宽度
min_height
此设备上的fb像素最小高度
max_width
此设备上的fb像素最大宽度
max_height
此设备上的fb像素最大高度
funcs
提供模式设置功能的核心驱动
fb_base
framebuffer基址
poll_enabled
跟踪此设备的轮询支持
poll_running
跟踪此设备的轮询状态
delayed_event
output_poll_work
blob_lock
property_blob_listdpms_property
edid_property
dpms_property
path_property
tile_property
link_status_property
plane_type_property
prop_src_x/prop_src_y/prop_src_w/prop_src_h
prop_crtc_x/prop_crtc_y/prop_crtc_w/prop_crtc_h
prop_fb_id
prop_in_fence_fd
prop_out_fence_ptr
prop_crtc_id
prop_fb_damage_clips
prop_active
prop_mode_id
prop_vrr_enabled
dvi_i_subconnector_property
dvi_i_select_subconnector_property
dp_subconnector_property
tv_subconnector_property
tv_select_subconnector_property
tv_mode_property
tv_left_margin_property/
tv_right_margin_property/
tv_top_margin_property/
tv_bottom_margin_property
tv_brightness_property
tv_contrast_property
tv_flicker_reduction_property
tv_overscan_property
tv_saturation_property
tv_hue_property
scaling_mode_property
aspect_ratio_property
content_type_property
degamma_lut_property
degamma_lut_size_property
ctm_property
gamma_lut_property
gamma_lut_size_property
suggested_x_property
/suggested_y_property
non_desktop_property
panel_orientation_property
writeback_fb_id_property
writeback_pixel_formats_property
writeback_out_fence_ptr_property
hdr_output_metadata_property
content_protection_property
hdcp_content_type_property
preferred_depth
prefer_shadow
prefer_shadow_fbdev
quirk_addfb_prefer_xbgr_30bpp
quirk_addfb_prefer_host_byte_order
async_page_flip
allow_fb_modifiers
normalize_zpos
modifiers_property
cursor_width
/cursor_height
suspend_state
helper_private
标签:内容类型 metadata reference htm 矩阵 钩子函数 head 端口 mic
原文地址:https://www.cnblogs.com/lizhenneng/p/14315851.html