| From 6b4e0a93ff6e45714c72bdce193f719ed94810e3 Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Thu, 14 Jun 2012 22:15:00 +0200 |
| Subject: Revert "drm/i915/dp: Use auxch precharge value of 5 everywhere" |
| |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| |
| commit 6b4e0a93ff6e45714c72bdce193f719ed94810e3 upstream. |
| |
| This reverts commit 092945e11c5b84f66dd08f0b87fb729715d377bc. |
| |
| This commit prevents a DP screen from properly training the link. |
| Oddly enough it works, once the machine has been warm-booted with an |
| older kernel. |
| |
| According to DP docs this _should_ have been the right precharge time. |
| Also, the commit that originally introduces this was just general snb |
| DP enabling and didn't mention any specific reason for this special |
| value. Whatever, trust the reporter that this makes things worse and |
| let's just revert it. |
| |
| v2: Less spelling fail. |
| |
| Reviewed-by: Adam Jackson <ajax@redhat.com> |
| Cc: Jesse Barnes <jbarnes@virtuousgeek.org> |
| Reported-by: "Wouter M. Koolen" <W.M.Koolen-Wijkstra@cwi.nl> |
| Buglink: https://lkml.org/lkml/2012/6/14/301 |
| Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_dp.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/i915/intel_dp.c |
| +++ b/drivers/gpu/drm/i915/intel_dp.c |
| @@ -368,7 +368,7 @@ intel_dp_aux_ch(struct intel_dp *intel_d |
| int recv_bytes; |
| uint32_t status; |
| uint32_t aux_clock_divider; |
| - int try, precharge = 5; |
| + int try, precharge; |
| |
| intel_dp_check_edp(intel_dp); |
| /* The clock divider is based off the hrawclk, |
| @@ -388,6 +388,11 @@ intel_dp_aux_ch(struct intel_dp *intel_d |
| else |
| aux_clock_divider = intel_hrawclk(dev) / 2; |
| |
| + if (IS_GEN6(dev)) |
| + precharge = 3; |
| + else |
| + precharge = 5; |
| + |
| /* Try to wait for any previous AUX channel activity */ |
| for (try = 0; try < 3; try++) { |
| status = I915_READ(ch_ctl); |