lkml.org 
[lkml]   [2010]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] Revert "drm/i915: fix vblank wait test condition"
On Sat, 4 Sep 2010, Pekka Enberg wrote:
> On Sat,  4 Sep 2010 11:17:14 +0300, Pekka Enberg <penberg@kernel.org> wrote:
> >> This reverts commit 9559fcdbff4f93d29af04478bbc48294519424f5. The commit causes
> >> wrong screen resolution on some i915 machines such as MacBook which is a
> >> regression from 2.6.35. The issue has been reported multiple times but no fix
> >> has emerged:
>
> On Sat, Sep 4, 2010 at 12:21 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > NAK. You can't simply hide one bug by introducing a much bigger one.
>
> Dude, it's a nasty regression from 2.6.35. What exactly are you NAK'ing here?
>
> > As you have an affected machine, find which wait_for_vblank() needs to be
> > replaced with a msleep(20|50).
>
> The attached patch fixes things here. I'm not a drm developer so I
> don't know if it makes technical sense.

Many thanks to you, Pekka: I also don't know if it makes technical sense,
but it solves the same issue for me, so I can at last use 2.6.36-rc on
this laptop. I sure hope this or an equivalent makes it into -rc4.

Hugh

From 53e5840a6abb50f12f9d2b32efa2a472b203d52f Mon Sep 17 00:00:00 2001
From: Pekka Enberg <penberg@kernel.org>
Date: Sat, 4 Sep 2010 19:24:04 +0300
Subject: [PATCH] i915: Fix wrong resolution after boot problem

Signed-off-by: Pekka Enberg <penberg@kernel.org>
---
drivers/gpu/drm/i915/intel_tv.c | 5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index d2029ef..7784ff8 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1231,7 +1231,6 @@ intel_tv_detect_type (struct intel_tv *intel_tv)
struct drm_encoder *encoder = &intel_tv->base.enc;
struct drm_device *dev = encoder->dev;
struct drm_i915_private *dev_priv = dev->dev_private;
- struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
unsigned long irqflags;
u32 tv_ctl, save_tv_ctl;
u32 tv_dac, save_tv_dac;
@@ -1268,11 +1267,11 @@ intel_tv_detect_type (struct intel_tv *intel_tv)
DAC_C_0_7_V);
I915_WRITE(TV_CTL, tv_ctl);
I915_WRITE(TV_DAC, tv_dac);
- intel_wait_for_vblank(dev, intel_crtc->pipe);
+ msleep(20);
tv_dac = I915_READ(TV_DAC);
I915_WRITE(TV_DAC, save_tv_dac);
I915_WRITE(TV_CTL, save_tv_ctl);
- intel_wait_for_vblank(dev, intel_crtc->pipe);
+ msleep(20);
/*
* A B C
* 0 1 1 Composite
--
1.6.3.3
\
 
 \ /
  Last update: 2010-09-04 21:57    [W:0.049 / U:0.476 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site