Lines Matching defs:connector

46  * implementation of the core connector->fill_modes interface with
51 * track of a per-connector hpd interrupt.
61 static void drm_mode_validate_flag(struct drm_connector *connector,
70 list_for_each_entry(mode, &connector->modes, head) {
85 static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector)
89 if (!connector->cmdline_mode.specified)
92 mode = drm_mode_create_from_cmdline_mode(connector->dev,
93 &connector->cmdline_mode);
97 drm_mode_probed_add(connector, mode);
101 static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connector *connector,
104 struct drm_device *dev = connector->dev;
107 connector->helper_private;
114 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id,
115 connector->name);
117 list_for_each_entry(mode, &connector->modes, head)
120 if (connector->force) {
121 if (connector->force == DRM_FORCE_ON)
122 connector->status = connector_status_connected;
124 connector->status = connector_status_disconnected;
125 if (connector->funcs->force)
126 connector->funcs->force(connector);
128 connector->status = connector->funcs->detect(connector, true);
137 if (connector->status == connector_status_disconnected) {
139 connector->base.id, connector->name);
140 drm_mode_connector_update_edid_property(connector, NULL);
146 count = drm_load_edid_firmware(connector);
150 if (connector->override_edid) {
151 struct edid *edid = (struct edid *) connector->edid_blob_ptr->data;
153 count = drm_add_edid_modes(connector, edid);
155 count = (*connector_funcs->get_modes)(connector);
158 if (count == 0 && connector->status == connector_status_connected)
159 count = drm_add_modes_noedid(connector, 1024, 768);
160 count += drm_helper_probe_add_cmdline_mode(connector);
164 drm_mode_connector_list_update(connector, merge_type_bits);
167 drm_mode_validate_size(dev, &connector->modes, maxX, maxY);
169 if (connector->interlace_allowed)
171 if (connector->doublescan_allowed)
173 if (connector->stereo_allowed)
175 drm_mode_validate_flag(connector, mode_flags);
177 list_for_each_entry(mode, &connector->modes, head) {
179 mode->status = connector_funcs->mode_valid(connector,
184 drm_mode_prune_invalid(dev, &connector->modes, verbose_prune);
186 if (list_empty(&connector->modes))
189 list_for_each_entry(mode, &connector->modes, head)
192 drm_mode_sort(&connector->modes);
194 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] probed modes :\n", connector->base.id,
195 connector->name);
196 list_for_each_entry(mode, &connector->modes, head) {
206 * @connector: connector to probe
210 * Based on the helper callbacks implemented by @connector try to detect all
211 * valid modes. Modes will first be added to the connector's probed_modes list,
216 * @connector vfunc for drivers that use the crtc helpers for output mode
220 * The number of modes found on @connector.
222 int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
225 return drm_helper_probe_single_connector_modes_merge_bits(connector, maxX, maxY, true);
231 * @connector: connector to probe
238 int drm_helper_probe_single_connector_modes_nomerge(struct drm_connector *connector,
241 return drm_helper_probe_single_connector_modes_merge_bits(connector, maxX, maxY, false);
247 * @dev: drm_device whose connector state changed
275 struct drm_connector *connector;
283 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
286 if (connector->force)
291 if (!connector->polled || connector->polled == DRM_CONNECTOR_POLL_HPD)
296 old_status = connector->status;
300 !(connector->polled & DRM_CONNECTOR_POLL_DISCONNECT))
303 connector->status = connector->funcs->detect(connector, false);
304 if (old_status != connector->status) {
308 new = drm_get_connector_status_name(connector->status);
312 connector->base.id,
313 connector->name,
360 struct drm_connector *connector;
365 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
366 if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT |
392 * Note that a connector can be both polled and probed from the hotplug handler,
424 * interrupts for each connector.
426 * Drivers which support hotplug interrupts for each connector individually and
428 * directly call drm_kms_helper_hotplug_event() in case the connector state
434 * Note that a connector can be both polled and probed from the hotplug handler,
439 struct drm_connector *connector;
447 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
450 if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
453 old_status = connector->status;
455 connector->status = connector->funcs->detect(connector, false);
457 connector->base.id,
458 connector->name,
460 drm_get_connector_status_name(connector->status));
461 if (old_status != connector->status)