aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2014-11-21 14:54:26 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-12-03 03:29:37 -0500
commitca83b9361bf70d5d4171ba54a598a8c8f981f091 (patch)
tree8c07457a65c6de2c0ca6f0f6c8f27218eb83cfc8
parent73bbf6bd907906dcbdc78f3af38a722c0fe498d8 (diff)
drm/i915: Restore the display config after a GPU reset on gen4
On pre-ctg GPU reset also resets the display hardware. Force a mode restore after the GPU reset, and also re-init clock gating. v2: Use intel_modeset_init_hw() instead of intel_init_clock_gating() in case more relevant stuff gets added there at some point Restore interrupts after the reset as well Tested-by: Kenneth Graunke <kenneth@whitecape.org> 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/i915_drv.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 1e9c136a874c..68e42392f59c 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -880,6 +880,24 @@ int i915_reset(struct drm_device *dev)
880 */ 880 */
881 if (INTEL_INFO(dev)->gen > 5) 881 if (INTEL_INFO(dev)->gen > 5)
882 intel_reset_gt_powersave(dev); 882 intel_reset_gt_powersave(dev);
883
884 if (IS_GEN4(dev) && !IS_G4X(dev)) {
885 intel_runtime_pm_disable_interrupts(dev_priv);
886 intel_runtime_pm_enable_interrupts(dev_priv);
887
888 intel_modeset_init_hw(dev);
889
890 spin_lock_irq(&dev_priv->irq_lock);
891 if (dev_priv->display.hpd_irq_setup)
892 dev_priv->display.hpd_irq_setup(dev);
893 spin_unlock_irq(&dev_priv->irq_lock);
894
895 drm_modeset_lock_all(dev);
896 intel_modeset_setup_hw_state(dev, true);
897 drm_modeset_unlock_all(dev);
898
899 intel_hpd_init(dev_priv);
900 }
883 } else { 901 } else {
884 mutex_unlock(&dev->struct_mutex); 902 mutex_unlock(&dev->struct_mutex);
885 } 903 }