aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2013-07-04 00:59:34 -0400
committerDave Airlie <airlied@redhat.com>2013-07-04 20:44:18 -0400
commitb86487a6b671ff7107fbf6d3ff10c2da970cd1c3 (patch)
treeb05615548580d6b98e064e7fedc579aa25e3afbd
parent1e209117dbe00d3d87db1c5266f177eaa60451c8 (diff)
qxl: add fb and ttm entry points for use by suspend/resume.
This just ports some APIs like radeon uses to provide hooks for s/r to call. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/qxl/qxl_drv.h3
-rw-r--r--drivers/gpu/drm/qxl/qxl_fb.c10
-rw-r--r--drivers/gpu/drm/qxl/qxl_object.c5
3 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index aec9f1f9c814..70a67862673a 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -332,6 +332,7 @@ int qxl_bo_init(struct qxl_device *qdev);
332void qxl_bo_fini(struct qxl_device *qdev); 332void qxl_bo_fini(struct qxl_device *qdev);
333 333
334void qxl_reinit_memslots(struct qxl_device *qdev); 334void qxl_reinit_memslots(struct qxl_device *qdev);
335int qxl_surf_evict(struct qxl_device *qdev);
335 336
336struct qxl_ring *qxl_ring_create(struct qxl_ring_header *header, 337struct qxl_ring *qxl_ring_create(struct qxl_ring_header *header,
337 int element_size, 338 int element_size,
@@ -369,6 +370,7 @@ void qxl_fbdev_fini(struct qxl_device *qdev);
369int qxl_get_handle_for_primary_fb(struct qxl_device *qdev, 370int qxl_get_handle_for_primary_fb(struct qxl_device *qdev,
370 struct drm_file *file_priv, 371 struct drm_file *file_priv,
371 uint32_t *handle); 372 uint32_t *handle);
373void qxl_fbdev_set_suspend(struct qxl_device *qdev, int state);
372 374
373/* qxl_display.c */ 375/* qxl_display.c */
374int 376int
@@ -534,6 +536,7 @@ irqreturn_t qxl_irq_handler(DRM_IRQ_ARGS);
534 536
535/* qxl_fb.c */ 537/* qxl_fb.c */
536int qxl_fb_init(struct qxl_device *qdev); 538int qxl_fb_init(struct qxl_device *qdev);
539bool qxl_fbdev_qobj_is_fb(struct qxl_device *qdev, struct qxl_bo *qobj);
537 540
538int qxl_debugfs_add_files(struct qxl_device *qdev, 541int qxl_debugfs_add_files(struct qxl_device *qdev,
539 struct drm_info_list *files, 542 struct drm_info_list *files,
diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
index c08e12886d6c..76f39d88d684 100644
--- a/drivers/gpu/drm/qxl/qxl_fb.c
+++ b/drivers/gpu/drm/qxl/qxl_fb.c
@@ -560,4 +560,14 @@ void qxl_fbdev_fini(struct qxl_device *qdev)
560 qdev->mode_info.qfbdev = NULL; 560 qdev->mode_info.qfbdev = NULL;
561} 561}
562 562
563void qxl_fbdev_set_suspend(struct qxl_device *qdev, int state)
564{
565 fb_set_suspend(qdev->mode_info.qfbdev->helper.fbdev, state);
566}
563 567
568bool qxl_fbdev_qobj_is_fb(struct qxl_device *qdev, struct qxl_bo *qobj)
569{
570 if (qobj == gem_to_qxl_bo(qdev->mode_info.qfbdev->qfb.obj))
571 return true;
572 return false;
573}
diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c
index d9b12e7bc6e1..62a046e4a036 100644
--- a/drivers/gpu/drm/qxl/qxl_object.c
+++ b/drivers/gpu/drm/qxl/qxl_object.c
@@ -363,3 +363,8 @@ int qxl_bo_list_add(struct qxl_reloc_list *reloc_list, struct qxl_bo *bo)
363 return ret; 363 return ret;
364 return 0; 364 return 0;
365} 365}
366
367int qxl_surf_evict(struct qxl_device *qdev)
368{
369 return ttm_bo_evict_mm(&qdev->mman.bdev, TTM_PL_PRIV0);
370}