Lines Matching full:connector
42 * connector list
45 * Some userspace presumes that the first connected connector is the main
48 * (eDP/LVDS) panels to the front of the connector list, instead of
53 struct drm_connector *connector, *tmp; in drm_helper_move_panel_connectors_to_head() local
58 list_for_each_entry_safe(connector, tmp, in drm_helper_move_panel_connectors_to_head()
60 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || in drm_helper_move_panel_connectors_to_head()
61 connector->connector_type == DRM_MODE_CONNECTOR_eDP) in drm_helper_move_panel_connectors_to_head()
62 list_move_tail(&connector->head, &panel_list); in drm_helper_move_panel_connectors_to_head()
72 static void drm_mode_validate_flag(struct drm_connector *connector, in drm_mode_validate_flag() argument
80 list_for_each_entry(mode, &connector->modes, head) { in drm_mode_validate_flag()
94 * @connector: connector to probe
101 * Based on the helper callbacks implemented by @connector try to detect all
102 * valid modes. Modes will first be added to the connector's probed_modes list,
106 * Intended to be use as a generic implementation of the ->probe() @connector
111 * Number of modes found on @connector.
113 int drm_helper_probe_single_connector_modes(struct drm_connector *connector, in drm_helper_probe_single_connector_modes() argument
116 struct drm_device *dev = connector->dev; in drm_helper_probe_single_connector_modes()
119 connector->helper_private; in drm_helper_probe_single_connector_modes()
123 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, in drm_helper_probe_single_connector_modes()
124 drm_get_connector_name(connector)); in drm_helper_probe_single_connector_modes()
126 list_for_each_entry(mode, &connector->modes, head) in drm_helper_probe_single_connector_modes()
129 if (connector->force) { in drm_helper_probe_single_connector_modes()
130 if (connector->force == DRM_FORCE_ON) in drm_helper_probe_single_connector_modes()
131 connector->status = connector_status_connected; in drm_helper_probe_single_connector_modes()
133 connector->status = connector_status_disconnected; in drm_helper_probe_single_connector_modes()
134 if (connector->funcs->force) in drm_helper_probe_single_connector_modes()
135 connector->funcs->force(connector); in drm_helper_probe_single_connector_modes()
137 connector->status = connector->funcs->detect(connector, true); in drm_helper_probe_single_connector_modes()
146 if (connector->status == connector_status_disconnected) { in drm_helper_probe_single_connector_modes()
147 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] disconnected\n", in drm_helper_probe_single_connector_modes()
148 connector->base.id, drm_get_connector_name(connector)); in drm_helper_probe_single_connector_modes()
149 drm_mode_connector_update_edid_property(connector, NULL); in drm_helper_probe_single_connector_modes()
155 count = drm_load_edid_firmware(connector); in drm_helper_probe_single_connector_modes()
159 count = (*connector_funcs->get_modes)(connector); in drm_helper_probe_single_connector_modes()
161 if (count == 0 && connector->status == connector_status_connected) in drm_helper_probe_single_connector_modes()
162 count = drm_add_modes_noedid(connector, 1024, 768); in drm_helper_probe_single_connector_modes()
166 drm_mode_connector_list_update(connector); in drm_helper_probe_single_connector_modes()
169 drm_mode_validate_size(dev, &connector->modes, maxX, in drm_helper_probe_single_connector_modes()
172 if (connector->interlace_allowed) in drm_helper_probe_single_connector_modes()
174 if (connector->doublescan_allowed) in drm_helper_probe_single_connector_modes()
176 drm_mode_validate_flag(connector, mode_flags); in drm_helper_probe_single_connector_modes()
178 list_for_each_entry(mode, &connector->modes, head) { in drm_helper_probe_single_connector_modes()
180 mode->status = connector_funcs->mode_valid(connector, in drm_helper_probe_single_connector_modes()
185 drm_mode_prune_invalid(dev, &connector->modes, true); in drm_helper_probe_single_connector_modes()
187 if (list_empty(&connector->modes)) in drm_helper_probe_single_connector_modes()
190 list_for_each_entry(mode, &connector->modes, head) in drm_helper_probe_single_connector_modes()
193 drm_mode_sort(&connector->modes); in drm_helper_probe_single_connector_modes()
195 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] probed modes :\n", connector->base.id, in drm_helper_probe_single_connector_modes()
196 drm_get_connector_name(connector)); in drm_helper_probe_single_connector_modes()
197 list_for_each_entry(mode, &connector->modes, head) { in drm_helper_probe_single_connector_modes()
220 struct drm_connector *connector; in drm_helper_encoder_in_use() local
222 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_helper_encoder_in_use()
223 if (connector->encoder == encoder) in drm_helper_encoder_in_use()
271 * If an connector or CRTC isn't part of @dev's mode_config, it can be disabled
277 struct drm_connector *connector; in drm_helper_disable_unused_functions() local
280 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_helper_disable_unused_functions()
281 if (!connector->encoder) in drm_helper_disable_unused_functions()
283 if (connector->status == connector_status_disconnected) in drm_helper_disable_unused_functions()
284 connector->encoder = NULL; in drm_helper_disable_unused_functions()
290 /* disconnector encoder from any connector */ in drm_helper_disable_unused_functions()
419 * adjust it according to limitations or connector properties, and also in drm_crtc_helper_set_mode()
514 struct drm_connector *connector; in drm_crtc_helper_disable() local
522 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_crtc_helper_disable()
523 if (connector->encoder != encoder) in drm_crtc_helper_disable()
526 connector->encoder = NULL; in drm_crtc_helper_disable()
558 struct drm_connector *save_connectors, *connector; in drm_crtc_helper_set_config() local
593 * connector data. */ in drm_crtc_helper_set_config()
629 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_crtc_helper_set_config()
630 save_connectors[count++] = *connector; in drm_crtc_helper_set_config()
667 /* a) traverse passed in connector list and get encoders for them */ in drm_crtc_helper_set_config()
669 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_crtc_helper_set_config()
671 connector->helper_private; in drm_crtc_helper_set_config()
672 new_encoder = connector->encoder; in drm_crtc_helper_set_config()
674 if (set->connectors[ro] == connector) { in drm_crtc_helper_set_config()
675 new_encoder = connector_funcs->best_encoder(connector); in drm_crtc_helper_set_config()
676 /* if we can't get an encoder for a connector in drm_crtc_helper_set_config()
685 if (new_encoder != connector->encoder) { in drm_crtc_helper_set_config()
688 /* If the encoder is reused for another connector, then in drm_crtc_helper_set_config()
691 if (connector->encoder) in drm_crtc_helper_set_config()
692 connector->encoder->crtc = NULL; in drm_crtc_helper_set_config()
693 connector->encoder = new_encoder; in drm_crtc_helper_set_config()
703 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_crtc_helper_set_config()
704 if (!connector->encoder) in drm_crtc_helper_set_config()
707 if (connector->encoder->crtc == set->crtc) in drm_crtc_helper_set_config()
710 new_crtc = connector->encoder->crtc; in drm_crtc_helper_set_config()
713 if (set->connectors[ro] == connector) in drm_crtc_helper_set_config()
719 !drm_encoder_crtc_ok(connector->encoder, new_crtc)) { in drm_crtc_helper_set_config()
723 if (new_crtc != connector->encoder->crtc) { in drm_crtc_helper_set_config()
726 connector->encoder->crtc = new_crtc; in drm_crtc_helper_set_config()
729 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [CRTC:%d]\n", in drm_crtc_helper_set_config()
730 connector->base.id, drm_get_connector_name(connector), in drm_crtc_helper_set_config()
733 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [NOCRTC]\n", in drm_crtc_helper_set_config()
734 connector->base.id, drm_get_connector_name(connector)); in drm_crtc_helper_set_config()
759 DRM_DEBUG_KMS("Setting connector DPMS state to on\n"); in drm_crtc_helper_set_config()
761 DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id, in drm_crtc_helper_set_config()
800 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_crtc_helper_set_config()
801 *connector = save_connectors[count++]; in drm_crtc_helper_set_config()
820 struct drm_connector *connector; in drm_helper_choose_encoder_dpms() local
823 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_helper_choose_encoder_dpms()
824 if (connector->encoder == encoder) in drm_helper_choose_encoder_dpms()
825 if (connector->dpms < dpms) in drm_helper_choose_encoder_dpms()
826 dpms = connector->dpms; in drm_helper_choose_encoder_dpms()
833 struct drm_connector *connector; in drm_helper_choose_crtc_dpms() local
836 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_helper_choose_crtc_dpms()
837 if (connector->encoder && connector->encoder->crtc == crtc) in drm_helper_choose_crtc_dpms()
838 if (connector->dpms < dpms) in drm_helper_choose_crtc_dpms()
839 dpms = connector->dpms; in drm_helper_choose_crtc_dpms()
844 * drm_helper_connector_dpms() - connector dpms helper implementation
845 * @connector: affected connector
849 * implementing the DPMS connector attribute. It computes the new desired DPMS
853 void drm_helper_connector_dpms(struct drm_connector *connector, int mode) in drm_helper_connector_dpms() argument
855 struct drm_encoder *encoder = connector->encoder; in drm_helper_connector_dpms()
859 if (mode == connector->dpms) in drm_helper_connector_dpms()
862 old_dpms = connector->dpms; in drm_helper_connector_dpms()
863 connector->dpms = mode; in drm_helper_connector_dpms()
979 struct drm_connector *connector; in output_poll_execute() local
987 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in output_poll_execute()
990 if (connector->force) in output_poll_execute()
995 if (!connector->polled || connector->polled == DRM_CONNECTOR_POLL_HPD) in output_poll_execute()
1000 old_status = connector->status; in output_poll_execute()
1004 !(connector->polled & DRM_CONNECTOR_POLL_DISCONNECT)) in output_poll_execute()
1007 connector->status = connector->funcs->detect(connector, false); in output_poll_execute()
1008 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %d to %d\n", in output_poll_execute()
1009 connector->base.id, in output_poll_execute()
1010 drm_get_connector_name(connector), in output_poll_execute()
1011 old_status, connector->status); in output_poll_execute()
1012 if (old_status != connector->status) in output_poll_execute()
1039 struct drm_connector *connector; in drm_kms_helper_poll_enable() local
1044 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_kms_helper_poll_enable()
1045 if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT | in drm_kms_helper_poll_enable()
1074 struct drm_connector *connector; in drm_helper_hpd_irq_event() local
1082 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { in drm_helper_hpd_irq_event()
1085 if (!(connector->polled & DRM_CONNECTOR_POLL_HPD)) in drm_helper_hpd_irq_event()
1088 old_status = connector->status; in drm_helper_hpd_irq_event()
1090 connector->status = connector->funcs->detect(connector, false); in drm_helper_hpd_irq_event()
1091 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %d to %d\n", in drm_helper_hpd_irq_event()
1092 connector->base.id, in drm_helper_hpd_irq_event()
1093 drm_get_connector_name(connector), in drm_helper_hpd_irq_event()
1094 old_status, connector->status); in drm_helper_hpd_irq_event()
1095 if (old_status != connector->status) in drm_helper_hpd_irq_event()