diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-08-07 06:01:29 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-08-09 14:24:34 -0400 |
commit | 20a0945951705246278f43641bb13611c030e112 (patch) | |
tree | 89c998fd588361566b3a6ff60c1111dab165c7f9 | |
parent | 1d8e1c75ffa84400758aef9cc59298920b8801f9 (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.c | 6 |
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); |