Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fd98141 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: After a reset perform a forced modeset



On more recent chipsets, restoring the display is not as simple as
writing a few registers, so force a full modeset of the current
configuration in order to retrain the display link.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 0573ed4a
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -385,9 +385,6 @@ int i965_reset(struct drm_device *dev, u8 flags)
	 */
	i915_gem_retire_requests(dev);

	if (need_display)
		i915_save_display(dev);

	/*
	 * Set the domains we want to reset (GRDOM/bits 2 and 3) as
	 * well as the reset bit (GR/bit 0).  Setting the GR bit
@@ -428,13 +425,19 @@ int i965_reset(struct drm_device *dev, u8 flags)
		mutex_lock(&dev->struct_mutex);
	}

	mutex_unlock(&dev->struct_mutex);

	/*
	 * Display needs restore too...
	 * Perform a full modeset as on later generations, e.g. Ironlake, we may
	 * need to retrain the display link and cannot just restore the register
	 * values.
	 */
	if (need_display)
		i915_restore_display(dev);
	if (need_display) {
		mutex_lock(&dev->mode_config.mutex);
		drm_helper_resume_force_mode(dev);
		mutex_unlock(&dev->mode_config.mutex);
	}

	mutex_unlock(&dev->struct_mutex);
	return 0;
}