aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c7
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_fb.c10
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);
332extern int intel_fbdev_init(struct drm_device *dev); 332extern int intel_fbdev_init(struct drm_device *dev);
333extern void intel_fbdev_fini(struct drm_device *dev); 333extern void intel_fbdev_fini(struct drm_device *dev);
334 334extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
335extern void intel_prepare_page_flip(struct drm_device *dev, int plane); 335extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
336extern void intel_finish_page_flip(struct drm_device *dev, int pipe); 336extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
337extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); 337extern 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
261void 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
260MODULE_LICENSE("GPL and additional rights"); 270MODULE_LICENSE("GPL and additional rights");
261 271
262void intel_fb_output_poll_changed(struct drm_device *dev) 272void intel_fb_output_poll_changed(struct drm_device *dev)