@@ -203,7 +203,9 @@ void hsw_fdi_link_train(struct drm_crtc *crtc)
rx_ctl_val |= FDI_RX_ENABLE | FDI_LINK_TRAIN_AUTO;
I915_WRITE(_FDI_RXA_CTL, rx_ctl_val);
POSTING_READ(_FDI_RXA_CTL);
- udelay(100);
+
+ /* Wait for FDI receiver lane calibration */
+ udelay(30);
/* Program FDI_RX_MISC pwrdn lanes */
temp = I915_READ(_FDI_RXA_MISC);
@@ -211,6 +213,9 @@ void hsw_fdi_link_train(struct drm_crtc *crtc)
I915_WRITE(_FDI_RXA_MISC, temp);
POSTING_READ(_FDI_RXA_MISC);
+ /* Wait for FDI auto training time */
+ udelay(5);
+
temp = I915_READ(DP_TP_STATUS(PORT_E));
if (temp & DP_TP_STATUS_AUTOTRAIN_DONE) {
DRM_DEBUG_DRIVER("BUF_CTL training done on %d step\n", i);