--- linux-3.13-rc4/drivers/gpu/drm/i915/intel_dp.c 2013-12-15 21:31:33.000000000 +0100 +++ linux-3.13-rc4-patched/drivers/gpu/drm/i915/intel_dp.c 2013-12-21 17:31:48.268440224 +0100 @@ -555,7 +555,7 @@ if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) break; else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) - udelay(100); + udelay(500); else return -EIO; } @@ -1164,6 +1164,15 @@ intel_dp->want_panel_vdd = false; + if (cancel_delayed_work(&intel_dp->panel_vdd_work)) { + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + mutex_unlock(&dev->mode_config.mutex); + cancel_delayed_work_sync(&intel_dp->panel_vdd_work); + mutex_lock(&dev->mode_config.mutex); + } + + if (sync) { ironlake_panel_vdd_off_sync(intel_dp); } else { @@ -2158,6 +2158,7 @@ intel_get_adjust_train(struct intel_dp *intel_dp, v = this_v; if (this_p > p) p = this_p; + udelay(300); } voltage_max = intel_dp_voltage_max(intel_dp);