aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaarten Lankhorst <m.b.lankhorst@gmail.com>2013-06-27 07:38:19 -0400
committerDave Airlie <airlied@redhat.com>2013-06-27 21:55:34 -0400
commit1af7c7dd2142b04f5e70746f8b65f5988e226e77 (patch)
treec06cc0c0c6d788d4f8e2aa96c0770eca036bcf4f
parent280cf211867539a7b6912d3a3573ef692ae66b61 (diff)
drm/nouveau: implement prime helper unpin function
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Acked-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drm.c1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_gem.h1
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_prime.c9
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 383f4e6ea9d1..218a4b522fe5 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -702,6 +702,7 @@ driver = {
702 .gem_prime_export = drm_gem_prime_export, 702 .gem_prime_export = drm_gem_prime_export,
703 .gem_prime_import = drm_gem_prime_import, 703 .gem_prime_import = drm_gem_prime_import,
704 .gem_prime_pin = nouveau_gem_prime_pin, 704 .gem_prime_pin = nouveau_gem_prime_pin,
705 .gem_prime_unpin = nouveau_gem_prime_unpin,
705 .gem_prime_get_sg_table = nouveau_gem_prime_get_sg_table, 706 .gem_prime_get_sg_table = nouveau_gem_prime_get_sg_table,
706 .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table, 707 .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table,
707 .gem_prime_vmap = nouveau_gem_prime_vmap, 708 .gem_prime_vmap = nouveau_gem_prime_vmap,
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.h b/drivers/gpu/drm/nouveau/nouveau_gem.h
index 8d7a3f0aeb86..502e4290aa8f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.h
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.h
@@ -36,6 +36,7 @@ extern int nouveau_gem_ioctl_info(struct drm_device *, void *,
36 struct drm_file *); 36 struct drm_file *);
37 37
38extern int nouveau_gem_prime_pin(struct drm_gem_object *); 38extern int nouveau_gem_prime_pin(struct drm_gem_object *);
39extern void nouveau_gem_prime_unpin(struct drm_gem_object *);
39extern struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *); 40extern struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *);
40extern struct drm_gem_object *nouveau_gem_prime_import_sg_table( 41extern struct drm_gem_object *nouveau_gem_prime_import_sg_table(
41 struct drm_device *, size_t size, struct sg_table *); 42 struct drm_device *, size_t size, struct sg_table *);
diff --git a/drivers/gpu/drm/nouveau/nouveau_prime.c b/drivers/gpu/drm/nouveau/nouveau_prime.c
index f53e10874cae..e90468d5e5c0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_prime.c
+++ b/drivers/gpu/drm/nouveau/nouveau_prime.c
@@ -84,7 +84,7 @@ struct drm_gem_object *nouveau_gem_prime_import_sg_table(struct drm_device *dev,
84int nouveau_gem_prime_pin(struct drm_gem_object *obj) 84int nouveau_gem_prime_pin(struct drm_gem_object *obj)
85{ 85{
86 struct nouveau_bo *nvbo = nouveau_gem_object(obj); 86 struct nouveau_bo *nvbo = nouveau_gem_object(obj);
87 int ret = 0; 87 int ret;
88 88
89 /* pin buffer into GTT */ 89 /* pin buffer into GTT */
90 ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_TT); 90 ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_TT);
@@ -93,3 +93,10 @@ int nouveau_gem_prime_pin(struct drm_gem_object *obj)
93 93
94 return 0; 94 return 0;
95} 95}
96
97void nouveau_gem_prime_unpin(struct drm_gem_object *obj)
98{
99 struct nouveau_bo *nvbo = nouveau_gem_object(obj);
100
101 nouveau_bo_unpin(nvbo);
102}