Lines Matching defs:connector

56 intel_panel_preferred_fixed_mode(struct intel_connector *connector)
58 return list_first_entry_or_null(&connector->panel.fixed_modes,
62 static bool is_best_fixed_mode(struct intel_connector *connector,
75 if (intel_vrr_is_in_range(connector, vrefresh) &&
76 intel_vrr_is_in_range(connector, fixed_mode_vrefresh) &&
86 intel_panel_fixed_mode(struct intel_connector *connector,
92 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
95 if (is_best_fixed_mode(connector, vrefresh,
125 intel_panel_downclock_mode(struct intel_connector *connector,
129 int min_vrefresh = connector->panel.vbt.seamless_drrs_min_refresh_rate;
133 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
147 intel_panel_highest_mode(struct intel_connector *connector,
153 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
161 int intel_panel_get_modes(struct intel_connector *connector)
166 list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
169 mode = drm_mode_duplicate(connector->base.dev, fixed_mode);
171 drm_mode_probed_add(&connector->base, mode);
179 static bool has_drrs_modes(struct intel_connector *connector)
183 list_for_each_entry(mode1, &connector->panel.fixed_modes, head) {
186 list_for_each_entry_continue(mode2, &connector->panel.fixed_modes, head) {
195 enum drrs_type intel_panel_drrs_type(struct intel_connector *connector)
197 return connector->panel.vbt.drrs_type;
200 int intel_panel_compute_config(struct intel_connector *connector,
204 intel_panel_fixed_mode(connector, adjusted_mode);
218 is_vrr = intel_vrr_is_in_range(connector, vrefresh) &&
219 intel_vrr_is_in_range(connector, fixed_mode_vrefresh);
229 drm_dbg_kms(connector->base.dev,
231 connector->base.base.id, connector->base.name,
250 static void intel_panel_add_edid_alt_fixed_modes(struct intel_connector *connector)
252 struct intel_display *display = to_intel_display(connector);
254 intel_panel_preferred_fixed_mode(connector);
257 list_for_each_entry_safe(mode, next, &connector->base.probed_modes, head) {
263 connector->base.base.id, connector->base.name,
266 list_move_tail(&mode->head, &connector->panel.fixed_modes);
270 static void intel_panel_add_edid_preferred_mode(struct intel_connector *connector)
272 struct intel_display *display = to_intel_display(connector);
275 if (list_empty(&connector->base.probed_modes))
279 list_for_each_entry(scan, &connector->base.probed_modes, head) {
287 fixed_mode = list_first_entry(&connector->base.probed_modes,
292 connector->base.base.id, connector->base.name,
298 list_move_tail(&fixed_mode->head, &connector->panel.fixed_modes);
301 static void intel_panel_destroy_probed_modes(struct intel_connector *connector)
303 struct intel_display *display = to_intel_display(connector);
306 list_for_each_entry_safe(mode, next, &connector->base.probed_modes, head) {
309 connector->base.base.id, connector->base.name,
316 void intel_panel_add_edid_fixed_modes(struct intel_connector *connector,
319 intel_panel_add_edid_preferred_mode(connector);
320 if (intel_panel_preferred_fixed_mode(connector) && use_alt_fixed_modes)
321 intel_panel_add_edid_alt_fixed_modes(connector);
322 intel_panel_destroy_probed_modes(connector);
325 static void intel_panel_add_fixed_mode(struct intel_connector *connector,
329 struct intel_display *display = to_intel_display(connector);
330 struct drm_display_info *info = &connector->base.display_info;
341 connector->base.base.id, connector->base.name, type,
344 list_add_tail(&fixed_mode->head, &connector->panel.fixed_modes);
347 void intel_panel_add_vbt_lfp_fixed_mode(struct intel_connector *connector)
349 struct intel_display *display = to_intel_display(connector);
352 mode = connector->panel.vbt.lfp_vbt_mode;
356 intel_panel_add_fixed_mode(connector,
361 void intel_panel_add_vbt_sdvo_fixed_mode(struct intel_connector *connector)
363 struct intel_display *display = to_intel_display(connector);
366 mode = connector->panel.vbt.sdvo_lvds_vbt_mode;
370 intel_panel_add_fixed_mode(connector,
375 void intel_panel_add_encoder_fixed_mode(struct intel_connector *connector,
378 intel_panel_add_fixed_mode(connector,
384 intel_panel_detect(struct drm_connector *connector, bool force)
386 struct intel_display *display = to_intel_display(connector->dev);
392 return connector->status;
398 intel_panel_mode_valid(struct intel_connector *connector,
402 intel_panel_fixed_mode(connector, mode);
419 void intel_panel_init_alloc(struct intel_connector *connector)
421 struct intel_panel *panel = &connector->panel;
423 connector->panel.vbt.panel_type = -1;
424 connector->panel.vbt.backlight.controller = -1;
428 int intel_panel_init(struct intel_connector *connector,
431 struct intel_panel *panel = &connector->panel;
437 if (!has_drrs_modes(connector))
438 connector->panel.vbt.drrs_type = DRRS_TYPE_NONE;
440 drm_dbg_kms(connector->base.dev,
442 connector->base.base.id, connector->base.name,
443 intel_drrs_type_str(intel_panel_drrs_type(connector)));
448 void intel_panel_fini(struct intel_connector *connector)
450 struct intel_panel *panel = &connector->panel;
462 drm_mode_destroy(connector->base.dev, fixed_mode);
471 * It would be natural to handle this e.g. in the connector ->sync_state hook at
476 static void intel_panel_sync_state(struct intel_connector *connector)
478 struct intel_display *display = to_intel_display(connector);
487 conn_state = connector->base.state;
497 connector->base.base.id, connector->base.name);
508 int intel_panel_register(struct intel_connector *connector)
510 struct intel_display *display = to_intel_display(connector);
511 struct intel_panel *panel = &connector->panel;
514 ret = intel_backlight_device_register(connector);
518 if (connector->base.connector_type == DRM_MODE_CONNECTOR_DSI ||
519 connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) {
520 struct device *dev = connector->base.kdev;
531 * connector .late_register() hooks. So we can't allocate the
532 * panel at connector init time, and can't allocate struct
543 connector->base.connector_type);
554 connector->base.base.id, connector->base.name,
557 intel_panel_sync_state(connector);
564 intel_backlight_device_unregister(connector);
569 void intel_panel_unregister(struct intel_connector *connector)
571 struct intel_panel *panel = &connector->panel;
576 intel_backlight_device_unregister(connector);
583 struct intel_connector *connector = to_intel_connector(conn_state->connector);
584 struct intel_panel *panel = &connector->panel;
592 struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
593 struct intel_panel *panel = &connector->panel;