Lines Matching refs:connector
754 static void drm_mode_remove(struct drm_connector *connector, in drm_mode_remove() argument
758 drm_mode_destroy(connector->dev, mode); in drm_mode_remove()
805 static void drm_connector_get_cmdline_mode(struct drm_connector *connector) in drm_connector_get_cmdline_mode() argument
807 struct drm_cmdline_mode *mode = &connector->cmdline_mode; in drm_connector_get_cmdline_mode()
810 if (fb_get_options(connector->name, &option)) in drm_connector_get_cmdline_mode()
814 connector, in drm_connector_get_cmdline_mode()
834 DRM_INFO("forcing %s connector %s\n", connector->name, s); in drm_connector_get_cmdline_mode()
835 connector->force = mode->force; in drm_connector_get_cmdline_mode()
839 connector->name, in drm_connector_get_cmdline_mode()
861 struct drm_connector *connector, in drm_connector_init() argument
872 ret = drm_mode_object_get_reg(dev, &connector->base, DRM_MODE_OBJECT_CONNECTOR, false); in drm_connector_init()
876 connector->base.properties = &connector->properties; in drm_connector_init()
877 connector->dev = dev; in drm_connector_init()
878 connector->funcs = funcs; in drm_connector_init()
879 connector->connector_type = connector_type; in drm_connector_init()
880 connector->connector_type_id = in drm_connector_init()
882 if (connector->connector_type_id < 0) { in drm_connector_init()
883 ret = connector->connector_type_id; in drm_connector_init()
886 connector->name = in drm_connector_init()
889 connector->connector_type_id); in drm_connector_init()
890 if (!connector->name) { in drm_connector_init()
895 INIT_LIST_HEAD(&connector->probed_modes); in drm_connector_init()
896 INIT_LIST_HEAD(&connector->modes); in drm_connector_init()
897 connector->edid_blob_ptr = NULL; in drm_connector_init()
898 connector->status = connector_status_unknown; in drm_connector_init()
900 drm_connector_get_cmdline_mode(connector); in drm_connector_init()
904 list_add_tail(&connector->head, &config->connector_list); in drm_connector_init()
908 drm_object_attach_property(&connector->base, in drm_connector_init()
912 drm_object_attach_property(&connector->base, in drm_connector_init()
916 drm_object_attach_property(&connector->base, config->prop_crtc_id, 0); in drm_connector_init()
919 connector->debugfs_entry = NULL; in drm_connector_init()
923 drm_mode_object_put(dev, &connector->base); in drm_connector_init()
938 void drm_connector_cleanup(struct drm_connector *connector) in drm_connector_cleanup() argument
940 struct drm_device *dev = connector->dev; in drm_connector_cleanup()
943 if (connector->tile_group) { in drm_connector_cleanup()
944 drm_mode_put_tile_group(dev, connector->tile_group); in drm_connector_cleanup()
945 connector->tile_group = NULL; in drm_connector_cleanup()
948 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) in drm_connector_cleanup()
949 drm_mode_remove(connector, mode); in drm_connector_cleanup()
951 list_for_each_entry_safe(mode, t, &connector->modes, head) in drm_connector_cleanup()
952 drm_mode_remove(connector, mode); in drm_connector_cleanup()
954 ida_remove(&drm_connector_enum_list[connector->connector_type].ida, in drm_connector_cleanup()
955 connector->connector_type_id); in drm_connector_cleanup()
957 kfree(connector->display_info.bus_formats); in drm_connector_cleanup()
958 drm_mode_object_put(dev, &connector->base); in drm_connector_cleanup()
959 kfree(connector->name); in drm_connector_cleanup()
960 connector->name = NULL; in drm_connector_cleanup()
961 list_del(&connector->head); in drm_connector_cleanup()
964 WARN_ON(connector->state && !connector->funcs->atomic_destroy_state); in drm_connector_cleanup()
965 if (connector->state && connector->funcs->atomic_destroy_state) in drm_connector_cleanup()
966 connector->funcs->atomic_destroy_state(connector, in drm_connector_cleanup()
967 connector->state); in drm_connector_cleanup()
969 memset(connector, 0, sizeof(*connector)); in drm_connector_cleanup()
980 unsigned int drm_connector_index(struct drm_connector *connector) in drm_connector_index() argument
984 struct drm_mode_config *config = &connector->dev->mode_config; in drm_connector_index()
988 list_for_each_entry(tmp, &connector->dev->mode_config.connector_list, head) { in drm_connector_index()
989 if (tmp == connector) in drm_connector_index()
1008 int drm_connector_register(struct drm_connector *connector) in drm_connector_register() argument
1012 drm_mode_object_register(connector->dev, &connector->base); in drm_connector_register()
1014 ret = drm_sysfs_connector_add(connector); in drm_connector_register()
1018 ret = drm_debugfs_connector_add(connector); in drm_connector_register()
1020 drm_sysfs_connector_remove(connector); in drm_connector_register()
1034 void drm_connector_unregister(struct drm_connector *connector) in drm_connector_unregister() argument
1036 drm_sysfs_connector_remove(connector); in drm_connector_unregister()
1037 drm_debugfs_connector_remove(connector); in drm_connector_unregister()
1052 struct drm_connector *connector; in drm_connector_unplug_all() local
1055 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_connector_unplug_all()
1056 drm_connector_unregister(connector); in drm_connector_unplug_all()
1682 struct drm_connector *connector; in drm_mode_group_init_legacy_group() local
1696 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_mode_group_init_legacy_group()
1698 group->num_connectors++] = connector->base.id; in drm_mode_group_init_legacy_group()
1809 struct drm_connector *connector; in drm_mode_getresources() local
1942 list_for_each_entry(connector, in drm_mode_getresources()
1946 connector->base.id, in drm_mode_getresources()
1947 connector->name); in drm_mode_getresources()
1948 if (put_user(connector->base.id, in drm_mode_getresources()
2050 static struct drm_encoder *drm_connector_get_encoder(struct drm_connector *connector) in drm_connector_get_encoder() argument
2054 if (connector->state) in drm_connector_get_encoder()
2055 return connector->state->best_encoder; in drm_connector_get_encoder()
2056 return connector->encoder; in drm_connector_get_encoder()
2114 struct drm_connector *connector; in drm_mode_getconnector() local
2135 connector = drm_connector_find(dev, out_resp->connector_id); in drm_mode_getconnector()
2136 if (!connector) { in drm_mode_getconnector()
2142 if (connector->encoder_ids[i] != 0) in drm_mode_getconnector()
2146 connector->funcs->fill_modes(connector, in drm_mode_getconnector()
2152 list_for_each_entry(mode, &connector->modes, head) 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()
2159 out_resp->mm_width = connector->display_info.width_mm; in drm_mode_getconnector()
2160 out_resp->mm_height = connector->display_info.height_mm; in drm_mode_getconnector()
2161 out_resp->subpixel = connector->display_info.subpixel_order; in drm_mode_getconnector()
2162 out_resp->connection = connector->status; in drm_mode_getconnector()
2165 encoder = drm_connector_get_encoder(connector); in drm_mode_getconnector()
2178 list_for_each_entry(mode, &connector->modes, head) { in drm_mode_getconnector()
2193 ret = get_properties(&connector->base, file_priv->atomic, in drm_mode_getconnector()
2204 if (connector->encoder_ids[i] != 0) { in drm_mode_getconnector()
2205 if (put_user(connector->encoder_ids[i], in drm_mode_getconnector()
2227 struct drm_connector *connector; in drm_encoder_get_crtc() local
2233 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_encoder_get_crtc()
2234 if (!connector->state) in drm_encoder_get_crtc()
2239 if (connector->state->best_encoder != encoder) in drm_encoder_get_crtc()
2242 return connector->state->crtc; in drm_encoder_get_crtc()
2741 struct drm_connector **connector_set = NULL, *connector; in drm_mode_setcrtc() local
2871 connector = drm_connector_find(dev, out_id); in drm_mode_setcrtc()
2872 if (!connector) { in drm_mode_setcrtc()
2879 connector->base.id, in drm_mode_setcrtc()
2880 connector->name); in drm_mode_setcrtc()
2882 connector_set[i] = connector; in drm_mode_setcrtc()
4303 int drm_mode_connector_set_path_property(struct drm_connector *connector, in drm_mode_connector_set_path_property() argument
4306 struct drm_device *dev = connector->dev; in drm_mode_connector_set_path_property()
4310 connector->path_blob_ptr = drm_property_create_blob(connector->dev, in drm_mode_connector_set_path_property()
4312 if (!connector->path_blob_ptr) in drm_mode_connector_set_path_property()
4315 ret = drm_object_property_set_value(&connector->base, in drm_mode_connector_set_path_property()
4317 connector->path_blob_ptr->base.id); in drm_mode_connector_set_path_property()
4333 int drm_mode_connector_set_tile_property(struct drm_connector *connector) in drm_mode_connector_set_tile_property() argument
4335 struct drm_device *dev = connector->dev; in drm_mode_connector_set_tile_property()
4339 if (connector->tile_blob_ptr) in drm_mode_connector_set_tile_property()
4340 drm_property_destroy_blob(dev, connector->tile_blob_ptr); in drm_mode_connector_set_tile_property()
4342 if (!connector->has_tile) { in drm_mode_connector_set_tile_property()
4343 connector->tile_blob_ptr = NULL; in drm_mode_connector_set_tile_property()
4344 ret = drm_object_property_set_value(&connector->base, in drm_mode_connector_set_tile_property()
4350 connector->tile_group->id, connector->tile_is_single_monitor, in drm_mode_connector_set_tile_property()
4351 connector->num_h_tile, connector->num_v_tile, in drm_mode_connector_set_tile_property()
4352 connector->tile_h_loc, connector->tile_v_loc, in drm_mode_connector_set_tile_property()
4353 connector->tile_h_size, connector->tile_v_size); in drm_mode_connector_set_tile_property()
4356 connector->tile_blob_ptr = drm_property_create_blob(connector->dev, in drm_mode_connector_set_tile_property()
4358 if (!connector->tile_blob_ptr) in drm_mode_connector_set_tile_property()
4361 ret = drm_object_property_set_value(&connector->base, in drm_mode_connector_set_tile_property()
4363 connector->tile_blob_ptr->base.id); in drm_mode_connector_set_tile_property()
4379 int drm_mode_connector_update_edid_property(struct drm_connector *connector, in drm_mode_connector_update_edid_property() argument
4382 struct drm_device *dev = connector->dev; in drm_mode_connector_update_edid_property()
4387 if (connector->override_edid) in drm_mode_connector_update_edid_property()
4390 if (connector->edid_blob_ptr) in drm_mode_connector_update_edid_property()
4391 drm_property_destroy_blob(dev, connector->edid_blob_ptr); in drm_mode_connector_update_edid_property()
4395 connector->edid_blob_ptr = NULL; in drm_mode_connector_update_edid_property()
4396 ret = drm_object_property_set_value(&connector->base, dev->mode_config.edid_property, 0); in drm_mode_connector_update_edid_property()
4401 connector->edid_blob_ptr = drm_property_create_blob(connector->dev, in drm_mode_connector_update_edid_property()
4403 if (!connector->edid_blob_ptr) in drm_mode_connector_update_edid_property()
4406 ret = drm_object_property_set_value(&connector->base, in drm_mode_connector_update_edid_property()
4408 connector->edid_blob_ptr->base.id); in drm_mode_connector_update_edid_property()
4524 struct drm_connector *connector = obj_to_connector(obj); in drm_mode_connector_set_obj_prop() local
4527 if (property == connector->dev->mode_config.dpms_property) { in drm_mode_connector_set_obj_prop()
4528 if (connector->funcs->dpms) in drm_mode_connector_set_obj_prop()
4529 (*connector->funcs->dpms)(connector, (int)value); in drm_mode_connector_set_obj_prop()
4531 } else if (connector->funcs->set_property) in drm_mode_connector_set_obj_prop()
4532 ret = connector->funcs->set_property(connector, property, value); in drm_mode_connector_set_obj_prop()
4536 drm_object_property_set_value(&connector->base, property, value); in drm_mode_connector_set_obj_prop()
4721 int drm_mode_connector_attach_encoder(struct drm_connector *connector, in drm_mode_connector_attach_encoder() argument
4727 if (connector->encoder_ids[i] == 0) { in drm_mode_connector_attach_encoder()
4728 connector->encoder_ids[i] = encoder->base.id; in drm_mode_connector_attach_encoder()
5040 struct drm_connector *connector; in drm_mode_config_reset() local
5054 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_mode_config_reset()
5055 if (connector->funcs->reset) in drm_mode_config_reset()
5056 connector->funcs->reset(connector); in drm_mode_config_reset()
5472 struct drm_connector *connector, *ot; in drm_mode_config_cleanup() local
5485 list_for_each_entry_safe(connector, ot, in drm_mode_config_cleanup()
5487 connector->funcs->destroy(connector); in drm_mode_config_cleanup()