aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/intel_dp.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-08-03 10:41:19 -0700
committerKeith Packard <keithp@keithp.com>2011-08-03 10:41:19 -0700
commit3d208bef113657e27f8731921454d6da408b76c5 (patch)
tree8918890a296cefe35ada0bf813f6a30fdb8121b9 /drivers/gpu/drm/i915/intel_dp.c
parent62ac41a6e443ef26b9de862c6e20c088e2b04dde (diff)
parent4edd17a25c99f34bd7a75c1daf31afe840237da8 (diff)
Merge branch 'drm-intel-fixes' into drm-intel-next
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 84bfdd1434f..0feae908bb3 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -317,9 +317,17 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
else
precharge = 5;
- if (I915_READ(ch_ctl) & DP_AUX_CH_CTL_SEND_BUSY) {
- DRM_ERROR("dp_aux_ch not started status 0x%08x\n",
- I915_READ(ch_ctl));
+ /* Try to wait for any previous AUX channel activity */
+ for (try = 0; try < 3; try++) {
+ status = I915_READ(ch_ctl);
+ if ((status & DP_AUX_CH_CTL_SEND_BUSY) == 0)
+ break;
+ msleep(1);
+ }
+
+ if (try == 3) {
+ WARN(1, "dp_aux_ch not started status 0x%08x\n",
+ I915_READ(ch_ctl));
return -EBUSY;
}
@@ -1690,7 +1698,6 @@ intel_dp_detect(struct drm_connector *connector, bool force)
struct edid *edid = NULL;
intel_dp->has_audio = false;
- memset(intel_dp->dpcd, 0, sizeof(intel_dp->dpcd));
if (HAS_PCH_SPLIT(dev))
status = ironlake_dp_detect(intel_dp);