[PATCH 09/23] drm/i915: Move FEC enable timeout wait to enable_ddi_dp

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Thu Sep 12 13:00:55 UTC 2019


Even without bigjoiner I get a timeout when enabling FEC.
It seems that DP-MST waits for ACT in enable_dp() so we
could postpone it.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 47ce94fd740e..02264fd36223 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3177,10 +3177,6 @@ static void intel_ddi_enable_fec(struct intel_encoder *encoder,
 	val = I915_READ(intel_dp->regs.dp_tp_ctl);
 	val |= DP_TP_CTL_FEC_ENABLE;
 	I915_WRITE(intel_dp->regs.dp_tp_ctl, val);
-
-	if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status,
-				  DP_TP_STATUS_FEC_ENABLE_LIVE, 1))
-		DRM_ERROR("Timed out waiting for FEC Enable Status\n");
 }
 
 static void intel_ddi_disable_fec_state(struct intel_encoder *encoder,
@@ -3621,6 +3617,11 @@ static void intel_enable_ddi_dp(struct intel_encoder *encoder,
 	if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
 		intel_dp_stop_link_train(intel_dp);
 
+	if (crtc_state->fec_enable &&
+	    intel_de_wait_for_set(dev_priv, DP_TP_STATUS(port),
+				  DP_TP_STATUS_FEC_ENABLE_LIVE, 1))
+		DRM_ERROR("Timed out waiting for FEC Enable Status\n");
+
 	intel_edp_backlight_on(crtc_state, conn_state);
 	intel_psr_enable(intel_dp, crtc_state);
 	intel_dp_ycbcr_420_enable(intel_dp, crtc_state);
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list