aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-12-11 05:46:29 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-12-11 06:53:50 -0500
commit335c07b7982eff480afdf8c9b25225511dd07031 (patch)
tree13814c13ad49b68bb1a2d930bad14a30cc5fc241
parent539526b4137bc0e7a8806c38c8522f226814a0e6 (diff)
drm/i915: Fix shifted screen on top of LVDS on IVY laptop
The commit [23670b322: drm/i915: CPT+ pch transcoder workaround] caused a regression on some HP laptops with IvyBridge. The whole laptop screen is shifted downward for a few pixels constantly. The problem appears only on LVDS while DP and VGA seem unaffected. Also, the problem disappears once when go and back from S3. (S4 resume still shows the same problem.) This patch revives the minimum part the commit above dropped. For fixing this regression, only the setup of CHICKEN2 bit in cpt_init_clock_gating() is needed. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 522ff05e3789..42839fc73499 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3453,6 +3453,11 @@ static void cpt_init_clock_gating(struct drm_device *dev)
3453 I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE); 3453 I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE);
3454 I915_WRITE(SOUTH_CHICKEN2, I915_READ(SOUTH_CHICKEN2) | 3454 I915_WRITE(SOUTH_CHICKEN2, I915_READ(SOUTH_CHICKEN2) |
3455 DPLS_EDP_PPS_FIX_DIS); 3455 DPLS_EDP_PPS_FIX_DIS);
3456 /* The below fixes the weird display corruption, a few pixels shifted
3457 * downward, on (only) LVDS of some HP laptops with IVY.
3458 */
3459 for_each_pipe(pipe)
3460 I915_WRITE(TRANS_CHICKEN2(pipe), TRANS_CHICKEN2_TIMING_OVERRIDE);
3456 /* WADP0ClockGatingDisable */ 3461 /* WADP0ClockGatingDisable */
3457 for_each_pipe(pipe) { 3462 for_each_pipe(pipe) {
3458 I915_WRITE(TRANS_CHICKEN1(pipe), 3463 I915_WRITE(TRANS_CHICKEN1(pipe),