diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-09-26 11:48:30 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-10-04 04:33:41 -0400 |
commit | 2477367083b3eaa97f87993ab26627a02f350551 (patch) | |
tree | 0bdf7aff7dc85eb820a82ef9d5296c403bb26c71 | |
parent | 7f6613412c0bf5945a78967e92bdcb00394215f4 (diff) |
drm/i915: Try harder to complete DP training pattern 1
In commit cdb0e95bf571dccc1f75fef9bdad21b167ef0b37
Author: Keith Packard <keithp@keithp.com>
Date: Tue Nov 1 20:00:06 2011 -0700
drm/i915: Try harder during dp pattern 1 link training
extra passes were made to retry the same voltage and then retry a full
clock reset. However, as coverity pointed out, we never tried the full
clock reset as we broke out of the loop early.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index c63f54e84847..c14d407d41e8 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -1798,8 +1798,7 @@ intel_dp_start_link_train(struct intel_dp *intel_dp) | |||
1798 | if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) | 1798 | if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) |
1799 | break; | 1799 | break; |
1800 | if (i == intel_dp->lane_count && voltage_tries == 5) { | 1800 | if (i == intel_dp->lane_count && voltage_tries == 5) { |
1801 | ++loop_tries; | 1801 | if (++loop_tries == 5) { |
1802 | if (loop_tries == 5) { | ||
1803 | DRM_DEBUG_KMS("too many full retries, give up\n"); | 1802 | DRM_DEBUG_KMS("too many full retries, give up\n"); |
1804 | break; | 1803 | break; |
1805 | } | 1804 | } |
@@ -1809,15 +1808,11 @@ intel_dp_start_link_train(struct intel_dp *intel_dp) | |||
1809 | } | 1808 | } |
1810 | 1809 | ||
1811 | /* Check to see if we've tried the same voltage 5 times */ | 1810 | /* Check to see if we've tried the same voltage 5 times */ |
1812 | if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) { | 1811 | if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) != voltage) { |
1813 | ++voltage_tries; | 1812 | voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; |
1814 | if (voltage_tries == 5) { | ||
1815 | DRM_DEBUG_KMS("too many voltage retries, give up\n"); | ||
1816 | break; | ||
1817 | } | ||
1818 | } else | ||
1819 | voltage_tries = 0; | 1813 | voltage_tries = 0; |
1820 | voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; | 1814 | } else |
1815 | ++voltage_tries; | ||
1821 | 1816 | ||
1822 | /* Compute new intel_dp->train_set as requested by target */ | 1817 | /* Compute new intel_dp->train_set as requested by target */ |
1823 | intel_get_adjust_train(intel_dp, link_status); | 1818 | intel_get_adjust_train(intel_dp, link_status); |