summaryrefslogtreecommitdiffstats
path: root/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.31-drm-i915-vblank-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.31-drm-i915-vblank-fix.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.31-drm-i915-vblank-fix.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.31-drm-i915-vblank-fix.patch b/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.31-drm-i915-vblank-fix.patch
new file mode 100644
index 0000000000..ef136c9877
--- /dev/null
+++ b/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.31-drm-i915-vblank-fix.patch
@@ -0,0 +1,26 @@
1diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
2index f85aaf2..2e5841e 100644
3--- a/drivers/gpu/drm/drm_irq.c
4+++ b/drivers/gpu/drm/drm_irq.c
5@@ -412,6 +412,9 @@ int drm_vblank_get(struct drm_device *dev, int crtc)
6 dev->vblank_enabled[crtc] = 1;
7 drm_update_vblank_count(dev, crtc);
8 }
9+ } else if (atomic_read(&dev->vblank_refcount[crtc]) > 1) {
10+ atomic_dec(&dev->vblank_refcount[crtc]);
11+ ret = -EINVAL;
12 }
13 spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
14
15diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
16index 748ed50..9cb07a5 100644
17--- a/drivers/gpu/drm/i915/intel_display.c
18+++ b/drivers/gpu/drm/i915/intel_display.c
19@@ -1549,6 +1549,7 @@ static void i9xx_crtc_dpms(struct drm_crtc *crtc, int mode)
20
21 /* Wait for vblank for the disable to take effect. */
22 intel_wait_for_vblank(dev);
23+ dev->vblank_enabled[pipe] = 0;
24
25 temp = I915_READ(dpll_reg);
26 if ((temp & DPLL_VCO_ENABLE) != 0) {