diff options
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.patch | 26 |
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 @@ | |||
1 | diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c | ||
2 | index 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 | |||
15 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | ||
16 | index 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) { | ||