Lines Matching full:connector
49 * objects and initialized by setting the following fields. The connector is
51 * &struct drm_connector_funcs and a connector type, and then exposed to
55 * connectors to encoders 1:1, the connector should be attached at
74 * Connector and encoder types.
116 * drm_get_connector_type_name - return a string for connector type
117 * @type: The connector type (DRM_MODE_CONNECTOR_*)
119 * Returns: the name of the connector type, or NULL if the type is not valid.
132 * @connector: connector to query
134 * The kernel supports per-connector configuration of its consoles through
137 * particular connector. This is typically only used during the early fbdev
140 static void drm_connector_get_cmdline_mode(struct drm_connector *connector) in drm_connector_get_cmdline_mode() argument
142 struct drm_cmdline_mode *mode = &connector->cmdline_mode; in drm_connector_get_cmdline_mode()
145 if (fb_get_options(connector->name, &option)) in drm_connector_get_cmdline_mode()
149 connector, in drm_connector_get_cmdline_mode()
154 DRM_INFO("forcing %s connector %s\n", connector->name, in drm_connector_get_cmdline_mode()
156 connector->force = mode->force; in drm_connector_get_cmdline_mode()
160 DRM_INFO("cmdline forces connector %s panel_orientation to %d\n", in drm_connector_get_cmdline_mode()
161 connector->name, mode->panel_orientation); in drm_connector_get_cmdline_mode()
162 drm_connector_set_panel_orientation(connector, in drm_connector_get_cmdline_mode()
166 DRM_DEBUG_KMS("cmdline mode for connector %s %s %dx%d@%dHz%s%s%s\n", in drm_connector_get_cmdline_mode()
167 connector->name, mode->name, in drm_connector_get_cmdline_mode()
177 struct drm_connector *connector = in drm_connector_free() local
179 struct drm_device *dev = connector->dev; in drm_connector_free()
181 drm_mode_object_unregister(dev, &connector->base); in drm_connector_free()
182 connector->funcs->destroy(connector); in drm_connector_free()
187 struct drm_connector *connector, *n; in drm_connector_free_work_fn() local
198 llist_for_each_entry_safe(connector, n, freed, free_node) { in drm_connector_free_work_fn()
199 drm_mode_object_unregister(dev, &connector->base); in drm_connector_free_work_fn()
200 connector->funcs->destroy(connector); in drm_connector_free_work_fn()
205 * drm_connector_init - Init a preallocated connector
207 * @connector: the connector to init
208 * @funcs: callbacks for this connector
209 * @connector_type: user visible type of the connector
211 * Initialises a preallocated connector. Connectors should be
212 * subclassed as part of driver connector objects.
218 struct drm_connector *connector, in drm_connector_init() argument
231 ret = __drm_mode_object_add(dev, &connector->base, in drm_connector_init()
237 connector->base.properties = &connector->properties; in drm_connector_init()
238 connector->dev = dev; in drm_connector_init()
239 connector->funcs = funcs; in drm_connector_init()
241 /* connector index is used with 32bit bitmasks */ in drm_connector_init()
244 DRM_DEBUG_KMS("Failed to allocate %s connector index: %d\n", in drm_connector_init()
249 connector->index = ret; in drm_connector_init()
252 connector->connector_type = connector_type; in drm_connector_init()
253 connector->connector_type_id = in drm_connector_init()
255 if (connector->connector_type_id < 0) { in drm_connector_init()
256 ret = connector->connector_type_id; in drm_connector_init()
259 connector->name = in drm_connector_init()
262 connector->connector_type_id); in drm_connector_init()
263 if (!connector->name) { in drm_connector_init()
268 INIT_LIST_HEAD(&connector->probed_modes); in drm_connector_init()
269 INIT_LIST_HEAD(&connector->modes); in drm_connector_init()
270 mutex_init(&connector->mutex); in drm_connector_init()
271 connector->edid_blob_ptr = NULL; in drm_connector_init()
272 connector->epoch_counter = 0; in drm_connector_init()
273 connector->tile_blob_ptr = NULL; in drm_connector_init()
274 connector->status = connector_status_unknown; in drm_connector_init()
275 connector->display_info.panel_orientation = in drm_connector_init()
278 drm_connector_get_cmdline_mode(connector); in drm_connector_init()
280 /* We should add connectors at the end to avoid upsetting the connector in drm_connector_init()
283 list_add_tail(&connector->head, &config->connector_list); in drm_connector_init()
289 drm_connector_attach_edid_property(connector); in drm_connector_init()
291 drm_object_attach_property(&connector->base, in drm_connector_init()
294 drm_object_attach_property(&connector->base, in drm_connector_init()
298 drm_object_attach_property(&connector->base, in drm_connector_init()
301 drm_object_attach_property(&connector->base, in drm_connector_init()
306 drm_object_attach_property(&connector->base, config->prop_crtc_id, 0); in drm_connector_init()
309 connector->debugfs_entry = NULL; in drm_connector_init()
312 ida_simple_remove(connector_ida, connector->connector_type_id); in drm_connector_init()
315 ida_simple_remove(&config->connector_ida, connector->index); in drm_connector_init()
318 drm_mode_object_unregister(dev, &connector->base); in drm_connector_init()
325 * drm_connector_init_with_ddc - Init a preallocated connector
327 * @connector: the connector to init
328 * @funcs: callbacks for this connector
329 * @connector_type: user visible type of the connector
332 * Initialises a preallocated connector. Connectors should be
333 * subclassed as part of driver connector objects.
335 * Ensures that the ddc field of the connector is correctly set.
341 struct drm_connector *connector, in drm_connector_init_with_ddc() argument
348 ret = drm_connector_init(dev, connector, funcs, connector_type); in drm_connector_init_with_ddc()
353 connector->ddc = ddc; in drm_connector_init_with_ddc()
361 * @connector: the connector
363 * Some connector types like DRM_MODE_CONNECTOR_VIRTUAL do not get a
367 void drm_connector_attach_edid_property(struct drm_connector *connector) in drm_connector_attach_edid_property() argument
369 struct drm_mode_config *config = &connector->dev->mode_config; in drm_connector_attach_edid_property()
371 drm_object_attach_property(&connector->base, in drm_connector_attach_edid_property()
378 * drm_connector_attach_encoder - attach a connector to an encoder
379 * @connector: connector to attach
380 * @encoder: encoder to attach @connector to
382 * This function links up a connector to an encoder. Note that the routing
389 int drm_connector_attach_encoder(struct drm_connector *connector, in drm_connector_attach_encoder() argument
394 * of connector to encoder in simple connector/encoder devices using a in drm_connector_attach_encoder()
395 * direct assignment of connector->encoder = encoder. This connection in drm_connector_attach_encoder()
403 if (WARN_ON(connector->encoder)) in drm_connector_attach_encoder()
406 connector->possible_encoders |= drm_encoder_mask(encoder); in drm_connector_attach_encoder()
413 * drm_connector_has_possible_encoder - check if the connector and encoder are
415 * @connector: the connector
419 * True if @encoder is one of the possible encoders for @connector.
421 bool drm_connector_has_possible_encoder(struct drm_connector *connector, in drm_connector_has_possible_encoder() argument
424 return connector->possible_encoders & drm_encoder_mask(encoder); in drm_connector_has_possible_encoder()
428 static void drm_mode_remove(struct drm_connector *connector, in drm_mode_remove() argument
432 drm_mode_destroy(connector->dev, mode); in drm_mode_remove()
436 * drm_connector_cleanup - cleans up an initialised connector
437 * @connector: connector to cleanup
439 * Cleans up the connector but doesn't free the object.
441 void drm_connector_cleanup(struct drm_connector *connector) in drm_connector_cleanup() argument
443 struct drm_device *dev = connector->dev; in drm_connector_cleanup()
446 /* The connector should have been removed from userspace long before in drm_connector_cleanup()
449 if (WARN_ON(connector->registration_state == in drm_connector_cleanup()
451 drm_connector_unregister(connector); in drm_connector_cleanup()
453 if (connector->tile_group) { in drm_connector_cleanup()
454 drm_mode_put_tile_group(dev, connector->tile_group); in drm_connector_cleanup()
455 connector->tile_group = NULL; in drm_connector_cleanup()
458 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) in drm_connector_cleanup()
459 drm_mode_remove(connector, mode); in drm_connector_cleanup()
461 list_for_each_entry_safe(mode, t, &connector->modes, head) in drm_connector_cleanup()
462 drm_mode_remove(connector, mode); in drm_connector_cleanup()
464 ida_simple_remove(&drm_connector_enum_list[connector->connector_type].ida, in drm_connector_cleanup()
465 connector->connector_type_id); in drm_connector_cleanup()
468 connector->index); in drm_connector_cleanup()
470 kfree(connector->display_info.bus_formats); in drm_connector_cleanup()
471 drm_mode_object_unregister(dev, &connector->base); in drm_connector_cleanup()
472 kfree(connector->name); in drm_connector_cleanup()
473 connector->name = NULL; in drm_connector_cleanup()
475 list_del(&connector->head); in drm_connector_cleanup()
479 WARN_ON(connector->state && !connector->funcs->atomic_destroy_state); in drm_connector_cleanup()
480 if (connector->state && connector->funcs->atomic_destroy_state) in drm_connector_cleanup()
481 connector->funcs->atomic_destroy_state(connector, in drm_connector_cleanup()
482 connector->state); in drm_connector_cleanup()
484 mutex_destroy(&connector->mutex); in drm_connector_cleanup()
486 memset(connector, 0, sizeof(*connector)); in drm_connector_cleanup()
491 * drm_connector_register - register a connector
492 * @connector: the connector to register
494 * Register userspace interfaces for a connector. Only call this for connectors
502 int drm_connector_register(struct drm_connector *connector) in drm_connector_register() argument
506 if (!connector->dev->registered) in drm_connector_register()
509 mutex_lock(&connector->mutex); in drm_connector_register()
510 if (connector->registration_state != DRM_CONNECTOR_INITIALIZING) in drm_connector_register()
513 ret = drm_sysfs_connector_add(connector); in drm_connector_register()
517 drm_debugfs_connector_add(connector); in drm_connector_register()
519 if (connector->funcs->late_register) { in drm_connector_register()
520 ret = connector->funcs->late_register(connector); in drm_connector_register()
525 drm_mode_object_register(connector->dev, &connector->base); in drm_connector_register()
527 connector->registration_state = DRM_CONNECTOR_REGISTERED; in drm_connector_register()
529 /* Let userspace know we have a new connector */ in drm_connector_register()
530 drm_sysfs_hotplug_event(connector->dev); in drm_connector_register()
535 drm_debugfs_connector_remove(connector); in drm_connector_register()
536 drm_sysfs_connector_remove(connector); in drm_connector_register()
538 mutex_unlock(&connector->mutex); in drm_connector_register()
544 * drm_connector_unregister - unregister a connector
545 * @connector: the connector to unregister
547 * Unregister userspace interfaces for a connector. Only call this for
552 void drm_connector_unregister(struct drm_connector *connector) in drm_connector_unregister() argument
554 mutex_lock(&connector->mutex); in drm_connector_unregister()
555 if (connector->registration_state != DRM_CONNECTOR_REGISTERED) { in drm_connector_unregister()
556 mutex_unlock(&connector->mutex); in drm_connector_unregister()
560 if (connector->funcs->early_unregister) in drm_connector_unregister()
561 connector->funcs->early_unregister(connector); in drm_connector_unregister()
563 drm_sysfs_connector_remove(connector); in drm_connector_unregister()
564 drm_debugfs_connector_remove(connector); in drm_connector_unregister()
566 connector->registration_state = DRM_CONNECTOR_UNREGISTERED; in drm_connector_unregister()
567 mutex_unlock(&connector->mutex); in drm_connector_unregister()
573 struct drm_connector *connector; in drm_connector_unregister_all() local
577 drm_for_each_connector_iter(connector, &conn_iter) in drm_connector_unregister_all()
578 drm_connector_unregister(connector); in drm_connector_unregister_all()
584 struct drm_connector *connector; in drm_connector_register_all() local
589 drm_for_each_connector_iter(connector, &conn_iter) { in drm_connector_register_all()
590 ret = drm_connector_register(connector); in drm_connector_register_all()
602 * drm_get_connector_status_name - return a string for connector status
603 * @status: connector status to compute name of
620 * drm_get_connector_force_name - return a string for connector force
621 * @force: connector force to get name of
667 * Extra-safe connector put function that works in any context. Should only be
669 * actually release the connector when dropping our final reference.
686 * drm_connector_list_iter_next - return next connector
689 * Returns the next connector for @iter, or NULL when the list walk has
712 /* loop until it's not a zombie connector */ in drm_connector_list_iter_next()
816 /* Optional connector properties. */
952 * DOC: standard connector properties
964 * Legacy property for setting the power state of the connector. For atomic
967 * connector is linked to. Drivers should never set this property directly,
984 * connector is connected to a CRTC. In atomic the DRM core enforces that
991 * Summarizing: Only set "DPMS" when the connector is known to be enabled,
995 * Connector path property to identify how this sink is physically
1001 * Connector tile group property to indicate how a set of DRM connector
1011 * Connector link-status property to indicate the status of link. The
1022 * "GOOD" to re-enable the connector.
1028 * When user-space performs an atomic commit on a connector with a "BAD"
1077 * - Kernel sends uevent with the connector id and property id through
1145 * Connector property to enable userspace to send HDR Metadata to
1190 * property to the connector during initialization.
1195 * Mode object ID of the &drm_crtc this connector should be connected to.
1236 * connector subtypes. Enum values more or less match with those from main
1237 * connector types.
1299 * drm_mode_create_dvi_i_properties - create DVI-I specific connector properties
1302 * Called by a driver the first time a DVI-I connector is made.
1331 * @connector: drm_connector to attach property
1333 * Called by a driver when DP connector is created.
1335 void drm_connector_attach_dp_subconnector_property(struct drm_connector *connector) in drm_connector_attach_dp_subconnector_property() argument
1337 struct drm_mode_config *mode_config = &connector->dev->mode_config; in drm_connector_attach_dp_subconnector_property()
1341 drm_property_create_enum(connector->dev, in drm_connector_attach_dp_subconnector_property()
1347 drm_object_attach_property(&connector->base, in drm_connector_attach_dp_subconnector_property()
1354 * DOC: HDMI connector properties
1381 * @connector: connector to attach content type property on.
1383 * Called by a driver the first time a HDMI connector is made.
1385 int drm_connector_attach_content_type_property(struct drm_connector *connector) in drm_connector_attach_content_type_property() argument
1387 if (!drm_mode_create_content_type_property(connector->dev)) in drm_connector_attach_content_type_property()
1388 drm_object_attach_property(&connector->base, in drm_connector_attach_content_type_property()
1389 connector->dev->mode_config.content_type_property, in drm_connector_attach_content_type_property()
1401 * @conn_state: DRM display connector state
1430 * drm_mode_attach_tv_margin_properties - attach TV connector margin properties
1431 * @connector: DRM connector
1433 * Called by a driver when it needs to attach TV margin props to a connector.
1436 void drm_connector_attach_tv_margin_properties(struct drm_connector *connector) in drm_connector_attach_tv_margin_properties() argument
1438 struct drm_device *dev = connector->dev; in drm_connector_attach_tv_margin_properties()
1440 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1443 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1446 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1449 drm_object_attach_property(&connector->base, in drm_connector_attach_tv_margin_properties()
1456 * drm_mode_create_tv_margin_properties - create TV connector margin properties
1459 * Called by a driver's HDMI connector initialization routine, this function
1461 * function for an SDTV connector, it's already called from
1494 * drm_mode_create_tv_properties - create TV specific connector properties
1500 * the TV specific connector properties for a given device. Caller is
1516 * Basic connector properties in drm_mode_create_tv_properties()
1673 * from the minimum supported variable refresh rate for the connector.
1682 * @connector: connector to create the vrr_capable property on.
1685 * variable refresh rate capability for a connector.
1691 struct drm_connector *connector) in drm_connector_attach_vrr_capable_property() argument
1693 struct drm_device *dev = connector->dev; in drm_connector_attach_vrr_capable_property()
1696 if (!connector->vrr_capable_property) { in drm_connector_attach_vrr_capable_property()
1702 connector->vrr_capable_property = prop; in drm_connector_attach_vrr_capable_property()
1703 drm_object_attach_property(&connector->base, prop, 0); in drm_connector_attach_vrr_capable_property()
1712 * @connector: connector to attach scaling mode property on.
1724 int drm_connector_attach_scaling_mode_property(struct drm_connector *connector, in drm_connector_attach_scaling_mode_property() argument
1727 struct drm_device *dev = connector->dev; in drm_connector_attach_scaling_mode_property()
1761 drm_object_attach_property(&connector->base, in drm_connector_attach_scaling_mode_property()
1764 connector->scaling_mode_property = scaling_mode_property; in drm_connector_attach_scaling_mode_property()
1798 * DOC: standard connector properties
1821 * drm_mode_create_hdmi_colorspace_property() is used for HDMI connector and
1822 * drm_mode_create_dp_colorspace_property() is used for DP connector.
1827 * @connector: connector to create the Colorspace property on.
1835 int drm_mode_create_hdmi_colorspace_property(struct drm_connector *connector) in drm_mode_create_hdmi_colorspace_property() argument
1837 struct drm_device *dev = connector->dev; in drm_mode_create_hdmi_colorspace_property()
1839 if (connector->colorspace_property) in drm_mode_create_hdmi_colorspace_property()
1842 connector->colorspace_property = in drm_mode_create_hdmi_colorspace_property()
1847 if (!connector->colorspace_property) in drm_mode_create_hdmi_colorspace_property()
1856 * @connector: connector to create the Colorspace property on.
1864 int drm_mode_create_dp_colorspace_property(struct drm_connector *connector) in drm_mode_create_dp_colorspace_property() argument
1866 struct drm_device *dev = connector->dev; in drm_mode_create_dp_colorspace_property()
1868 if (connector->colorspace_property) in drm_mode_create_dp_colorspace_property()
1871 connector->colorspace_property = in drm_mode_create_dp_colorspace_property()
1876 if (!connector->colorspace_property) in drm_mode_create_dp_colorspace_property()
1935 * drm_connector_set_path_property - set tile property on connector
1936 * @connector: connector to set property on.
1940 * connector path. This is mainly used for DisplayPort MST where
1947 int drm_connector_set_path_property(struct drm_connector *connector, in drm_connector_set_path_property() argument
1950 struct drm_device *dev = connector->dev; in drm_connector_set_path_property()
1954 &connector->path_blob_ptr, in drm_connector_set_path_property()
1957 &connector->base, in drm_connector_set_path_property()
1964 * drm_connector_set_tile_property - set tile property on connector
1965 * @connector: connector to set property on.
1967 * This looks up the tile information for a connector, and creates a
1976 int drm_connector_set_tile_property(struct drm_connector *connector) in drm_connector_set_tile_property() argument
1978 struct drm_device *dev = connector->dev; in drm_connector_set_tile_property()
1982 if (!connector->has_tile) { in drm_connector_set_tile_property()
1984 &connector->tile_blob_ptr, in drm_connector_set_tile_property()
1987 &connector->base, in drm_connector_set_tile_property()
1993 connector->tile_group->id, connector->tile_is_single_monitor, in drm_connector_set_tile_property()
1994 connector->num_h_tile, connector->num_v_tile, in drm_connector_set_tile_property()
1995 connector->tile_h_loc, connector->tile_v_loc, in drm_connector_set_tile_property()
1996 connector->tile_h_size, connector->tile_v_size); in drm_connector_set_tile_property()
1999 &connector->tile_blob_ptr, in drm_connector_set_tile_property()
2002 &connector->base, in drm_connector_set_tile_property()
2009 * drm_connector_update_edid_property - update the edid property of a connector
2010 * @connector: drm connector
2014 * connector's edid property.
2016 * set the connector's tile property here. See drm_connector_set_tile_property()
2022 int drm_connector_update_edid_property(struct drm_connector *connector, in drm_connector_update_edid_property() argument
2025 struct drm_device *dev = connector->dev; in drm_connector_update_edid_property()
2031 if (connector->override_edid) in drm_connector_update_edid_property()
2046 drm_add_display_info(connector, edid); in drm_connector_update_edid_property()
2048 drm_reset_display_info(connector); in drm_connector_update_edid_property()
2050 drm_update_tile_info(connector, edid); in drm_connector_update_edid_property()
2052 if (connector->edid_blob_ptr) { in drm_connector_update_edid_property()
2053 old_edid = (const struct edid *)connector->edid_blob_ptr->data; in drm_connector_update_edid_property()
2056 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Edid was changed.\n", in drm_connector_update_edid_property()
2057 connector->base.id, connector->name); in drm_connector_update_edid_property()
2059 connector->epoch_counter += 1; in drm_connector_update_edid_property()
2061 connector->epoch_counter); in drm_connector_update_edid_property()
2066 drm_object_property_set_value(&connector->base, in drm_connector_update_edid_property()
2068 connector->display_info.non_desktop); in drm_connector_update_edid_property()
2071 &connector->edid_blob_ptr, in drm_connector_update_edid_property()
2074 &connector->base, in drm_connector_update_edid_property()
2078 return drm_connector_set_tile_property(connector); in drm_connector_update_edid_property()
2083 * drm_connector_set_link_status_property - Set link status property of a connector
2084 * @connector: drm connector
2101 void drm_connector_set_link_status_property(struct drm_connector *connector, in drm_connector_set_link_status_property() argument
2104 struct drm_device *dev = connector->dev; in drm_connector_set_link_status_property()
2107 connector->state->link_status = link_status; in drm_connector_set_link_status_property()
2114 * @connector: connector to attach max bpc property on.
2115 * @min: The minimum bit depth supported by the connector.
2116 * @max: The maximum bit depth supported by the connector.
2118 * This is used to add support for limiting the bit depth on a connector.
2123 int drm_connector_attach_max_bpc_property(struct drm_connector *connector, in drm_connector_attach_max_bpc_property() argument
2126 struct drm_device *dev = connector->dev; in drm_connector_attach_max_bpc_property()
2129 prop = connector->max_bpc_property; in drm_connector_attach_max_bpc_property()
2135 connector->max_bpc_property = prop; in drm_connector_attach_max_bpc_property()
2138 drm_object_attach_property(&connector->base, prop, max); in drm_connector_attach_max_bpc_property()
2139 connector->state->max_requested_bpc = max; in drm_connector_attach_max_bpc_property()
2140 connector->state->max_bpc = max; in drm_connector_attach_max_bpc_property()
2148 * capable property for a connector
2149 * @connector: drm connector
2150 * @capable: True if the connector is variable refresh rate capable
2153 * variable refresh rate over a connector.
2156 struct drm_connector *connector, bool capable) in drm_connector_set_vrr_capable_property() argument
2158 drm_object_property_set_value(&connector->base, in drm_connector_set_vrr_capable_property()
2159 connector->vrr_capable_property, in drm_connector_set_vrr_capable_property()
2165 * drm_connector_set_panel_orientation - sets the connector's panel_orientation
2166 * @connector: connector for which to set the panel-orientation property.
2169 * This function sets the connector's panel_orientation and attaches
2170 * a "panel orientation" property to the connector.
2172 * Calling this function on a connector where the panel_orientation has
2183 struct drm_connector *connector, in drm_connector_set_panel_orientation() argument
2186 struct drm_device *dev = connector->dev; in drm_connector_set_panel_orientation()
2187 struct drm_display_info *info = &connector->display_info; in drm_connector_set_panel_orientation()
2212 drm_object_attach_property(&connector->base, prop, in drm_connector_set_panel_orientation()
2220 * set the connector's panel_orientation after checking for quirks
2221 * @connector: connector for which to init the panel-orientation property.
2233 struct drm_connector *connector, in drm_connector_set_panel_orientation_with_quirk() argument
2243 return drm_connector_set_panel_orientation(connector, in drm_connector_set_panel_orientation_with_quirk()
2253 struct drm_connector *connector = obj_to_connector(obj); in drm_connector_set_obj_prop() local
2256 if (property == connector->dev->mode_config.dpms_property) { in drm_connector_set_obj_prop()
2257 ret = (*connector->funcs->dpms)(connector, (int)value); in drm_connector_set_obj_prop()
2258 } else if (connector->funcs->set_property) in drm_connector_set_obj_prop()
2259 ret = connector->funcs->set_property(connector, property, value); in drm_connector_set_obj_prop()
2262 drm_object_property_set_value(&connector->base, property, value); in drm_connector_set_obj_prop()
2281 static struct drm_encoder *drm_connector_get_encoder(struct drm_connector *connector) in drm_connector_get_encoder() argument
2285 if (connector->state) in drm_connector_get_encoder()
2286 return connector->state->best_encoder; in drm_connector_get_encoder()
2287 return connector->encoder; in drm_connector_get_encoder()
2328 struct drm_connector *connector; in drm_mode_getconnector() local
2344 connector = drm_connector_lookup(dev, file_priv, out_resp->connector_id); in drm_mode_getconnector()
2345 if (!connector) in drm_mode_getconnector()
2348 encoders_count = hweight32(connector->possible_encoders); in drm_mode_getconnector()
2354 drm_connector_for_each_possible_encoder(connector, encoder) { in drm_mode_getconnector()
2364 out_resp->connector_id = connector->base.id; in drm_mode_getconnector()
2365 out_resp->connector_type = connector->connector_type; in drm_mode_getconnector()
2366 out_resp->connector_type_id = connector->connector_type_id; in drm_mode_getconnector()
2370 connector->funcs->fill_modes(connector, in drm_mode_getconnector()
2375 out_resp->mm_width = connector->display_info.width_mm; in drm_mode_getconnector()
2376 out_resp->mm_height = connector->display_info.height_mm; in drm_mode_getconnector()
2377 out_resp->subpixel = connector->display_info.subpixel_order; in drm_mode_getconnector()
2378 out_resp->connection = connector->status; in drm_mode_getconnector()
2381 list_for_each_entry(mode, &connector->modes, head) { in drm_mode_getconnector()
2384 if (drm_mode_expose_to_userspace(mode, &connector->modes, in drm_mode_getconnector()
2398 list_for_each_entry(mode, &connector->modes, head) { in drm_mode_getconnector()
2420 list_for_each_entry_continue(mode, &connector->modes, head) in drm_mode_getconnector()
2431 list_for_each_entry(mode, &connector->modes, head) in drm_mode_getconnector()
2439 encoder = drm_connector_get_encoder(connector); in drm_mode_getconnector()
2447 ret = drm_mode_object_get_properties(&connector->base, file_priv->atomic, in drm_mode_getconnector()
2454 drm_connector_put(connector); in drm_mode_getconnector()