drm/i915/dp: Restrict link retrain workaround to external monitors
authorDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Thu, 27 Sep 2018 20:57:31 +0000 (13:57 -0700)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Wed, 24 Oct 2018 10:48:12 +0000 (13:48 +0300)
Commit '3cf71bc9904d ("drm/i915: Re-apply "Perform link quality check,
unconditionally during long pulse"")' applies a work around for sinks
that don't signal link loss. The work around does not need to have to be
that broad as the issue was seen with only one particular monitor; limit
this only for external displays as eDP features like PSR turn off the link
and the driver ends up retraining the link seeeing that link is not

Cc: Lyude Paul <lyude@redhat.com>
Cc: Jan-Marek Glogowski <glogow@fbihome.de>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
References: 3cf71bc9904d ("drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"")
Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180927205735.16651-2-dhinakaran.pandiyan@intel.com
(cherry picked from commit f24f6eb95807bca0dbd8dc5b2f3a4099000f4472)
Fixes: 399334708b4f ("drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"")
Cc: stable@vger.kernel.org
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>

index e2a1af0a349282a18894b2fa1154cccb69746cea..13f9b56a9ce7ca711467fc9309b720f8d9565661 100644 (file)
@@ -5102,12 +5102,13 @@ intel_dp_long_pulse(struct intel_connector *connector,
                status = connector_status_disconnected;
                goto out;
-       } else {
-               /*
-                * Some external monitors do not signal loss of link
-                * synchronization with an IRQ_HPD, so force a link status
-                * check.
-                */
+       }
+       /*
+        * Some external monitors do not signal loss of link synchronization
+        * with an IRQ_HPD, so force a link status check.
+        */
+       if (!intel_dp_is_edp(intel_dp)) {
                struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
                intel_dp_retrain_link(encoder, ctx);