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 0694e170a338..1a7559b59997 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -467,6 +467,10 @@ static int i915_drm_freeze(struct drm_device *dev) | |||
467 | /* Modeset on resume, not lid events */ | 467 | /* Modeset on resume, not lid events */ |
468 | dev_priv->modeset_on_lid = 0; | 468 | dev_priv->modeset_on_lid = 0; |
469 | 469 | ||
470 | console_lock(); | ||
471 | intel_fbdev_set_suspend(dev, 1); | ||
472 | console_unlock(); | ||
473 | |||
470 | return 0; | 474 | return 0; |
471 | } | 475 | } |
472 | 476 | ||
@@ -539,6 +543,9 @@ static int i915_drm_thaw(struct drm_device *dev) | |||
539 | 543 | ||
540 | dev_priv->modeset_on_lid = 0; | 544 | dev_priv->modeset_on_lid = 0; |
541 | 545 | ||
546 | console_lock(); | ||
547 | intel_fbdev_set_suspend(dev, 0); | ||
548 | console_unlock(); | ||
542 | return error; | 549 | return error; |
543 | } | 550 | } |
544 | 551 | ||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 9cec6c3937fa..5a14149b3794 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -382,7 +382,7 @@ extern int intel_framebuffer_init(struct drm_device *dev, | |||
382 | struct drm_i915_gem_object *obj); | 382 | struct drm_i915_gem_object *obj); |
383 | extern int intel_fbdev_init(struct drm_device *dev); | 383 | extern int intel_fbdev_init(struct drm_device *dev); |
384 | extern void intel_fbdev_fini(struct drm_device *dev); | 384 | extern void intel_fbdev_fini(struct drm_device *dev); |
385 | 385 | extern void intel_fbdev_set_suspend(struct drm_device *dev, int state); | |
386 | extern void intel_prepare_page_flip(struct drm_device *dev, int plane); | 386 | extern void intel_prepare_page_flip(struct drm_device *dev, int plane); |
387 | extern void intel_finish_page_flip(struct drm_device *dev, int pipe); | 387 | extern void intel_finish_page_flip(struct drm_device *dev, int pipe); |
388 | extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); | 388 | 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 2d8766978388..19ecd78b8a2c 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c | |||
@@ -254,6 +254,16 @@ void intel_fbdev_fini(struct drm_device *dev) | |||
254 | kfree(dev_priv->fbdev); | 254 | kfree(dev_priv->fbdev); |
255 | dev_priv->fbdev = NULL; | 255 | dev_priv->fbdev = NULL; |
256 | } | 256 | } |
257 | |||
258 | void intel_fbdev_set_suspend(struct drm_device *dev, int state) | ||
259 | { | ||
260 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
261 | if (!dev_priv->fbdev) | ||
262 | return; | ||
263 | |||
264 | fb_set_suspend(dev_priv->fbdev->helper.fbdev, state); | ||
265 | } | ||
266 | |||
257 | MODULE_LICENSE("GPL and additional rights"); | 267 | MODULE_LICENSE("GPL and additional rights"); |
258 | 268 | ||
259 | void intel_fb_output_poll_changed(struct drm_device *dev) | 269 | void intel_fb_output_poll_changed(struct drm_device *dev) |