[Intel-gfx] [PATCH 1/8] drm/i915/dp: retry link status read 3 times on failure
Jesse Barnes
jbarnes at virtuousgeek.org
Sat Jul 2 00:22:51 CEST 2011
Especially after a hotplug or power status change, the sink may not
reply immediately to a link status query. So retry 3 times per the spec
to really make sure nothing is there.
Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
---
drivers/gpu/drm/i915/intel_dp.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 391b55f..1829ecc 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1019,13 +1019,22 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
static bool
intel_dp_get_link_status(struct intel_dp *intel_dp)
{
- int ret;
+ int ret, i;
+
+ /* Must try AUX reads for this at least 3 times */
+ for (i = 0; i < 3; i++) {
+ ret = intel_dp_aux_native_read(intel_dp,
+ DP_LANE0_1_STATUS,
+ intel_dp->link_status,
+ DP_LINK_STATUS_SIZE);
+ if (ret == DP_LINK_STATUS_SIZE)
+ break;
+ msleep(1);
+ }
- ret = intel_dp_aux_native_read(intel_dp,
- DP_LANE0_1_STATUS,
- intel_dp->link_status, DP_LINK_STATUS_SIZE);
if (ret != DP_LINK_STATUS_SIZE)
return false;
+
return true;
}
--
1.7.4.1
More information about the Intel-gfx
mailing list