Commit d5818938 authored by Daniel Vetter's avatar Daniel Vetter

drm/i915: Remove DRIVER_MODESET checks from suspend/resume code

UMS is dead, yay!
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 17fa6463
...@@ -574,6 +574,7 @@ static int i915_drm_suspend(struct drm_device *dev) ...@@ -574,6 +574,7 @@ static int i915_drm_suspend(struct drm_device *dev)
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_crtc *crtc; struct drm_crtc *crtc;
pci_power_t opregion_target_state; pci_power_t opregion_target_state;
int error;
/* ignore lid events during suspend */ /* ignore lid events during suspend */
mutex_lock(&dev_priv->modeset_restore_lock); mutex_lock(&dev_priv->modeset_restore_lock);
...@@ -588,37 +589,32 @@ static int i915_drm_suspend(struct drm_device *dev) ...@@ -588,37 +589,32 @@ static int i915_drm_suspend(struct drm_device *dev)
pci_save_state(dev->pdev); pci_save_state(dev->pdev);
/* If KMS is active, we do the leavevt stuff here */ error = i915_gem_suspend(dev);
if (drm_core_check_feature(dev, DRIVER_MODESET)) { if (error) {
int error; dev_err(&dev->pdev->dev,
"GEM idle failed, resume might fail\n");
error = i915_gem_suspend(dev); return error;
if (error) { }
dev_err(&dev->pdev->dev,
"GEM idle failed, resume might fail\n");
return error;
}
intel_suspend_gt_powersave(dev); intel_suspend_gt_powersave(dev);
/* /*
* Disable CRTCs directly since we want to preserve sw state * Disable CRTCs directly since we want to preserve sw state
* for _thaw. Also, power gate the CRTC power wells. * for _thaw. Also, power gate the CRTC power wells.
*/ */
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
for_each_crtc(dev, crtc) for_each_crtc(dev, crtc)
intel_crtc_control(crtc, false); intel_crtc_control(crtc, false);
drm_modeset_unlock_all(dev); drm_modeset_unlock_all(dev);
intel_dp_mst_suspend(dev); intel_dp_mst_suspend(dev);
intel_runtime_pm_disable_interrupts(dev_priv); intel_runtime_pm_disable_interrupts(dev_priv);
intel_hpd_cancel_work(dev_priv); intel_hpd_cancel_work(dev_priv);
intel_suspend_encoders(dev_priv); intel_suspend_encoders(dev_priv);
intel_suspend_hw(dev); intel_suspend_hw(dev);
}
i915_gem_suspend_gtt_mappings(dev); i915_gem_suspend_gtt_mappings(dev);
...@@ -690,53 +686,48 @@ static int i915_drm_resume(struct drm_device *dev) ...@@ -690,53 +686,48 @@ static int i915_drm_resume(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
if (drm_core_check_feature(dev, DRIVER_MODESET)) { mutex_lock(&dev->struct_mutex);
mutex_lock(&dev->struct_mutex); i915_gem_restore_gtt_mappings(dev);
i915_gem_restore_gtt_mappings(dev); mutex_unlock(&dev->struct_mutex);
mutex_unlock(&dev->struct_mutex);
}
i915_restore_state(dev); i915_restore_state(dev);
intel_opregion_setup(dev); intel_opregion_setup(dev);
/* KMS EnterVT equivalent */ intel_init_pch_refclk(dev);
if (drm_core_check_feature(dev, DRIVER_MODESET)) { drm_mode_config_reset(dev);
intel_init_pch_refclk(dev);
drm_mode_config_reset(dev);
mutex_lock(&dev->struct_mutex); mutex_lock(&dev->struct_mutex);
if (i915_gem_init_hw(dev)) { if (i915_gem_init_hw(dev)) {
DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n"); DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n");
atomic_set_mask(I915_WEDGED, &dev_priv->gpu_error.reset_counter); atomic_set_mask(I915_WEDGED, &dev_priv->gpu_error.reset_counter);
} }
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
/* We need working interrupts for modeset enabling ... */ /* We need working interrupts for modeset enabling ... */
intel_runtime_pm_enable_interrupts(dev_priv); intel_runtime_pm_enable_interrupts(dev_priv);
intel_modeset_init_hw(dev); intel_modeset_init_hw(dev);
spin_lock_irq(&dev_priv->irq_lock); spin_lock_irq(&dev_priv->irq_lock);
if (dev_priv->display.hpd_irq_setup) if (dev_priv->display.hpd_irq_setup)
dev_priv->display.hpd_irq_setup(dev); dev_priv->display.hpd_irq_setup(dev);
spin_unlock_irq(&dev_priv->irq_lock); spin_unlock_irq(&dev_priv->irq_lock);
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
intel_modeset_setup_hw_state(dev, true); intel_modeset_setup_hw_state(dev, true);
drm_modeset_unlock_all(dev); drm_modeset_unlock_all(dev);
intel_dp_mst_resume(dev); intel_dp_mst_resume(dev);
/* /*
* ... but also need to make sure that hotplug processing * ... but also need to make sure that hotplug processing
* doesn't cause havoc. Like in the driver load code we don't * doesn't cause havoc. Like in the driver load code we don't
* bother with the tiny race here where we might loose hotplug * bother with the tiny race here where we might loose hotplug
* notifications. * notifications.
* */ * */
intel_hpd_init(dev_priv); intel_hpd_init(dev_priv);
/* Config may have changed between suspend and resume */ /* Config may have changed between suspend and resume */
drm_helper_hpd_irq_event(dev); drm_helper_hpd_irq_event(dev);
}
intel_opregion_init(dev); intel_opregion_init(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment