Lines Matching refs:connector
125 drm_connector_get_tiled_mode(struct drm_connector *connector)
129 list_for_each_entry(mode, &connector->modes, head) {
130 if (mode->hdisplay == connector->tile_h_size &&
131 mode->vdisplay == connector->tile_v_size)
138 drm_connector_fallback_non_tiled_mode(struct drm_connector *connector)
142 list_for_each_entry(mode, &connector->modes, head) {
143 if (mode->hdisplay == connector->tile_h_size &&
144 mode->vdisplay == connector->tile_v_size)
152 drm_connector_has_preferred_mode(struct drm_connector *connector, int width, int height)
156 list_for_each_entry(mode, &connector->modes, head) {
167 drm_connector_pick_cmdline_mode(struct drm_connector *connector)
173 cmdline_mode = &connector->cmdline_mode;
185 list_for_each_entry(mode, &connector->modes, head) {
216 mode = drm_mode_create_from_cmdline_mode(connector->dev, cmdline_mode);
218 list_add(&mode->head, &connector->modes);
223 static bool drm_connector_enabled(struct drm_connector *connector, bool strict)
227 if (connector->display_info.non_desktop)
231 enable = connector->status == connector_status_connected;
233 enable = connector->status != connector_status_disconnected;
243 struct drm_connector *connector;
247 connector = connectors[i];
248 enabled[i] = drm_connector_enabled(connector, true);
249 DRM_DEBUG_KMS("connector %d enabled? %s\n", connector->base.id,
250 connector->display_info.non_desktop ? "non desktop" : enabled[i] ? "yes" : "no");
283 /* only contemplate cloning if more than one connector is enabled */
314 /* try and find a 1024x768 mode on each connector */
349 struct drm_connector *connector;
354 connector = connectors[i];
355 if (!connector->has_tile)
359 DRM_DEBUG_KMS("no modes for connector tiled %d %d\n", i,
360 connector->base.id);
363 if (connector->tile_h_loc < h_idx)
366 if (connector->tile_v_loc < v_idx)
382 struct drm_connector *connector;
396 connector = connectors[i];
407 if (tile_pass == 0 && connector->has_tile)
411 if (connector->tile_h_loc != 0 ||
412 connector->tile_v_loc != 0)
416 if (connector->tile_h_loc != tile_pass - 1 &&
417 connector->tile_v_loc != tile_pass - 1)
426 connector->tile_h_loc, connector->tile_v_loc);
428 DRM_DEBUG_KMS("looking for cmdline mode on connector %d\n",
429 connector->base.id);
432 modes[i] = drm_connector_pick_cmdline_mode(connector);
434 DRM_DEBUG_KMS("looking for preferred mode on connector %d %d\n",
435 connector->base.id, connector->tile_group ? connector->tile_group->id : 0);
436 modes[i] = drm_connector_has_preferred_mode(connector, width, height);
439 if (!modes[i] && !list_empty(&connector->modes)) {
440 list_for_each_entry(modes[i], &connector->modes, head)
451 if (connector->has_tile) {
453 connector->num_h_tile * connector->num_v_tile ||
454 (connector->tile_h_loc == 0 &&
455 connector->tile_v_loc == 0 &&
456 !drm_connector_get_tiled_mode(connector))) {
457 DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n",
458 connector->base.id);
459 modes[i] = drm_connector_fallback_non_tiled_mode(connector);
461 modes[i] = drm_connector_get_tiled_mode(connector);
477 static bool connector_has_possible_crtc(struct drm_connector *connector,
482 drm_connector_for_each_possible_encoder(connector, encoder) {
498 struct drm_connector *connector;
507 connector = connectors[n];
520 if (connector->status == connector_status_connected)
522 if (connector->cmdline_mode.specified)
524 if (drm_connector_has_preferred_mode(connector, width, height))
528 * select a crtc for this connector and then attempt to configure
534 if (!connector_has_possible_crtc(connector, crtc))
607 struct drm_connector *connector;
611 connector = connectors[i];
616 if (conn_seq == 0 && !connector->has_tile)
619 if (connector->status == connector_status_connected)
623 DRM_DEBUG_KMS("connector %s not enabled, skipping\n",
624 connector->name);
629 if (connector->force == DRM_FORCE_OFF) {
630 DRM_DEBUG_KMS("connector %s is disabled by user, skipping\n",
631 connector
636 encoder = connector->state->best_encoder;
637 if (!encoder || WARN_ON(!connector->state->crtc)) {
638 if (connector->force > DRM_FORCE_OFF)
641 DRM_DEBUG_KMS("connector %s has no encoder or crtc, skipping\n",
642 connector->name);
650 new_crtc = connector->state->crtc;
664 DRM_DEBUG_KMS("looking for cmdline mode on connector %s\n",
665 connector->name);
668 modes[i] = drm_connector_pick_cmdline_mode(connector);
672 DRM_DEBUG_KMS("looking for preferred mode on connector %s %d\n",
673 connector->name, connector->has_tile);
674 modes[i] = drm_connector_has_preferred_mode(connector, width, height);
678 if (!modes[i] && !list_empty(&connector->modes)) {
679 DRM_DEBUG_KMS("using first mode listed on connector %s\n",
680 connector->name);
681 modes[i] = list_first_entry(&connector->modes,
699 DRM_DEBUG_KMS("looking for current mode on connector %s\n",
700 connector->name);
701 modes[i] = &connector->state->crtc->mode;
707 if (connector->has_tile &&
708 num_tiled_conns < connector->num_h_tile * connector->num_v_tile) {
709 DRM_DEBUG_KMS("Falling back to non tiled mode on Connector %d\n",
710 connector->base.id);
711 modes[i] = drm_connector_fallback_non_tiled_mode(connector);
715 DRM_DEBUG_KMS("connector %s on [CRTC:%d:%s]: %dx%d%s\n",
716 connector->name,
717 connector->state->crtc->base.id,
718 connector->state->crtc->name,
770 struct drm_connector *connector, **connectors = NULL;
789 drm_client_for_each_connector_iter(connector, &conn_iter) {
799 drm_connector_get(connector);
800 connectors[connector_count++] = connector;
855 struct drm_connector *connector = connectors[i];
867 drm_connector_get(connector);
868 modeset->connectors[modeset->num_connectors++] = connector;
895 * to match the rotation needed on its connector.
904 struct drm_connector *connector = modeset->connectors[0];
913 switch (connector->display_info.panel_orientation) {
939 cmdline = &connector->cmdline_mode;
1157 struct drm_connector *connector;
1167 connector = modeset->connectors[j];
1168 connector->funcs->dpms(connector, dpms_mode);
1169 drm_object_property_set_value(&connector->base,