diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_fb.c | 10 |
3 files changed, 18 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index f6e54b14746..0ad5737338f 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -404,6 +404,10 @@ static int i915_drm_freeze(struct drm_device *dev) | |||
404 | /* Modeset on resume, not lid events */ | 404 | /* Modeset on resume, not lid events */ |
405 | dev_priv->modeset_on_lid = 0; | 405 | dev_priv->modeset_on_lid = 0; |
406 | 406 | ||
407 | console_lock(); | ||
408 | intel_fbdev_set_suspend(dev, 1); | ||
409 | console_unlock(); | ||
410 | |||
407 | return 0; | 411 | return 0; |
408 | } | 412 | } |
409 | 413 | ||
@@ -476,6 +480,9 @@ static int i915_drm_thaw(struct drm_device *dev) | |||
476 | 480 | ||
477 | dev_priv->modeset_on_lid = 0; | 481 | dev_priv->modeset_on_lid = 0; |
478 | 482 | ||
483 | console_lock(); | ||
484 | intel_fbdev_set_suspend(dev, 0); | ||
485 | console_unlock(); | ||
479 | return error; | 486 | return error; |
480 | } | 487 | } |
481 | 488 | ||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index f7d942d0bfa..26a10676bea 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -331,7 +331,7 @@ extern int intel_framebuffer_init(struct drm_device *dev, | |||
331 | struct drm_i915_gem_object *obj); | 331 | struct drm_i915_gem_object *obj); |
332 | extern int intel_fbdev_init(struct drm_device *dev); | 332 | extern int intel_fbdev_init(struct drm_device *dev); |
333 | extern void intel_fbdev_fini(struct drm_device *dev); | 333 | extern void intel_fbdev_fini(struct drm_device *dev); |
334 | 334 | extern void intel_fbdev_set_suspend(struct drm_device *dev, int state); | |
335 | extern void intel_prepare_page_flip(struct drm_device *dev, int plane); | 335 | extern void intel_prepare_page_flip(struct drm_device *dev, int plane); |
336 | extern void intel_finish_page_flip(struct drm_device *dev, int pipe); | 336 | extern void intel_finish_page_flip(struct drm_device *dev, int pipe); |
337 | extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); | 337 | extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); |
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index ec49bae7338..d0ce34b78cc 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c | |||
@@ -257,6 +257,16 @@ void intel_fbdev_fini(struct drm_device *dev) | |||
257 | kfree(dev_priv->fbdev); | 257 | kfree(dev_priv->fbdev); |
258 | dev_priv->fbdev = NULL; | 258 | dev_priv->fbdev = NULL; |
259 | } | 259 | } |
260 | |||
261 | void intel_fbdev_set_suspend(struct drm_device *dev, int state) | ||
262 | { | ||
263 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
264 | if (!dev_priv->fbdev) | ||
265 | return; | ||
266 | |||
267 | fb_set_suspend(dev_priv->fbdev->helper.fbdev, state); | ||
268 | } | ||
269 | |||
260 | MODULE_LICENSE("GPL and additional rights"); | 270 | MODULE_LICENSE("GPL and additional rights"); |
261 | 271 | ||
262 | void intel_fb_output_poll_changed(struct drm_device *dev) | 272 | void intel_fb_output_poll_changed(struct drm_device *dev) |