• Home
  • Raw
  • Download

Lines Matching refs:connector

124 static void drm_connector_get_cmdline_mode(struct drm_connector *connector)  in drm_connector_get_cmdline_mode()  argument
126 struct drm_cmdline_mode *mode = &connector->cmdline_mode; in drm_connector_get_cmdline_mode()
129 if (fb_get_options(connector->name, &option)) in drm_connector_get_cmdline_mode()
133 connector, in drm_connector_get_cmdline_mode()
138 DRM_INFO("forcing %s connector %s\n", connector->name, in drm_connector_get_cmdline_mode()
140 connector->force = mode->force; in drm_connector_get_cmdline_mode()
144 connector->name, mode->name, in drm_connector_get_cmdline_mode()
154 struct drm_connector *connector = in drm_connector_free() local
156 struct drm_device *dev = connector->dev; in drm_connector_free()
158 drm_mode_object_unregister(dev, &connector->base); in drm_connector_free()
159 connector->funcs->destroy(connector); in drm_connector_free()
164 struct drm_connector *connector, *n; in drm_connector_free_work_fn() local
175 llist_for_each_entry_safe(connector, n, freed, free_node) { in drm_connector_free_work_fn()
176 drm_mode_object_unregister(dev, &connector->base); in drm_connector_free_work_fn()
177 connector->funcs->destroy(connector); in drm_connector_free_work_fn()
195 struct drm_connector *connector, in drm_connector_init() argument
208 ret = __drm_mode_object_add(dev, &connector->base, in drm_connector_init()
214 connector->base.properties = &connector->properties; in drm_connector_init()
215 connector->dev = dev; in drm_connector_init()
216 connector->funcs = funcs; in drm_connector_init()
226 connector->index = ret; in drm_connector_init()
229 connector->connector_type = connector_type; in drm_connector_init()
230 connector->connector_type_id = in drm_connector_init()
232 if (connector->connector_type_id < 0) { in drm_connector_init()
233 ret = connector->connector_type_id; in drm_connector_init()
236 connector->name = in drm_connector_init()
239 connector->connector_type_id); in drm_connector_init()
240 if (!connector->name) { in drm_connector_init()
245 INIT_LIST_HEAD(&connector->probed_modes); in drm_connector_init()
246 INIT_LIST_HEAD(&connector->modes); in drm_connector_init()
247 mutex_init(&connector->mutex); in drm_connector_init()
248 connector->edid_blob_ptr = NULL; in drm_connector_init()
249 connector->tile_blob_ptr = NULL; in drm_connector_init()
250 connector->status = connector_status_unknown; in drm_connector_init()
251 connector->display_info.panel_orientation = in drm_connector_init()
254 drm_connector_get_cmdline_mode(connector); in drm_connector_init()
259 list_add_tail(&connector->head, &config->connector_list); in drm_connector_init()
265 drm_connector_attach_edid_property(connector); in drm_connector_init()
267 drm_object_attach_property(&connector->base, in drm_connector_init()
270 drm_object_attach_property(&connector->base, in drm_connector_init()
274 drm_object_attach_property(&connector->base, in drm_connector_init()
277 drm_object_attach_property(&connector->base, in drm_connector_init()
282 drm_object_attach_property(&connector->base, config->prop_crtc_id, 0); in drm_connector_init()
285 connector->debugfs_entry = NULL; in drm_connector_init()
288 ida_simple_remove(connector_ida, connector->connector_type_id); in drm_connector_init()
291 ida_simple_remove(&config->connector_ida, connector->index); in drm_connector_init()
294 drm_mode_object_unregister(dev, &connector->base); in drm_connector_init()
317 struct drm_connector *connector, in drm_connector_init_with_ddc() argument
324 ret = drm_connector_init(dev, connector, funcs, connector_type); in drm_connector_init_with_ddc()
329 connector->ddc = ddc; in drm_connector_init_with_ddc()
343 void drm_connector_attach_edid_property(struct drm_connector *connector) in drm_connector_attach_edid_property() argument
345 struct drm_mode_config *config = &connector->dev->mode_config; in drm_connector_attach_edid_property()
347 drm_object_attach_property(&connector->base, in drm_connector_attach_edid_property()
365 int drm_connector_attach_encoder(struct drm_connector *connector, in drm_connector_attach_encoder() argument
381 if (WARN_ON(connector->encoder)) in drm_connector_attach_encoder()
384 for (i = 0; i < ARRAY_SIZE(connector->encoder_ids); i++) { in drm_connector_attach_encoder()
385 if (connector->encoder_ids[i] == 0) { in drm_connector_attach_encoder()
386 connector->encoder_ids[i] = encoder->base.id; in drm_connector_attach_encoder()
402 bool drm_connector_has_possible_encoder(struct drm_connector *connector, in drm_connector_has_possible_encoder() argument
408 drm_connector_for_each_possible_encoder(connector, enc, i) { in drm_connector_has_possible_encoder()
417 static void drm_mode_remove(struct drm_connector *connector, in drm_mode_remove() argument
421 drm_mode_destroy(connector->dev, mode); in drm_mode_remove()
430 void drm_connector_cleanup(struct drm_connector *connector) in drm_connector_cleanup() argument
432 struct drm_device *dev = connector->dev; in drm_connector_cleanup()
438 if (WARN_ON(connector->registration_state == in drm_connector_cleanup()
440 drm_connector_unregister(connector); in drm_connector_cleanup()
442 if (connector->tile_group) { in drm_connector_cleanup()
443 drm_mode_put_tile_group(dev, connector->tile_group); in drm_connector_cleanup()
444 connector->tile_group = NULL; in drm_connector_cleanup()
447 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) in drm_connector_cleanup()
448 drm_mode_remove(connector, mode); in drm_connector_cleanup()
450 list_for_each_entry_safe(mode, t, &connector->modes, head) in drm_connector_cleanup()
451 drm_mode_remove(connector, mode); in drm_connector_cleanup()
453 ida_simple_remove(&drm_connector_enum_list[connector->connector_type].ida, in drm_connector_cleanup()
454 connector->connector_type_id); in drm_connector_cleanup()
457 connector->index); in drm_connector_cleanup()
459 kfree(connector->display_info.bus_formats); in drm_connector_cleanup()
460 drm_mode_object_unregister(dev, &connector->base); in drm_connector_cleanup()
461 kfree(connector->name); in drm_connector_cleanup()
462 connector->name = NULL; in drm_connector_cleanup()
464 list_del(&connector->head); in drm_connector_cleanup()
468 WARN_ON(connector->state && !connector->funcs->atomic_destroy_state); in drm_connector_cleanup()
469 if (connector->state && connector->funcs->atomic_destroy_state) in drm_connector_cleanup()
470 connector->funcs->atomic_destroy_state(connector, in drm_connector_cleanup()
471 connector->state); in drm_connector_cleanup()
473 mutex_destroy(&connector->mutex); in drm_connector_cleanup()
475 memset(connector, 0, sizeof(*connector)); in drm_connector_cleanup()
488 int drm_connector_register(struct drm_connector *connector) in drm_connector_register() argument
492 if (!connector->dev->registered) in drm_connector_register()
495 mutex_lock(&connector->mutex); in drm_connector_register()
496 if (connector->registration_state != DRM_CONNECTOR_INITIALIZING) in drm_connector_register()
499 ret = drm_sysfs_connector_add(connector); in drm_connector_register()
503 drm_debugfs_connector_add(connector); in drm_connector_register()
505 if (connector->funcs->late_register) { in drm_connector_register()
506 ret = connector->funcs->late_register(connector); in drm_connector_register()
511 drm_mode_object_register(connector->dev, &connector->base); in drm_connector_register()
513 connector->registration_state = DRM_CONNECTOR_REGISTERED; in drm_connector_register()
517 drm_debugfs_connector_remove(connector); in drm_connector_register()
518 drm_sysfs_connector_remove(connector); in drm_connector_register()
520 mutex_unlock(&connector->mutex); in drm_connector_register()
531 void drm_connector_unregister(struct drm_connector *connector) in drm_connector_unregister() argument
533 mutex_lock(&connector->mutex); in drm_connector_unregister()
534 if (connector->registration_state != DRM_CONNECTOR_REGISTERED) { in drm_connector_unregister()
535 mutex_unlock(&connector->mutex); in drm_connector_unregister()
539 if (connector->funcs->early_unregister) in drm_connector_unregister()
540 connector->funcs->early_unregister(connector); in drm_connector_unregister()
542 drm_sysfs_connector_remove(connector); in drm_connector_unregister()
543 drm_debugfs_connector_remove(connector); in drm_connector_unregister()
545 connector->registration_state = DRM_CONNECTOR_UNREGISTERED; in drm_connector_unregister()
546 mutex_unlock(&connector->mutex); in drm_connector_unregister()
552 struct drm_connector *connector; in drm_connector_unregister_all() local
556 drm_for_each_connector_iter(connector, &conn_iter) in drm_connector_unregister_all()
557 drm_connector_unregister(connector); in drm_connector_unregister_all()
563 struct drm_connector *connector; in drm_connector_register_all() local
568 drm_for_each_connector_iter(connector, &conn_iter) { in drm_connector_register_all()
569 ret = drm_connector_register(connector); in drm_connector_register_all()
1261 int drm_connector_attach_content_type_property(struct drm_connector *connector) in drm_connector_attach_content_type_property() argument
1263 if (!drm_mode_create_content_type_property(connector->dev)) in drm_connector_attach_content_type_property()
1264 drm_object_attach_property(&connector->base, in drm_connector_attach_content_type_property()
1265 connector->dev->mode_config.content_type_property, in drm_connector_attach_content_type_property()
1312 void drm_connector_attach_tv_margin_properties(struct drm_connector *connector) in drm_connector_attach_tv_margin_properties() argument
1314 struct drm_device *dev = connector->dev; in drm_connector_attach_tv_margin_properties()
1316 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1319 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1322 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1325 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1567 struct drm_connector *connector) in drm_connector_attach_vrr_capable_property() argument
1569 struct drm_device *dev = connector->dev; in drm_connector_attach_vrr_capable_property()
1572 if (!connector->vrr_capable_property) { in drm_connector_attach_vrr_capable_property()
1578 connector->vrr_capable_property = prop; in drm_connector_attach_vrr_capable_property()
1579 drm_object_attach_property(&connector->base, prop, 0); in drm_connector_attach_vrr_capable_property()
1600 int drm_connector_attach_scaling_mode_property(struct drm_connector *connector, in drm_connector_attach_scaling_mode_property() argument
1603 struct drm_device *dev = connector->dev; in drm_connector_attach_scaling_mode_property()
1637 drm_object_attach_property(&connector->base, in drm_connector_attach_scaling_mode_property()
1640 connector->scaling_mode_property = scaling_mode_property; in drm_connector_attach_scaling_mode_property()
1700 int drm_mode_create_colorspace_property(struct drm_connector *connector) in drm_mode_create_colorspace_property() argument
1702 struct drm_device *dev = connector->dev; in drm_mode_create_colorspace_property()
1705 if (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || in drm_mode_create_colorspace_property()
1706 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) { in drm_mode_create_colorspace_property()
1718 connector->colorspace_property = prop; in drm_mode_create_colorspace_property()
1788 int drm_connector_set_path_property(struct drm_connector *connector, in drm_connector_set_path_property() argument
1791 struct drm_device *dev = connector->dev; in drm_connector_set_path_property()
1795 &connector->path_blob_ptr, in drm_connector_set_path_property()
1798 &connector->base, in drm_connector_set_path_property()
1817 int drm_connector_set_tile_property(struct drm_connector *connector) in drm_connector_set_tile_property() argument
1819 struct drm_device *dev = connector->dev; in drm_connector_set_tile_property()
1823 if (!connector->has_tile) { in drm_connector_set_tile_property()
1825 &connector->tile_blob_ptr, in drm_connector_set_tile_property()
1828 &connector->base, in drm_connector_set_tile_property()
1834 connector->tile_group->id, connector->tile_is_single_monitor, in drm_connector_set_tile_property()
1835 connector->num_h_tile, connector->num_v_tile, in drm_connector_set_tile_property()
1836 connector->tile_h_loc, connector->tile_v_loc, in drm_connector_set_tile_property()
1837 connector->tile_h_size, connector->tile_v_size); in drm_connector_set_tile_property()
1840 &connector->tile_blob_ptr, in drm_connector_set_tile_property()
1843 &connector->base, in drm_connector_set_tile_property()
1863 int drm_connector_update_edid_property(struct drm_connector *connector, in drm_connector_update_edid_property() argument
1866 struct drm_device *dev = connector->dev; in drm_connector_update_edid_property()
1871 if (connector->override_edid) in drm_connector_update_edid_property()
1886 drm_add_display_info(connector, edid); in drm_connector_update_edid_property()
1888 drm_reset_display_info(connector); in drm_connector_update_edid_property()
1890 drm_object_property_set_value(&connector->base, in drm_connector_update_edid_property()
1892 connector->display_info.non_desktop); in drm_connector_update_edid_property()
1895 &connector->edid_blob_ptr, in drm_connector_update_edid_property()
1898 &connector->base, in drm_connector_update_edid_property()
1902 return drm_connector_set_tile_property(connector); in drm_connector_update_edid_property()
1925 void drm_connector_set_link_status_property(struct drm_connector *connector, in drm_connector_set_link_status_property() argument
1928 struct drm_device *dev = connector->dev; in drm_connector_set_link_status_property()
1931 connector->state->link_status = link_status; in drm_connector_set_link_status_property()
1947 int drm_connector_attach_max_bpc_property(struct drm_connector *connector, in drm_connector_attach_max_bpc_property() argument
1950 struct drm_device *dev = connector->dev; in drm_connector_attach_max_bpc_property()
1953 prop = connector->max_bpc_property; in drm_connector_attach_max_bpc_property()
1959 connector->max_bpc_property = prop; in drm_connector_attach_max_bpc_property()
1962 drm_object_attach_property(&connector->base, prop, max); in drm_connector_attach_max_bpc_property()
1963 connector->state->max_requested_bpc = max; in drm_connector_attach_max_bpc_property()
1964 connector->state->max_bpc = max; in drm_connector_attach_max_bpc_property()
1980 struct drm_connector *connector, bool capable) in drm_connector_set_vrr_capable_property() argument
1982 drm_object_property_set_value(&connector->base, in drm_connector_set_vrr_capable_property()
1983 connector->vrr_capable_property, in drm_connector_set_vrr_capable_property()
2007 struct drm_connector *connector, int width, int height) in drm_connector_init_panel_orientation_property() argument
2009 struct drm_device *dev = connector->dev; in drm_connector_init_panel_orientation_property()
2010 struct drm_display_info *info = &connector->display_info; in drm_connector_init_panel_orientation_property()
2033 drm_object_attach_property(&connector->base, prop, in drm_connector_init_panel_orientation_property()
2044 struct drm_connector *connector = obj_to_connector(obj); in drm_connector_set_obj_prop() local
2047 if (property == connector->dev->mode_config.dpms_property) { in drm_connector_set_obj_prop()
2048 ret = (*connector->funcs->dpms)(connector, (int)value); in drm_connector_set_obj_prop()
2049 } else if (connector->funcs->set_property) in drm_connector_set_obj_prop()
2050 ret = connector->funcs->set_property(connector, property, value); in drm_connector_set_obj_prop()
2053 drm_object_property_set_value(&connector->base, property, value); in drm_connector_set_obj_prop()
2072 static struct drm_encoder *drm_connector_get_encoder(struct drm_connector *connector) in drm_connector_get_encoder() argument
2076 if (connector->state) in drm_connector_get_encoder()
2077 return connector->state->best_encoder; in drm_connector_get_encoder()
2078 return connector->encoder; in drm_connector_get_encoder()
2117 struct drm_connector *connector; in drm_mode_getconnector() local
2135 connector = drm_connector_lookup(dev, file_priv, out_resp->connector_id); in drm_mode_getconnector()
2136 if (!connector) in drm_mode_getconnector()
2139 drm_connector_for_each_possible_encoder(connector, encoder, i) in drm_mode_getconnector()
2146 drm_connector_for_each_possible_encoder(connector, encoder, i) { in drm_mode_getconnector()
2156 out_resp->connector_id = connector->base.id; in drm_mode_getconnector()
2157 out_resp->connector_type = connector->connector_type; in drm_mode_getconnector()
2158 out_resp->connector_type_id = connector->connector_type_id; in drm_mode_getconnector()
2162 connector->funcs->fill_modes(connector, in drm_mode_getconnector()
2167 out_resp->mm_width = connector->display_info.width_mm; in drm_mode_getconnector()
2168 out_resp->mm_height = connector->display_info.height_mm; in drm_mode_getconnector()
2169 out_resp->subpixel = connector->display_info.subpixel_order; in drm_mode_getconnector()
2170 out_resp->connection = connector->status; in drm_mode_getconnector()
2173 list_for_each_entry(mode, &connector->modes, head) in drm_mode_getconnector()
2213 encoder = drm_connector_get_encoder(connector); in drm_mode_getconnector()
2221 ret = drm_mode_object_get_properties(&connector->base, file_priv->atomic, in drm_mode_getconnector()
2228 drm_connector_put(connector); in drm_mode_getconnector()