aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c3
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h7
-rw-r--r--drivers/gpu/drm/i915/intel_display.c4
-rw-r--r--drivers/gpu/drm/i915/intel_sprite.c8
4 files changed, 15 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 967b92eaf797..ab023ca73b45 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1368,7 +1368,8 @@ static void i915_pageflip_stall_check(struct drm_device *dev, int pipe)
1368 obj = work->pending_flip_obj; 1368 obj = work->pending_flip_obj;
1369 if (INTEL_INFO(dev)->gen >= 4) { 1369 if (INTEL_INFO(dev)->gen >= 4) {
1370 int dspsurf = DSPSURF(intel_crtc->plane); 1370 int dspsurf = DSPSURF(intel_crtc->plane);
1371 stall_detected = I915_READ(dspsurf) == obj->gtt_offset; 1371 stall_detected = I915_HI_DISPBASE(I915_READ(dspsurf)) ==
1372 obj->gtt_offset;
1372 } else { 1373 } else {
1373 int dspaddr = DSPADDR(intel_crtc->plane); 1374 int dspaddr = DSPADDR(intel_crtc->plane);
1374 stall_detected = I915_READ(dspaddr) == (obj->gtt_offset + 1375 stall_detected = I915_READ(dspaddr) == (obj->gtt_offset +
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0668815d05d7..d093dba8224b 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2869,6 +2869,13 @@
2869#define DSPSURF(plane) _PIPE(plane, _DSPASURF, _DSPBSURF) 2869#define DSPSURF(plane) _PIPE(plane, _DSPASURF, _DSPBSURF)
2870#define DSPTILEOFF(plane) _PIPE(plane, _DSPATILEOFF, _DSPBTILEOFF) 2870#define DSPTILEOFF(plane) _PIPE(plane, _DSPATILEOFF, _DSPBTILEOFF)
2871 2871
2872/* Display/Sprite base address macros */
2873#define DISP_BASEADDR_MASK (0xfffff000)
2874#define I915_LO_DISPBASE(val) (val & ~DISP_BASEADDR_MASK)
2875#define I915_HI_DISPBASE(val) (val & DISP_BASEADDR_MASK)
2876#define I915_MODIFY_DISPBASE(reg, gfx_addr) \
2877 (I915_WRITE(reg, gfx_addr | I915_LO_DISPBASE(I915_READ(reg))))
2878
2872/* VBIOS flags */ 2879/* VBIOS flags */
2873#define SWF00 0x71410 2880#define SWF00 0x71410
2874#define SWF01 0x71414 2881#define SWF01 0x71414
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 02e9932c3774..eb7ebf49f97e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2236,7 +2236,7 @@ static int i9xx_update_plane(struct drm_crtc *crtc, struct drm_framebuffer *fb,
2236 Start, Offset, x, y, fb->pitches[0]); 2236 Start, Offset, x, y, fb->pitches[0]);
2237 I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); 2237 I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]);
2238 if (INTEL_INFO(dev)->gen >= 4) { 2238 if (INTEL_INFO(dev)->gen >= 4) {
2239 I915_WRITE(DSPSURF(plane), Start); 2239 I915_MODIFY_DISPBASE(DSPSURF(plane), Start);
2240 I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); 2240 I915_WRITE(DSPTILEOFF(plane), (y << 16) | x);
2241 I915_WRITE(DSPADDR(plane), Offset); 2241 I915_WRITE(DSPADDR(plane), Offset);
2242 } else 2242 } else
@@ -2316,7 +2316,7 @@ static int ironlake_update_plane(struct drm_crtc *crtc,
2316 DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", 2316 DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n",
2317 Start, Offset, x, y, fb->pitches[0]); 2317 Start, Offset, x, y, fb->pitches[0]);
2318 I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); 2318 I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]);
2319 I915_WRITE(DSPSURF(plane), Start); 2319 I915_MODIFY_DISPBASE(DSPSURF(plane), Start);
2320 I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); 2320 I915_WRITE(DSPTILEOFF(plane), (y << 16) | x);
2321 I915_WRITE(DSPADDR(plane), Offset); 2321 I915_WRITE(DSPADDR(plane), Offset);
2322 POSTING_READ(reg); 2322 POSTING_READ(reg);
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