Skip to content

Commit

Permalink
drm/i915: After a reset perform a forced modeset
Browse files Browse the repository at this point in the history
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: Chris Wilson <chris@chris-wilson.co.uk>
  • Loading branch information
Chris Wilson committed Sep 21, 2010
1 parent 0573ed4 commit 9fd9814
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions drivers/gpu/drm/i915/i915_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit 9fd9814

Please sign in to comment.