Lines Matching full:connector

144  * Connector and encoder types.
185 char *drm_get_connector_name(struct drm_connector *connector) in drm_get_connector_name() argument
190 drm_connector_enum_list[connector->connector_type].name, in drm_get_connector_name()
191 connector->connector_type_id); in drm_get_connector_name()
471 * drm_mode_probed_add - add a mode to a connector's probed mode list
472 * @connector: connector the new mode
478 * Add @mode to @connector's mode list for later use.
480 void drm_mode_probed_add(struct drm_connector *connector, in drm_mode_probed_add() argument
483 list_add(&mode->head, &connector->probed_modes); in drm_mode_probed_add()
489 * @connector: connector list to modify
495 * Remove @mode from @connector's mode list, then free it.
497 void drm_mode_remove(struct drm_connector *connector, in drm_mode_remove() argument
501 drm_mode_destroy(connector->dev, mode); in drm_mode_remove()
506 * drm_connector_init - Init a preallocated connector
508 * @connector: the connector to init
509 * @funcs: callbacks for this connector
510 * @name: user visible name of the connector
515 * Initialises a preallocated connector. Connectors should be
516 * subclassed as part of driver connector objects.
522 struct drm_connector *connector, in drm_connector_init() argument
530 ret = drm_mode_object_get(dev, &connector->base, DRM_MODE_OBJECT_CONNECTOR); in drm_connector_init()
534 connector->base.properties = &connector->properties; in drm_connector_init()
535 connector->dev = dev; in drm_connector_init()
536 connector->funcs = funcs; in drm_connector_init()
537 connector->connector_type = connector_type; in drm_connector_init()
538 connector->connector_type_id = in drm_connector_init()
540 INIT_LIST_HEAD(&connector->user_modes); in drm_connector_init()
541 INIT_LIST_HEAD(&connector->probed_modes); in drm_connector_init()
542 INIT_LIST_HEAD(&connector->modes); in drm_connector_init()
543 connector->edid_blob_ptr = NULL; in drm_connector_init()
544 connector->status = connector_status_unknown; in drm_connector_init()
546 list_add_tail(&connector->head, &dev->mode_config.connector_list); in drm_connector_init()
550 drm_object_attach_property(&connector->base, in drm_connector_init()
554 drm_object_attach_property(&connector->base, in drm_connector_init()
565 * drm_connector_cleanup - cleans up an initialised connector
566 * @connector: connector to cleanup
571 * Cleans up the connector but doesn't free the object.
573 void drm_connector_cleanup(struct drm_connector *connector) in drm_connector_cleanup() argument
575 struct drm_device *dev = connector->dev; in drm_connector_cleanup()
578 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) in drm_connector_cleanup()
579 drm_mode_remove(connector, mode); in drm_connector_cleanup()
581 list_for_each_entry_safe(mode, t, &connector->modes, head) in drm_connector_cleanup()
582 drm_mode_remove(connector, mode); in drm_connector_cleanup()
584 list_for_each_entry_safe(mode, t, &connector->user_modes, head) in drm_connector_cleanup()
585 drm_mode_remove(connector, mode); in drm_connector_cleanup()
588 drm_mode_object_put(dev, &connector->base); in drm_connector_cleanup()
589 list_del(&connector->head); in drm_connector_cleanup()
598 struct drm_connector *connector; in drm_connector_unplug_all() local
601 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_connector_unplug_all()
602 drm_sysfs_connector_remove(connector); in drm_connector_unplug_all()
774 * drm_mode_create_dvi_i_properties - create DVI-I specific connector properties
777 * Called by a driver the first time a DVI-I connector is made.
805 * drm_create_tv_properties - create TV specific connector properties
811 * the TV specific connector properties for a given device. Caller is
826 * Basic connector properties in drm_mode_create_tv_properties()
1020 struct drm_connector *connector; in drm_mode_group_init_legacy_group() local
1033 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_mode_group_init_legacy_group()
1035 group->num_connectors++] = connector->base.id; in drm_mode_group_init_legacy_group()
1055 struct drm_connector *connector, *ot; in drm_mode_config_cleanup() local
1068 list_for_each_entry_safe(connector, ot, in drm_mode_config_cleanup()
1070 connector->funcs->destroy(connector); in drm_mode_config_cleanup()
1190 * them to the user, including CRTC, connector and framebuffer configuration.
1203 struct drm_connector *connector; in drm_mode_getresources() local
1331 list_for_each_entry(connector, in drm_mode_getresources()
1334 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", in drm_mode_getresources()
1335 connector->base.id, in drm_mode_getresources()
1336 drm_get_connector_name(connector)); in drm_mode_getresources()
1337 if (put_user(connector->base.id, in drm_mode_getresources()
1428 * drm_mode_getconnector - get connector configuration
1437 * Construct a connector configuration structure to return to the user.
1449 struct drm_connector *connector; in drm_mode_getconnector() local
1468 DRM_DEBUG_KMS("[CONNECTOR:%d:?]\n", out_resp->connector_id); in drm_mode_getconnector()
1478 connector = obj_to_connector(obj); in drm_mode_getconnector()
1480 props_count = connector->properties.count; in drm_mode_getconnector()
1483 if (connector->encoder_ids[i] != 0) { in drm_mode_getconnector()
1489 connector->funcs->fill_modes(connector, in drm_mode_getconnector()
1495 list_for_each_entry(mode, &connector->modes, head) in drm_mode_getconnector()
1498 out_resp->connector_id = connector->base.id; in drm_mode_getconnector()
1499 out_resp->connector_type = connector->connector_type; in drm_mode_getconnector()
1500 out_resp->connector_type_id = connector->connector_type_id; in drm_mode_getconnector()
1501 out_resp->mm_width = connector->display_info.width_mm; in drm_mode_getconnector()
1502 out_resp->mm_height = connector->display_info.height_mm; in drm_mode_getconnector()
1503 out_resp->subpixel = connector->display_info.subpixel_order; in drm_mode_getconnector()
1504 out_resp->connection = connector->status; in drm_mode_getconnector()
1505 if (connector->encoder) in drm_mode_getconnector()
1506 out_resp->encoder_id = connector->encoder->base.id; in drm_mode_getconnector()
1517 list_for_each_entry(mode, &connector->modes, head) { in drm_mode_getconnector()
1533 for (i = 0; i < connector->properties.count; i++) { in drm_mode_getconnector()
1534 if (put_user(connector->properties.ids[i], in drm_mode_getconnector()
1540 if (put_user(connector->properties.values[i], in drm_mode_getconnector()
1554 if (connector->encoder_ids[i] != 0) { in drm_mode_getconnector()
1555 if (put_user(connector->encoder_ids[i], in drm_mode_getconnector()
1877 struct drm_connector **connector_set = NULL, *connector; in drm_mode_setcrtc() local
1999 DRM_DEBUG_KMS("Connector id %d unknown\n", in drm_mode_setcrtc()
2004 connector = obj_to_connector(obj); in drm_mode_setcrtc()
2005 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", in drm_mode_setcrtc()
2006 connector->base.id, in drm_mode_setcrtc()
2007 drm_get_connector_name(connector)); in drm_mode_setcrtc()
2009 connector_set[i] = connector; in drm_mode_setcrtc()
2562 * @connector: connector to add the mode to
2565 * Add @mode to @connector's user mode list.
2568 struct drm_connector *connector, in drm_mode_attachmode() argument
2571 list_add_tail(&mode->head, &connector->user_modes); in drm_mode_attachmode()
2577 struct drm_connector *connector; in drm_mode_attachmode_crtc() local
2582 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_mode_attachmode_crtc()
2583 if (!connector->encoder) in drm_mode_attachmode_crtc()
2585 if (connector->encoder->crtc == crtc) { in drm_mode_attachmode_crtc()
2595 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_mode_attachmode_crtc()
2596 if (!connector->encoder) in drm_mode_attachmode_crtc()
2598 if (connector->encoder->crtc == crtc) in drm_mode_attachmode_crtc()
2599 list_move_tail(list.next, &connector->user_modes); in drm_mode_attachmode_crtc()
2613 struct drm_connector *connector, in drm_mode_detachmode() argument
2620 list_for_each_entry_safe(match_mode, t, &connector->user_modes, head) { in drm_mode_detachmode()
2637 struct drm_connector *connector; in drm_mode_detachmode_crtc() local
2639 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_mode_detachmode_crtc()
2640 drm_mode_detachmode(dev, connector, mode); in drm_mode_detachmode_crtc()
2647 * drm_fb_attachmode - Attach a user mode to an connector
2653 * This attaches a user specified mode to an connector.
2663 struct drm_connector *connector; in drm_mode_attachmode_ioctl() local
2679 connector = obj_to_connector(obj); in drm_mode_attachmode_ioctl()
2694 drm_mode_attachmode(dev, connector, mode); in drm_mode_attachmode_ioctl()
2702 * drm_fb_detachmode - Detach a user specified mode from an connector
2718 struct drm_connector *connector; in drm_mode_detachmode_ioctl() local
2733 connector = obj_to_connector(obj); in drm_mode_detachmode_ioctl()
2741 ret = drm_mode_detachmode(dev, connector, &mode); in drm_mode_detachmode_ioctl()
3133 int drm_mode_connector_update_edid_property(struct drm_connector *connector, in drm_mode_connector_update_edid_property() argument
3136 struct drm_device *dev = connector->dev; in drm_mode_connector_update_edid_property()
3139 if (connector->edid_blob_ptr) in drm_mode_connector_update_edid_property()
3140 drm_property_destroy_blob(dev, connector->edid_blob_ptr); in drm_mode_connector_update_edid_property()
3144 connector->edid_blob_ptr = NULL; in drm_mode_connector_update_edid_property()
3145 ret = drm_object_property_set_value(&connector->base, dev->mode_config.edid_property, 0); in drm_mode_connector_update_edid_property()
3150 connector->edid_blob_ptr = drm_property_create_blob(connector->dev, in drm_mode_connector_update_edid_property()
3152 if (!connector->edid_blob_ptr) in drm_mode_connector_update_edid_property()
3155 ret = drm_object_property_set_value(&connector->base, in drm_mode_connector_update_edid_property()
3157 connector->edid_blob_ptr->base.id); in drm_mode_connector_update_edid_property()
3210 struct drm_connector *connector = obj_to_connector(obj); in drm_mode_connector_set_obj_prop() local
3213 if (property == connector->dev->mode_config.dpms_property) { in drm_mode_connector_set_obj_prop()
3214 if (connector->funcs->dpms) in drm_mode_connector_set_obj_prop()
3215 (*connector->funcs->dpms)(connector, (int)value); in drm_mode_connector_set_obj_prop()
3217 } else if (connector->funcs->set_property) in drm_mode_connector_set_obj_prop()
3218 ret = connector->funcs->set_property(connector, property, value); in drm_mode_connector_set_obj_prop()
3222 drm_object_property_set_value(&connector->base, property, value); in drm_mode_connector_set_obj_prop()
3367 int drm_mode_connector_attach_encoder(struct drm_connector *connector, in drm_mode_connector_attach_encoder() argument
3373 if (connector->encoder_ids[i] == 0) { in drm_mode_connector_attach_encoder()
3374 connector->encoder_ids[i] = encoder->base.id; in drm_mode_connector_attach_encoder()
3382 void drm_mode_connector_detach_encoder(struct drm_connector *connector, in drm_mode_connector_detach_encoder() argument
3387 if (connector->encoder_ids[i] == encoder->base.id) { in drm_mode_connector_detach_encoder()
3388 connector->encoder_ids[i] = 0; in drm_mode_connector_detach_encoder()
3389 if (connector->encoder == encoder) in drm_mode_connector_detach_encoder()
3390 connector->encoder = NULL; in drm_mode_connector_detach_encoder()
3626 struct drm_connector *connector; in drm_mode_config_reset() local
3636 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_mode_config_reset()
3637 connector->status = connector_status_unknown; in drm_mode_config_reset()
3639 if (connector->funcs->reset) in drm_mode_config_reset()
3640 connector->funcs->reset(connector); in drm_mode_config_reset()