diff mbox

[v2] drm/i915: Fix shifted screen on top of LVDS on IVY laptop

Message ID s5hpq2glvcq.wl%tiwai@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Takashi Iwai Dec. 11, 2012, 10:46 a.m. UTC
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>
---
v1->v2: subject changed, more comments and changelog

 drivers/gpu/drm/i915/intel_pm.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Daniel Vetter Dec. 11, 2012, 11:54 a.m. UTC | #1
On Tue, Dec 11, 2012 at 11:46:29AM +0100, Takashi Iwai wrote:
> 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>

Picked up for -fixes, thanks for the patch.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 58c2f21..3e3021d 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3446,6 +3446,11 @@  static void cpt_init_clock_gating(struct drm_device *dev)
 	I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE);
 	I915_WRITE(SOUTH_CHICKEN2, I915_READ(SOUTH_CHICKEN2) |
 		   DPLS_EDP_PPS_FIX_DIS);
+	/* The below fixes the weird display corruption, a few pixels shifted
+	 * downward, on (only) LVDS of some HP laptops with IVY.
+	 */
+	for_each_pipe(pipe)
+		I915_WRITE(TRANS_CHICKEN2(pipe), TRANS_CHICKEN2_TIMING_OVERRIDE);
 	/* WADP0ClockGatingDisable */
 	for_each_pipe(pipe) {
 		I915_WRITE(TRANS_CHICKEN1(pipe),