Commit 4c5cfcc3 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Kill the 830 MI_OVERLAY_OFF workaround

Now that we're disabling L2 clock gating MI_OVERLAY_OFF actually works
on 830, so let's use it.

v2: Nuke the unused dev_priv variable
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161222195222.9618-1-ville.syrjala@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent e840fd31
...@@ -407,7 +407,6 @@ static void intel_overlay_off_tail(struct i915_gem_active *active, ...@@ -407,7 +407,6 @@ static void intel_overlay_off_tail(struct i915_gem_active *active,
/* overlay needs to be disabled in OCMD reg */ /* overlay needs to be disabled in OCMD reg */
static int intel_overlay_off(struct intel_overlay *overlay) static int intel_overlay_off(struct intel_overlay *overlay)
{ {
struct drm_i915_private *dev_priv = overlay->i915;
struct drm_i915_gem_request *req; struct drm_i915_gem_request *req;
struct intel_ring *ring; struct intel_ring *ring;
u32 flip_addr = overlay->flip_addr; u32 flip_addr = overlay->flip_addr;
...@@ -432,23 +431,17 @@ static int intel_overlay_off(struct intel_overlay *overlay) ...@@ -432,23 +431,17 @@ static int intel_overlay_off(struct intel_overlay *overlay)
} }
ring = req->ring; ring = req->ring;
/* wait for overlay to go idle */ /* wait for overlay to go idle */
intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_CONTINUE); intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_CONTINUE);
intel_ring_emit(ring, flip_addr); intel_ring_emit(ring, flip_addr);
intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP);
/* turn overlay off */ /* turn overlay off */
if (IS_I830(dev_priv)) { intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF);
/* Workaround: Don't disable the overlay fully, since otherwise intel_ring_emit(ring, flip_addr);
* it dies on the next OVERLAY_ON cmd. */ intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP);
intel_ring_emit(ring, MI_NOOP);
intel_ring_emit(ring, MI_NOOP);
intel_ring_emit(ring, MI_NOOP);
} else {
intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF);
intel_ring_emit(ring, flip_addr);
intel_ring_emit(ring,
MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP);
}
intel_ring_advance(ring); intel_ring_advance(ring);
intel_overlay_flip_prepare(overlay, NULL); intel_overlay_flip_prepare(overlay, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment