Lines Matching defs:connector

59 intel_panel_preferred_fixed_mode(struct intel_connector *connector)
61 return list_first_entry_or_null(&connector->panel.fixed_modes,
65 static bool is_best_fixed_mode(struct intel_connector *connector,
78 if (intel_vrr_is_in_range(connector, vrefresh) &&
79 intel_vrr_is_in_range(connector, fixed_mode_vrefresh) &&
89 intel_panel_fixed_mode(struct intel_connector *connector,
95 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
98 if (is_best_fixed_mode(connector, vrefresh,
128 intel_panel_downclock_mode(struct intel_connector *connector,
132 int min_vrefresh = connector->panel.vbt.seamless_drrs_min_refresh_rate;
136 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
150 intel_panel_highest_mode(struct intel_connector *connector,
156 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
164 int intel_panel_get_modes(struct intel_connector *connector)
169 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
172 mode = drm_mode_duplicate(connector->base.dev, fixed_mode);
174 drm_mode_probed_add(&connector->base, mode);
182 static bool has_drrs_modes(struct intel_connector *connector)
186 list_for_each_entry(mode1, &connector->panel.fixed_modes, head) {
189 list_for_each_entry_continue(mode2, &connector->panel.fixed_modes, head) {
198 enum drrs_type intel_panel_drrs_type(struct intel_connector *connector)
200 return connector->panel.vbt.drrs_type;
203 int intel_panel_compute_config(struct intel_connector *connector,
207 intel_panel_fixed_mode(connector, adjusted_mode);
221 is_vrr = intel_vrr_is_in_range(connector, vrefresh) &&
222 intel_vrr_is_in_range(connector, fixed_mode_vrefresh);
232 drm_dbg_kms(connector->base.dev,
234 connector->base.base.id, connector->base.name,
253 static void intel_panel_add_edid_alt_fixed_modes(struct intel_connector *connector)
255 struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
257 intel_panel_preferred_fixed_mode(connector);
260 list_for_each_entry_safe(mode, next, &connector->base.probed_modes, head) {
266 connector->base.base.id, connector->base.name,
269 list_move_tail(&mode->head, &connector->panel.fixed_modes);
273 static void intel_panel_add_edid_preferred_mode(struct intel_connector *connector)
275 struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
278 if (list_empty(&connector->base.probed_modes))
282 list_for_each_entry(scan, &connector->base.probed_modes, head) {
290 fixed_mode = list_first_entry(&connector->base.probed_modes,
295 connector->base.base.id, connector->base.name,
301 list_move_tail(&fixed_mode->head, &connector->panel.fixed_modes);
304 static void intel_panel_destroy_probed_modes(struct intel_connector *connector)
306 struct drm_i915_private *i915 = to_i915(connector->base.dev);
309 list_for_each_entry_safe(mode, next, &connector->base.probed_modes, head) {
312 connector->base.base.id, connector->base.name,
319 void intel_panel_add_edid_fixed_modes(struct intel_connector *connector,
322 intel_panel_add_edid_preferred_mode(connector);
323 if (intel_panel_preferred_fixed_mode(connector) && use_alt_fixed_modes)
324 intel_panel_add_edid_alt_fixed_modes(connector);
325 intel_panel_destroy_probed_modes(connector);
328 static void intel_panel_add_fixed_mode(struct intel_connector *connector,
332 struct drm_i915_private *i915 = to_i915(connector->base.dev);
333 struct drm_display_info *info = &connector->base.display_info;
344 connector->base.base.id, connector->base.name, type,
347 list_add_tail(&fixed_mode->head, &connector->panel.fixed_modes);
350 void intel_panel_add_vbt_lfp_fixed_mode(struct intel_connector *connector)
352 struct drm_i915_private *i915 = to_i915(connector->base.dev);
355 mode = connector->panel.vbt.lfp_lvds_vbt_mode;
359 intel_panel_add_fixed_mode(connector,
364 void intel_panel_add_vbt_sdvo_fixed_mode(struct intel_connector *connector)
366 struct drm_i915_private *i915 = to_i915(connector->base.dev);
369 mode = connector->panel.vbt.sdvo_lvds_vbt_mode;
373 intel_panel_add_fixed_mode(connector,
378 void intel_panel_add_encoder_fixed_mode(struct intel_connector *connector,
381 intel_panel_add_fixed_mode(connector,
682 intel_panel_detect(struct drm_connector *connector, bool force)
684 struct drm_i915_private *i915 = to_i915(connector->dev);
690 return connector->status;
696 intel_panel_mode_valid(struct intel_connector *connector,
700 intel_panel_fixed_mode(connector, mode);
717 void intel_panel_init_alloc(struct intel_connector *connector)
719 struct intel_panel *panel = &connector->panel;
721 connector->panel.vbt.panel_type = -1;
722 connector->panel.vbt.backlight.controller = -1;
726 int intel_panel_init(struct intel_connector *connector,
729 struct intel_panel *panel = &connector->panel;
735 if (!has_drrs_modes(connector))
736 connector->panel.vbt.drrs_type = DRRS_TYPE_NONE;
738 drm_dbg_kms(connector->base.dev,
740 connector->base.base.id, connector->base.name,
741 intel_drrs_type_str(intel_panel_drrs_type(connector)));
746 void intel_panel_fini(struct intel_connector *connector)
748 struct intel_panel *panel = &connector->panel;
760 drm_mode_destroy(connector->base.dev, fixed_mode);