Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 307313
b: refs/heads/master
c: 4f7d1e7
h: refs/heads/master
i:
  307311: 95719c7
v: v3
  • Loading branch information
Chris Wilson authored and Daniel Vetter committed May 3, 2012
1 parent 44272c6 commit 5a55df9
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 30 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a266c7d548adc85d325e40316f1645258354ca35
refs/heads/master: 4f7d1e79b1967d2f1a718d4b9afbb23053858c0a
1 change: 0 additions & 1 deletion trunk/drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,6 @@ typedef struct drm_i915_private {
struct drm_crtc *plane_to_crtc_mapping[3];
struct drm_crtc *pipe_to_crtc_mapping[3];
wait_queue_head_t pending_flip_queue;
bool gen3_flip_pending_is_done;

struct intel_pch_pll pch_plls[I915_NUM_PLLS];

Expand Down
39 changes: 11 additions & 28 deletions trunk/drivers/gpu/drm/i915/i915_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -2510,26 +2510,18 @@ static irqreturn_t i915_irq_handler(DRM_IRQ_ARGS)
if (iir & I915_BSD_USER_INTERRUPT)
notify_ring(dev, &dev_priv->ring[VCS]);

if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) {
if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT)
intel_prepare_page_flip(dev, 0);
if (dev_priv->gen3_flip_pending_is_done)
intel_finish_page_flip_plane(dev, 0);
}

if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) {
if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT)
intel_prepare_page_flip(dev, 1);
if (dev_priv->gen3_flip_pending_is_done)
intel_finish_page_flip_plane(dev, 1);
}

for_each_pipe(pipe) {
if (pipe_stats[pipe] & vblank_status &&
drm_handle_vblank(dev, pipe)) {
vblank++;
if (!dev_priv->gen3_flip_pending_is_done) {
i915_pageflip_stall_check(dev, pipe);
intel_finish_page_flip(dev, pipe);
}
i915_pageflip_stall_check(dev, pipe);
intel_finish_page_flip(dev, pipe);
}

if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS)
Expand Down Expand Up @@ -2771,26 +2763,18 @@ static irqreturn_t i965_irq_handler(DRM_IRQ_ARGS)
if (iir & I915_BSD_USER_INTERRUPT)
notify_ring(dev, &dev_priv->ring[VCS]);

if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) {
if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT)
intel_prepare_page_flip(dev, 0);
if (dev_priv->gen3_flip_pending_is_done)
intel_finish_page_flip_plane(dev, 0);
}

if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) {
if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT)
intel_prepare_page_flip(dev, 1);
if (dev_priv->gen3_flip_pending_is_done)
intel_finish_page_flip_plane(dev, 1);
}

for_each_pipe(pipe) {
if (pipe_stats[pipe] & vblank_status &&
drm_handle_vblank(dev, pipe)) {
vblank++;
if (!dev_priv->gen3_flip_pending_is_done) {
i915_pageflip_stall_check(dev, pipe);
intel_finish_page_flip(dev, pipe);
}
i915_pageflip_stall_check(dev, pipe);
intel_finish_page_flip(dev, pipe);
}

if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS)
Expand Down Expand Up @@ -2857,10 +2841,6 @@ void intel_irq_init(struct drm_device *dev)
INIT_WORK(&dev_priv->error_work, i915_error_work_func);
INIT_WORK(&dev_priv->rps_work, gen6_pm_rps_work);

/* IIR "flip pending" bit means done if this bit is set */
if (IS_GEN3(dev) && (I915_READ(ECOSKPD) & ECO_FLIP_DONE))
dev_priv->gen3_flip_pending_is_done = true;

dev->driver->get_vblank_counter = i915_get_vblank_counter;
dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */
if (IS_G4X(dev) || IS_GEN5(dev) || IS_GEN6(dev) || IS_IVYBRIDGE(dev) ||
Expand Down Expand Up @@ -2904,6 +2884,9 @@ void intel_irq_init(struct drm_device *dev)
dev->driver->irq_handler = i8xx_irq_handler;
dev->driver->irq_uninstall = i8xx_irq_uninstall;
} else if (INTEL_INFO(dev)->gen == 3) {
/* IIR "flip pending" means done if this bit is set */
I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE));

dev->driver->irq_preinstall = i915_irq_preinstall;
dev->driver->irq_postinstall = i915_irq_postinstall;
dev->driver->irq_uninstall = i915_irq_uninstall;
Expand Down

0 comments on commit 5a55df9

Please sign in to comment.