aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-09-06 11:17:22 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-09-07 06:16:41 -0400
commit032d2a0d068b0368296a56469761394ef03207c3 (patch)
treed0cba8d5d5befb12334c7da93e16b97f09d2f5b4
parent52be11964869c948fbbb9ec7845f9c52b0d3dc09 (diff)
drm/i915: Prevent double dpms on
Arguably this is a bug in drm-core in that we should not be called twice in succession with DPMS_ON, however this is still occuring and we see FDI link training failures on the second call leading to the occassional blank display. For the time being ignore the repeated call. Original patch by Dave Airlie <airlied@redhat.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
-rw-r--r--drivers/gpu/drm/i915/intel_display.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index cf8d5e5a286e..40cc5da264a9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2370,6 +2370,9 @@ static void intel_crtc_dpms(struct drm_crtc *crtc, int mode)
2370 int pipe = intel_crtc->pipe; 2370 int pipe = intel_crtc->pipe;
2371 bool enabled; 2371 bool enabled;
2372 2372
2373 if (intel_crtc->dpms_mode == mode)
2374 return;
2375
2373 intel_crtc->dpms_mode = mode; 2376 intel_crtc->dpms_mode = mode;
2374 intel_crtc->cursor_on = mode == DRM_MODE_DPMS_ON; 2377 intel_crtc->cursor_on = mode == DRM_MODE_DPMS_ON;
2375 2378
@@ -5164,7 +5167,7 @@ static void intel_crtc_init(struct drm_device *dev, int pipe)
5164 dev_priv->pipe_to_crtc_mapping[intel_crtc->pipe] = &intel_crtc->base; 5167 dev_priv->pipe_to_crtc_mapping[intel_crtc->pipe] = &intel_crtc->base;
5165 5168
5166 intel_crtc->cursor_addr = 0; 5169 intel_crtc->cursor_addr = 0;
5167 intel_crtc->dpms_mode = DRM_MODE_DPMS_OFF; 5170 intel_crtc->dpms_mode = -1;
5168 drm_crtc_helper_add(&intel_crtc->base, &intel_helper_funcs); 5171 drm_crtc_helper_add(&intel_crtc->base, &intel_helper_funcs);
5169 5172
5170 intel_crtc->busy = false; 5173 intel_crtc->busy = false;