diff --git a/drivers/char/drm/i915_drv.c b/drivers/char/drm/i915_drv.c index e8f3d68..e542254 100644 --- a/drivers/char/drm/i915_drv.c +++ b/drivers/char/drm/i915_drv.c @@ -433,6 +433,8 @@ static int i915_resume(struct drm_device *dev) I915_WRITE(PIPEACONF, dev_priv->savePIPEACONF); i915_restore_palette(dev, PIPE_A); + I915_WRITE(I915REG_PIPEASTAT, dev_priv->savePIPEASTAT); + /* Enable the plane */ I915_WRITE(DSPACNTR, dev_priv->saveDSPACNTR); I915_WRITE(DSPABASE, I915_READ(DSPABASE)); @@ -475,6 +477,8 @@ static int i915_resume(struct drm_device *dev) I915_WRITE(PIPEBCONF, dev_priv->savePIPEBCONF); i915_restore_palette(dev, PIPE_B); + I915_WRITE(I915REG_PIPEBSTAT, dev_priv->savePIPEBSTAT); + /* Enable the plane */ I915_WRITE(DSPBCNTR, dev_priv->saveDSPBCNTR); I915_WRITE(DSPBBASE, I915_READ(DSPBBASE)); @@ -499,6 +503,11 @@ static int i915_resume(struct drm_device *dev) /* FIXME: restore TV & SDVO state */ + /* Interrupt state */ + I915_WRITE(I915REG_INT_IDENTITY_R, dev_priv->saveIIR); + I915_WRITE(I915REG_INT_ENABLE_R, dev_priv->saveIER); + I915_WRITE(I915REG_INT_MASK_R, dev_priv->saveIMR); + /* FBC info */ I915_WRITE(FBC_CFB_BASE, dev_priv->saveFBC_CFB_BASE); I915_WRITE(FBC_LL_BASE, dev_priv->saveFBC_LL_BASE);