Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915: Refresh that status of MST capable connectors in ->detect()

Once we've determined that the sink is MST capable we never end up
running through the full detect cycle again, despite getting HPDs.
Fix tht by ripping out the incorrect piece of code responsible.

This got broken when I moved the long HPD handling to the ->detect()
hook, but failed to remove the leftover code.

Cc: Ander Conselvan de Oliveira <conselvan2@gmail.com>
Cc: drm-intel-fixes@lists.freedesktop.org
Cc: Rui Tiago Matos <tiagomatos@gmail.com>
Tested-by: Rui Tiago Matos <tiagomatos@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98323
Cc: Kirill A. Shutemov <kirill@shutemov.name>
Tested-by: Kirill A. Shutemov <kirill@shutemov.name>
References: https://bugs.freedesktop.org/show_bug.cgi?id=98306
Fixes: 1015811609c0 ("drm/i915: Move long hpd handling into the hotplug work")
Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1477057478-29328-1-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
(cherry picked from commit 1aab956c7b8872fb6976328316bfad62c6e67cf8)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

authored by

Ville Syrjälä and committed by
Jani Nikula
fc22b787 9f1a7ab2

-10
-10
drivers/gpu/drm/i915/intel_dp.c
··· 4463 4463 intel_dp_detect(struct drm_connector *connector, bool force) 4464 4464 { 4465 4465 struct intel_dp *intel_dp = intel_attached_dp(connector); 4466 - struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); 4467 - struct intel_encoder *intel_encoder = &intel_dig_port->base; 4468 4466 enum drm_connector_status status = connector->status; 4469 4467 4470 4468 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", 4471 4469 connector->base.id, connector->name); 4472 - 4473 - if (intel_dp->is_mst) { 4474 - /* MST devices are disconnected from a monitor POV */ 4475 - intel_dp_unset_edid(intel_dp); 4476 - if (intel_encoder->type != INTEL_OUTPUT_EDP) 4477 - intel_encoder->type = INTEL_OUTPUT_DP; 4478 - return connector_status_disconnected; 4479 - } 4480 4470 4481 4471 /* If full detect is not performed yet, do a full detect */ 4482 4472 if (!intel_dp->detect_done)