diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-11-21 21:54:30 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-12-03 09:29:39 +0100 |
commit | f98ce92fea8a865b044d3bc4097e88a81efb74b5 (patch) | |
tree | 9c4d550af2d8089bc1c22e95afdf6150796e5e83 | |
parent | 7514747d27632f2d71dd2f1e6abd6e0451dcbf3f (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>
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_uncore.c | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 56664e63e10..910df02840d 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) void intel_prepare_reset(struct drm_device *dev) { + struct drm_i915_private *dev_priv = to_i915(dev); + struct intel_crtc *crtc; + /* no reset support for gen2 */ if (IS_GEN2(dev)) return; @@ -2812,6 +2815,15 @@ void intel_prepare_reset(struct drm_device *dev) return; drm_modeset_lock_all(dev); + + /* + * Disabling the crtcs gracefully seems nicer. Also the + * g33 docs say we should at least disable all the planes. + */ + for_each_intel_crtc(dev, crtc) { + if (crtc->active) + dev_priv->display.crtc_disable(&crtc->base); + } } void intel_finish_reset(struct drm_device *dev) diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c index cf8ecc01deb..2b34c046da6 100644 --- a/drivers/gpu/drm/i915/intel_uncore.c +++ b/drivers/gpu/drm/i915/intel_uncore.c @@ -1371,8 +1371,6 @@ static int g4x_reset_complete(struct drm_device *dev) static int g33_do_reset(struct drm_device *dev) { - /* FIXME spec says to turn off all planes and wait 1 usec before reset */ - pci_write_config_byte(dev->pdev, I915_GDRST, GRDOM_RESET_ENABLE); return wait_for(g4x_reset_complete(dev), 500); } |