aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-08-07 06:01:29 -0400
committerEric Anholt <eric@anholt.net>2010-08-09 14:24:34 -0400
commit20a0945951705246278f43641bb13611c030e112 (patch)
tree89c998fd588361566b3a6ff60c1111dab165c7f9
parent1d8e1c75ffa84400758aef9cc59298920b8801f9 (diff)
drm/i915: Write to display base last.
Writing to the DSPBASE register triggers the double-buffered update to all the control registers, so always write it last in the update sequence. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 25e3866f9159..874ae30d5e4a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1585,15 +1585,13 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
1585 Start, Offset, x, y, crtc->fb->pitch); 1585 Start, Offset, x, y, crtc->fb->pitch);
1586 I915_WRITE(dspstride, crtc->fb->pitch); 1586 I915_WRITE(dspstride, crtc->fb->pitch);
1587 if (IS_I965G(dev)) { 1587 if (IS_I965G(dev)) {
1588 I915_WRITE(dspbase, Offset);
1589 I915_READ(dspbase);
1590 I915_WRITE(dspsurf, Start); 1588 I915_WRITE(dspsurf, Start);
1591 I915_READ(dspsurf);
1592 I915_WRITE(dsptileoff, (y << 16) | x); 1589 I915_WRITE(dsptileoff, (y << 16) | x);
1590 I915_WRITE(dspbase, Offset);
1593 } else { 1591 } else {
1594 I915_WRITE(dspbase, Start + Offset); 1592 I915_WRITE(dspbase, Start + Offset);
1595 I915_READ(dspbase);
1596 } 1593 }
1594 POSTING_READ(dspbase);
1597 1595
1598 if ((IS_I965G(dev) || plane == 0)) 1596 if ((IS_I965G(dev) || plane == 0))
1599 intel_update_fbc(crtc, &crtc->mode); 1597 intel_update_fbc(crtc, &crtc->mode);