summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorEric Anholt2011-03-30 22:01:03 +0200
committerKeith Packard2011-05-10 22:54:50 +0200
commit0b701d27b37d52b80d8da2d8d15fb99e072ee819 (patch)
tree714dd3fffab81c548b70dc8776a29b00045d5401 /drivers/gpu/drm/i915/intel_display.c
parentdrm/i915: Split the crtc_mode_set function along HAS_PCH_SPLIT() lines. (diff)
downloadkernel-qcow2-linux-0b701d27b37d52b80d8da2d8d15fb99e072ee819.tar.gz
kernel-qcow2-linux-0b701d27b37d52b80d8da2d8d15fb99e072ee819.tar.xz
kernel-qcow2-linux-0b701d27b37d52b80d8da2d8d15fb99e072ee819.zip
drm/i915: Move the vblank pre/post modeset to the common crtc_mode_set.
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b62136764a2b..f121aaf20ba9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4543,8 +4543,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
u32 lvds_sync = 0;
int target_clock;
- drm_vblank_pre_modeset(dev, pipe);
-
list_for_each_entry(encoder, &mode_config->encoder_list, base.head) {
if (encoder->base.crtc != crtc)
continue;
@@ -4601,7 +4599,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock);
if (!ok) {
DRM_ERROR("Couldn't find PLL settings for mode!\n");
- drm_vblank_post_modeset(dev, pipe);
return -EINVAL;
}
@@ -5159,8 +5156,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
intel_update_watermarks(dev);
- drm_vblank_post_modeset(dev, pipe);
-
return ret;
}
@@ -5191,8 +5186,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
u32 lvds_sync = 0;
int target_clock;
- drm_vblank_pre_modeset(dev, pipe);
-
list_for_each_entry(encoder, &mode_config->encoder_list, base.head) {
if (encoder->base.crtc != crtc)
continue;
@@ -5249,7 +5242,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, &clock);
if (!ok) {
DRM_ERROR("Couldn't find PLL settings for mode!\n");
- drm_vblank_post_modeset(dev, pipe);
return -EINVAL;
}
@@ -5807,8 +5799,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
intel_update_watermarks(dev);
- drm_vblank_post_modeset(dev, pipe);
-
return ret;
}
@@ -5820,11 +5810,17 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
{
struct drm_device *dev = crtc->dev;
struct drm_i915_private *dev_priv = dev->dev_private;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ int pipe = intel_crtc->pipe;
int ret;
+ drm_vblank_pre_modeset(dev, pipe);
+
ret = dev_priv->display.crtc_mode_set(crtc, mode, adjusted_mode,
x, y, old_fb);
+ drm_vblank_post_modeset(dev, pipe);
+
return ret;
}