[Intel-gfx] [PATCH] drm/i915: Don't write DSPSURF for old chips

Chris Wilson chris at chris-wilson.co.uk
Mon Feb 27 13:17:57 CET 2012

On Mon, 27 Feb 2012 12:39:24 +0100, Takashi Iwai <tiwai at suse.de> wrote:
> It seems that writing DSPSURF in intel_flush_display_plane() causes
> the blank screen on some old laptops like Dell D630 with 965GM.
> Since this operation is needed only for ILK+, make it conditional.

The specs say that DSPASURF is the latch register for updates of the DSPA
registers on gen4 (including 965gm) as well. Presumably the bug is that
we only partially update the DSPA registers prior to the first call to
intel_flush_display_plane() which this papers over by disabling the
update until a valid address is written to DSPASURF. And there is such a
spurious call to intel_enable_plane() prior to us setting a valid
scanout surface:

diff --git a/drivers/gpu/drm/i915/intel_display.c
index 66b19d3..ea8e4a1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5453,7 +5453,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc
        I915_WRITE(DSPCNTR(plane), dspcntr);
-       intel_enable_plane(dev_priv, plane, pipe);
        ret = intel_pipe_set_base(crtc, x, y, old_fb);


Chris Wilson, Intel Open Source Technology Centre

More information about the Intel-gfx mailing list