diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index aaa9a752b7b6..a45bb92f35ad 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -1980,16 +1980,17 @@ static int i9xx_update_plane(struct drm_crtc *crtc, struct drm_framebuffer *fb, | |||
1980 | intel_crtc->dspaddr_offset = linear_offset; | 1980 | intel_crtc->dspaddr_offset = linear_offset; |
1981 | } | 1981 | } |
1982 | 1982 | ||
1983 | DRM_DEBUG_KMS("Writing base %08X %08lX %d %d %d\n", | 1983 | DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", |
1984 | obj->gtt_offset, linear_offset, x, y, fb->pitches[0]); | 1984 | i915_gem_obj_ggtt_offset(obj), linear_offset, x, y, |
1985 | fb->pitches[0]); | ||
1985 | I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); | 1986 | I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); |
1986 | if (INTEL_INFO(dev)->gen >= 4) { | 1987 | if (INTEL_INFO(dev)->gen >= 4) { |
1987 | I915_MODIFY_DISPBASE(DSPSURF(plane), | 1988 | I915_MODIFY_DISPBASE(DSPSURF(plane), |
1988 | obj->gtt_offset + intel_crtc->dspaddr_offset); | 1989 | i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset); |
1989 | I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); | 1990 | I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); |
1990 | I915_WRITE(DSPLINOFF(plane), linear_offset); | 1991 | I915_WRITE(DSPLINOFF(plane), linear_offset); |
1991 | } else | 1992 | } else |
1992 | I915_WRITE(DSPADDR(plane), obj->gtt_offset + linear_offset); | 1993 | I915_WRITE(DSPADDR(plane), i915_gem_obj_ggtt_offset(obj) + linear_offset); |
1993 | POSTING_READ(reg); | 1994 | POSTING_READ(reg); |
1994 | 1995 | ||
1995 | return 0; | 1996 | return 0; |
@@ -2069,11 +2070,12 @@ static int ironlake_update_plane(struct drm_crtc *crtc, | |||
2069 | fb->pitches[0]); | 2070 | fb->pitches[0]); |
2070 | linear_offset -= intel_crtc->dspaddr_offset; | 2071 | linear_offset -= intel_crtc->dspaddr_offset; |
2071 | 2072 | ||
2072 | DRM_DEBUG_KMS("Writing base %08X %08lX %d %d %d\n", | 2073 | DRM_DEBUG_KMS("Writing base %08lX %08lX %d %d %d\n", |
2073 | obj->gtt_offset, linear_offset, x, y, fb->pitches[0]); | 2074 | i915_gem_obj_ggtt_offset(obj), linear_offset, x, y, |
2075 | fb->pitches[0]); | ||
2074 | I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); | 2076 | I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); |
2075 | I915_MODIFY_DISPBASE(DSPSURF(plane), | 2077 | I915_MODIFY_DISPBASE(DSPSURF(plane), |
2076 | obj->gtt_offset + intel_crtc->dspaddr_offset); | 2078 | i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset); |
2077 | if (IS_HASWELL(dev)) { | 2079 | if (IS_HASWELL(dev)) { |
2078 | I915_WRITE(DSPOFFSET(plane), (y << 16) | x); | 2080 | I915_WRITE(DSPOFFSET(plane), (y << 16) | x); |
2079 | } else { | 2081 | } else { |
@@ -6567,7 +6569,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc, | |||
6567 | goto fail_unpin; | 6569 | goto fail_unpin; |
6568 | } | 6570 | } |
6569 | 6571 | ||
6570 | addr = obj->gtt_offset; | 6572 | addr = i915_gem_obj_ggtt_offset(obj); |
6571 | } else { | 6573 | } else { |
6572 | int align = IS_I830(dev) ? 16 * 1024 : 256; | 6574 | int align = IS_I830(dev) ? 16 * 1024 : 256; |
6573 | ret = i915_gem_attach_phys_object(dev, obj, | 6575 | ret = i915_gem_attach_phys_object(dev, obj, |
@@ -7339,7 +7341,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev, | |||
7339 | intel_ring_emit(ring, MI_DISPLAY_FLIP | | 7341 | intel_ring_emit(ring, MI_DISPLAY_FLIP | |
7340 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7342 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7341 | intel_ring_emit(ring, fb->pitches[0]); | 7343 | intel_ring_emit(ring, fb->pitches[0]); |
7342 | intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); | 7344 | intel_ring_emit(ring, i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset); |
7343 | intel_ring_emit(ring, 0); /* aux display base address, unused */ | 7345 | intel_ring_emit(ring, 0); /* aux display base address, unused */ |
7344 | 7346 | ||
7345 | intel_mark_page_flip_active(intel_crtc); | 7347 | intel_mark_page_flip_active(intel_crtc); |
@@ -7380,7 +7382,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev, | |||
7380 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | | 7382 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | |
7381 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7383 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7382 | intel_ring_emit(ring, fb->pitches[0]); | 7384 | intel_ring_emit(ring, fb->pitches[0]); |
7383 | intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); | 7385 | intel_ring_emit(ring, i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset); |
7384 | intel_ring_emit(ring, MI_NOOP); | 7386 | intel_ring_emit(ring, MI_NOOP); |
7385 | 7387 | ||
7386 | intel_mark_page_flip_active(intel_crtc); | 7388 | intel_mark_page_flip_active(intel_crtc); |
@@ -7420,7 +7422,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev, | |||
7420 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7422 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7421 | intel_ring_emit(ring, fb->pitches[0]); | 7423 | intel_ring_emit(ring, fb->pitches[0]); |
7422 | intel_ring_emit(ring, | 7424 | intel_ring_emit(ring, |
7423 | (obj->gtt_offset + intel_crtc->dspaddr_offset) | | 7425 | (i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset) | |
7424 | obj->tiling_mode); | 7426 | obj->tiling_mode); |
7425 | 7427 | ||
7426 | /* XXX Enabling the panel-fitter across page-flip is so far | 7428 | /* XXX Enabling the panel-fitter across page-flip is so far |
@@ -7463,7 +7465,7 @@ static int intel_gen6_queue_flip(struct drm_device *dev, | |||
7463 | intel_ring_emit(ring, MI_DISPLAY_FLIP | | 7465 | intel_ring_emit(ring, MI_DISPLAY_FLIP | |
7464 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); | 7466 | MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); |
7465 | intel_ring_emit(ring, fb->pitches[0] | obj->tiling_mode); | 7467 | intel_ring_emit(ring, fb->pitches[0] | obj->tiling_mode); |
7466 | intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); | 7468 | intel_ring_emit(ring, i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset); |
7467 | 7469 | ||
7468 | /* Contrary to the suggestions in the documentation, | 7470 | /* Contrary to the suggestions in the documentation, |
7469 | * "Enable Panel Fitter" does not seem to be required when page | 7471 | * "Enable Panel Fitter" does not seem to be required when page |
@@ -7528,7 +7530,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, | |||
7528 | 7530 | ||
7529 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); | 7531 | intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); |
7530 | intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); | 7532 | intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); |
7531 | intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); | 7533 | intel_ring_emit(ring, i915_gem_obj_ggtt_offset(obj) + intel_crtc->dspaddr_offset); |
7532 | intel_ring_emit(ring, (MI_NOOP)); | 7534 | intel_ring_emit(ring, (MI_NOOP)); |
7533 | 7535 | ||
7534 | intel_mark_page_flip_active(intel_crtc); | 7536 | intel_mark_page_flip_active(intel_crtc); |