aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>2018-09-27 16:57:31 -0400
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>2018-10-24 06:48:12 -0400
commitf9776280c29e77a18cbc7ebb6d48f7885e494990 (patch)
tree0c492e3de15507427b9cd652b072a3b1708931b0
parent49af5d95b9b3c21a84ad115a9db9acbc036d849a (diff)
drm/i915/dp: Restrict link retrain workaround to external monitors
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 synchronized. 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>
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index e2a1af0a3492..13f9b56a9ce7 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5102,12 +5102,13 @@ intel_dp_long_pulse(struct intel_connector *connector,
5102 */ 5102 */
5103 status = connector_status_disconnected; 5103 status = connector_status_disconnected;
5104 goto out; 5104 goto out;
5105 } else { 5105 }
5106 /* 5106
5107 * Some external monitors do not signal loss of link 5107 /*
5108 * synchronization with an IRQ_HPD, so force a link status 5108 * Some external monitors do not signal loss of link synchronization
5109 * check. 5109 * with an IRQ_HPD, so force a link status check.
5110 */ 5110 */
5111 if (!intel_dp_is_edp(intel_dp)) {
5111 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; 5112 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
5112 5113
5113 intel_dp_retrain_link(encoder, ctx); 5114 intel_dp_retrain_link(encoder, ctx);