diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_fb.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_fb.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index 0e19e575a1b4..6b7c3ca2c035 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c | |||
| @@ -262,10 +262,22 @@ void intel_fbdev_fini(struct drm_device *dev) | |||
| 262 | void intel_fbdev_set_suspend(struct drm_device *dev, int state) | 262 | void intel_fbdev_set_suspend(struct drm_device *dev, int state) |
| 263 | { | 263 | { |
| 264 | drm_i915_private_t *dev_priv = dev->dev_private; | 264 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 265 | if (!dev_priv->fbdev) | 265 | struct intel_fbdev *ifbdev = dev_priv->fbdev; |
| 266 | struct fb_info *info; | ||
| 267 | |||
| 268 | if (!ifbdev) | ||
| 266 | return; | 269 | return; |
| 267 | 270 | ||
| 268 | fb_set_suspend(dev_priv->fbdev->helper.fbdev, state); | 271 | info = ifbdev->helper.fbdev; |
| 272 | |||
| 273 | /* On resume from hibernation: If the object is shmemfs backed, it has | ||
| 274 | * been restored from swap. If the object is stolen however, it will be | ||
| 275 | * full of whatever garbage was left in there. | ||
| 276 | */ | ||
| 277 | if (!state && ifbdev->ifb.obj->stolen) | ||
| 278 | memset_io(info->screen_base, 0, info->screen_size); | ||
| 279 | |||
| 280 | fb_set_suspend(info, state); | ||
| 269 | } | 281 | } |
| 270 | 282 | ||
| 271 | MODULE_LICENSE("GPL and additional rights"); | 283 | MODULE_LICENSE("GPL and additional rights"); |
