aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2014-11-21 14:54:30 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-12-03 03:29:39 -0500
commitf98ce92fea8a865b044d3bc4097e88a81efb74b5 (patch)
tree9c4d550af2d8089bc1c22e95afdf6150796e5e83 /drivers/gpu/drm/i915/intel_display.c
parent7514747d27632f2d71dd2f1e6abd6e0451dcbf3f (diff)
drm/i915: Disable crtcs gracefully before GPU reset on gen3/4
The GPU reset also resets the display on gen3/4. The g33 docs say we should disable all planes before flipping the reset switch. Just disable all the crtcs instead. That seems a nicer thing to do anyway. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 56664e63e10f..910df02840d6 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2803,6 +2803,9 @@ static void intel_update_primary_planes(struct drm_device *dev)
2803 2803
2804void intel_prepare_reset(struct drm_device *dev) 2804void intel_prepare_reset(struct drm_device *dev)
2805{ 2805{
2806 struct drm_i915_private *dev_priv = to_i915(dev);
2807 struct intel_crtc *crtc;
2808
2806 /* no reset support for gen2 */ 2809 /* no reset support for gen2 */
2807 if (IS_GEN2(dev)) 2810 if (IS_GEN2(dev))
2808 return; 2811 return;
@@ -2812,6 +2815,15 @@ void intel_prepare_reset(struct drm_device *dev)
2812 return; 2815 return;
2813 2816
2814 drm_modeset_lock_all(dev); 2817 drm_modeset_lock_all(dev);
2818
2819 /*
2820 * Disabling the crtcs gracefully seems nicer. Also the
2821 * g33 docs say we should at least disable all the planes.
2822 */
2823 for_each_intel_crtc(dev, crtc) {
2824 if (crtc->active)
2825 dev_priv->display.crtc_disable(&crtc->base);
2826 }
2815} 2827}
2816 2828
2817void intel_finish_reset(struct drm_device *dev) 2829void intel_finish_reset(struct drm_device *dev)