diff options
author | Armin Reese <armin.c.reese@intel.com> | 2012-03-30 19:20:16 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-04-17 11:54:51 -0400 |
commit | 446f254566ea8911c9e19c7bc8a162fc0e53cf31 (patch) | |
tree | 22c60cf8cf85a7e87676780faeca086dafbb2596 /drivers/gpu/drm/i915/intel_sprite.c | |
parent | 83de97c885b633ab6d12346a406911fadeb85f8c (diff) |
drm/i915: Mask reserved bits in display/sprite address registers
The purpose of this patch is to avoid zeroing the lower 12 reserved bits
of surface base address registers (framebuffer & sprite). There are bits
in that range that may occasionally be set by BIOS or by other components.
Signed-off-by: Armin Reese <armin.c.reese@intel.com>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sprite.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_sprite.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index 987800a0234f..fbf03b996587 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c | |||
@@ -133,7 +133,7 @@ ivb_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb, | |||
133 | I915_WRITE(SPRSIZE(pipe), (crtc_h << 16) | crtc_w); | 133 | I915_WRITE(SPRSIZE(pipe), (crtc_h << 16) | crtc_w); |
134 | I915_WRITE(SPRSCALE(pipe), sprscale); | 134 | I915_WRITE(SPRSCALE(pipe), sprscale); |
135 | I915_WRITE(SPRCTL(pipe), sprctl); | 135 | I915_WRITE(SPRCTL(pipe), sprctl); |
136 | I915_WRITE(SPRSURF(pipe), obj->gtt_offset); | 136 | I915_MODIFY_DISPBASE(SPRSURF(pipe), obj->gtt_offset); |
137 | POSTING_READ(SPRSURF(pipe)); | 137 | POSTING_READ(SPRSURF(pipe)); |
138 | } | 138 | } |
139 | 139 | ||
@@ -149,7 +149,7 @@ ivb_disable_plane(struct drm_plane *plane) | |||
149 | /* Can't leave the scaler enabled... */ | 149 | /* Can't leave the scaler enabled... */ |
150 | I915_WRITE(SPRSCALE(pipe), 0); | 150 | I915_WRITE(SPRSCALE(pipe), 0); |
151 | /* Activate double buffered register update */ | 151 | /* Activate double buffered register update */ |
152 | I915_WRITE(SPRSURF(pipe), 0); | 152 | I915_MODIFY_DISPBASE(SPRSURF(pipe), 0); |
153 | POSTING_READ(SPRSURF(pipe)); | 153 | POSTING_READ(SPRSURF(pipe)); |
154 | } | 154 | } |
155 | 155 | ||
@@ -291,7 +291,7 @@ ilk_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb, | |||
291 | I915_WRITE(DVSSIZE(pipe), (crtc_h << 16) | crtc_w); | 291 | I915_WRITE(DVSSIZE(pipe), (crtc_h << 16) | crtc_w); |
292 | I915_WRITE(DVSSCALE(pipe), dvsscale); | 292 | I915_WRITE(DVSSCALE(pipe), dvsscale); |
293 | I915_WRITE(DVSCNTR(pipe), dvscntr); | 293 | I915_WRITE(DVSCNTR(pipe), dvscntr); |
294 | I915_WRITE(DVSSURF(pipe), obj->gtt_offset); | 294 | I915_MODIFY_DISPBASE(DVSSURF(pipe), obj->gtt_offset); |
295 | POSTING_READ(DVSSURF(pipe)); | 295 | POSTING_READ(DVSSURF(pipe)); |
296 | } | 296 | } |
297 | 297 | ||
@@ -307,7 +307,7 @@ ilk_disable_plane(struct drm_plane *plane) | |||
307 | /* Disable the scaler */ | 307 | /* Disable the scaler */ |
308 | I915_WRITE(DVSSCALE(pipe), 0); | 308 | I915_WRITE(DVSSCALE(pipe), 0); |
309 | /* Flush double buffered register updates */ | 309 | /* Flush double buffered register updates */ |
310 | I915_WRITE(DVSSURF(pipe), 0); | 310 | I915_MODIFY_DISPBASE(DVSSURF(pipe), 0); |
311 | POSTING_READ(DVSSURF(pipe)); | 311 | POSTING_READ(DVSSURF(pipe)); |
312 | } | 312 | } |
313 | 313 | ||