Lines Matching full:connector
121 drm_connector_get_tiled_mode(struct drm_connector *connector) in drm_connector_get_tiled_mode() argument
125 list_for_each_entry(mode, &connector->modes, head) { in drm_connector_get_tiled_mode()
126 if (mode->hdisplay == connector->tile_h_size && in drm_connector_get_tiled_mode()
127 mode->vdisplay == connector->tile_v_size) in drm_connector_get_tiled_mode()
134 drm_connector_fallback_non_tiled_mode(struct drm_connector *connector) in drm_connector_fallback_non_tiled_mode() argument
138 list_for_each_entry(mode, &connector->modes, head) { in drm_connector_fallback_non_tiled_mode()
139 if (mode->hdisplay == connector->tile_h_size && in drm_connector_fallback_non_tiled_mode()
140 mode->vdisplay == connector->tile_v_size) in drm_connector_fallback_non_tiled_mode()
148 drm_connector_preferred_mode(struct drm_connector *connector, int width, int height) in drm_connector_preferred_mode() argument
152 list_for_each_entry(mode, &connector->modes, head) { in drm_connector_preferred_mode()
162 static struct drm_display_mode *drm_connector_first_mode(struct drm_connector *connector) in drm_connector_first_mode() argument
164 return list_first_entry_or_null(&connector->modes, in drm_connector_first_mode()
168 static struct drm_display_mode *drm_connector_pick_cmdline_mode(struct drm_connector *connector) in drm_connector_pick_cmdline_mode() argument
180 list_for_each_entry(mode, &connector->modes, head) { in drm_connector_pick_cmdline_mode()
185 cmdline_mode = &connector->cmdline_mode; in drm_connector_pick_cmdline_mode()
196 list_for_each_entry(mode, &connector->modes, head) { in drm_connector_pick_cmdline_mode()
225 static bool drm_connector_enabled(struct drm_connector *connector, bool strict) in drm_connector_enabled() argument
229 if (connector->display_info.non_desktop) in drm_connector_enabled()
233 enable = connector->status == connector_status_connected; in drm_connector_enabled()
235 enable = connector->status != connector_status_disconnected; in drm_connector_enabled()
245 struct drm_connector *connector; in drm_client_connectors_enabled() local
249 connector = connectors[i]; in drm_client_connectors_enabled()
250 enabled[i] = drm_connector_enabled(connector, true); in drm_client_connectors_enabled()
251 drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] enabled? %s\n", in drm_client_connectors_enabled()
252 connector->base.id, connector->name, in drm_client_connectors_enabled()
253 connector->display_info.non_desktop ? in drm_client_connectors_enabled()
287 /* only contemplate cloning if more than one connector is enabled */ in drm_client_target_cloned()
318 /* try and find a 1024x768 mode on each connector */ in drm_client_target_cloned()
359 struct drm_connector *connector; in drm_client_get_tile_offsets() local
364 connector = connectors[i]; in drm_client_get_tile_offsets()
365 if (!connector->has_tile) in drm_client_get_tile_offsets()
370 "[CONNECTOR:%d:%s] no modes for connector tiled %d\n", in drm_client_get_tile_offsets()
371 connector->base.id, connector->name, i); in drm_client_get_tile_offsets()
374 if (connector->tile_h_loc < h_idx) in drm_client_get_tile_offsets()
377 if (connector->tile_v_loc < v_idx) in drm_client_get_tile_offsets()
394 struct drm_connector *connector; in drm_client_target_preferred() local
408 connector = connectors[i]; in drm_client_target_preferred()
419 if (tile_pass == 0 && connector->has_tile) in drm_client_target_preferred()
423 if (connector->tile_h_loc != 0 || in drm_client_target_preferred()
424 connector->tile_v_loc != 0) in drm_client_target_preferred()
428 if (connector->tile_h_loc != tile_pass - 1 && in drm_client_target_preferred()
429 connector->tile_v_loc != tile_pass - 1) in drm_client_target_preferred()
439 connector->tile_h_loc, connector->tile_v_loc); in drm_client_target_preferred()
441 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for cmdline mode\n", in drm_client_target_preferred()
442 connector->base.id, connector->name); in drm_client_target_preferred()
445 modes[i] = drm_connector_pick_cmdline_mode(connector); in drm_client_target_preferred()
447 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for preferred mode, tile %d\n", in drm_client_target_preferred()
448 connector->base.id, connector->name, in drm_client_target_preferred()
449 connector->tile_group ? connector->tile_group->id : 0); in drm_client_target_preferred()
450 modes[i] = drm_connector_preferred_mode(connector, width, height); in drm_client_target_preferred()
454 modes[i] = drm_connector_first_mode(connector); in drm_client_target_preferred()
463 if (connector->has_tile) { in drm_client_target_preferred()
465 connector->num_h_tile * connector->num_v_tile || in drm_client_target_preferred()
466 (connector->tile_h_loc == 0 && in drm_client_target_preferred()
467 connector->tile_v_loc == 0 && in drm_client_target_preferred()
468 !drm_connector_get_tiled_mode(connector))) { in drm_client_target_preferred()
470 "[CONNECTOR:%d:%s] Falling back to non-tiled mode\n", in drm_client_target_preferred()
471 connector->base.id, connector->name); in drm_client_target_preferred()
472 modes[i] = drm_connector_fallback_non_tiled_mode(connector); in drm_client_target_preferred()
474 modes[i] = drm_connector_get_tiled_mode(connector); in drm_client_target_preferred()
478 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Found mode %s\n", in drm_client_target_preferred()
479 connector->base.id, connector->name, in drm_client_target_preferred()
491 static bool connector_has_possible_crtc(struct drm_connector *connector, in connector_has_possible_crtc() argument
496 drm_connector_for_each_possible_encoder(connector, encoder) { in connector_has_possible_crtc()
512 struct drm_connector *connector; in drm_client_pick_crtcs() local
521 connector = connectors[n]; in drm_client_pick_crtcs()
534 if (connector->status == connector_status_connected) in drm_client_pick_crtcs()
536 if (connector->cmdline_mode.specified) in drm_client_pick_crtcs()
538 if (drm_connector_preferred_mode(connector, width, height)) in drm_client_pick_crtcs()
542 * select a crtc for this connector and then attempt to configure in drm_client_pick_crtcs()
548 if (!connector_has_possible_crtc(connector, crtc)) in drm_client_pick_crtcs()
624 struct drm_connector *connector; in drm_client_firmware_config() local
628 connector = connectors[i]; in drm_client_firmware_config()
633 if (conn_seq == 0 && !connector->has_tile) in drm_client_firmware_config()
636 if (connector->status == connector_status_connected) in drm_client_firmware_config()
640 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] not enabled, skipping\n", in drm_client_firmware_config()
641 connector->base.id, connector->name); in drm_client_firmware_config()
646 if (connector->force == DRM_FORCE_OFF) { in drm_client_firmware_config()
647 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] disabled by user, skipping\n", in drm_client_firmware_config()
648 connector->base.id, connector->name); in drm_client_firmware_config()
653 encoder = connector->state->best_encoder; in drm_client_firmware_config()
654 if (!encoder || drm_WARN_ON(dev, !connector->state->crtc)) { in drm_client_firmware_config()
655 if (connector->force > DRM_FORCE_OFF) in drm_client_firmware_config()
658 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] has no encoder or crtc, skipping\n", in drm_client_firmware_config()
659 connector->base.id, connector->name); in drm_client_firmware_config()
667 new_crtc = connector->state->crtc; in drm_client_firmware_config()
681 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for cmdline mode\n", in drm_client_firmware_config()
682 connector->base.id, connector->name); in drm_client_firmware_config()
685 modes[i] = drm_connector_pick_cmdline_mode(connector); in drm_client_firmware_config()
690 "[CONNECTOR:%d:%s] looking for preferred mode, has tile: %s\n", in drm_client_firmware_config()
691 connector->base.id, connector->name, in drm_client_firmware_config()
692 str_yes_no(connector->has_tile)); in drm_client_firmware_config()
693 modes[i] = drm_connector_preferred_mode(connector, width, height); in drm_client_firmware_config()
697 if (!modes[i] && !list_empty(&connector->modes)) { in drm_client_firmware_config()
698 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] using first listed mode\n", in drm_client_firmware_config()
699 connector->base.id, connector->name); in drm_client_firmware_config()
700 modes[i] = drm_connector_first_mode(connector); in drm_client_firmware_config()
716 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for current mode\n", in drm_client_firmware_config()
717 connector->base.id, connector->name); in drm_client_firmware_config()
718 modes[i] = &connector->state->crtc->mode; in drm_client_firmware_config()
724 if (connector->has_tile && in drm_client_firmware_config()
725 num_tiled_conns < connector->num_h_tile * connector->num_v_tile) { in drm_client_firmware_config()
726 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Falling back to non-tiled mode\n", in drm_client_firmware_config()
727 connector->base.id, connector->name); in drm_client_firmware_config()
728 modes[i] = drm_connector_fallback_non_tiled_mode(connector); in drm_client_firmware_config()
732 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] on [CRTC:%d:%s]: %dx%d%s\n", in drm_client_firmware_config()
733 connector->base.id, connector->name, in drm_client_firmware_config()
734 connector->state->crtc->base.id, in drm_client_firmware_config()
735 connector->state->crtc->name, in drm_client_firmware_config()
747 struct drm_connector *connector = connectors[i]; in drm_client_firmware_config() local
749 if (connector->has_tile) in drm_client_firmware_config()
752 connector->tile_h_loc, connector->tile_v_loc); in drm_client_firmware_config()
796 struct drm_connector *connector, **connectors = NULL; in drm_client_modeset_probe() local
816 drm_client_for_each_connector_iter(connector, &conn_iter) { in drm_client_modeset_probe()
826 drm_connector_get(connector); in drm_client_modeset_probe()
827 connectors[connector_count++] = connector; in drm_client_modeset_probe()
880 struct drm_connector *connector = connectors[i]; in drm_client_modeset_probe() local
899 drm_connector_get(connector); in drm_client_modeset_probe()
900 modeset->connectors[modeset->num_connectors++] = connector; in drm_client_modeset_probe()
928 * to match the rotation needed on its connector.
937 struct drm_connector *connector = modeset->connectors[0]; in drm_client_rotation() local
946 switch (connector->display_info.panel_orientation) { in drm_client_rotation()
972 cmdline = &connector->cmdline_mode; in drm_client_rotation()
1219 struct drm_connector *connector; in drm_client_modeset_dpms_legacy() local
1231 connector = modeset->connectors[j]; in drm_client_modeset_dpms_legacy()
1232 connector->funcs->dpms(connector, dpms_mode); in drm_client_modeset_dpms_legacy()
1233 drm_object_property_set_value(&connector->base, in drm_client_modeset_dpms_legacy()