aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorSumit Semwal <sumit.semwal@linaro.org>2015-01-23 02:23:43 -0500
committerSumit Semwal <sumit.semwal@linaro.org>2015-04-21 05:17:16 -0400
commitd8fbe341beb617ebb22b98fb893e4aa32ae2d864 (patch)
tree2e19c951d2b6ffef2319d87ec8a6c39e4e1ab8ee /drivers/gpu/drm
parent646da63172f660ba84f195c1165360a9b73583ee (diff)
dma-buf: cleanup dma_buf_export() to make it easily extensible
At present, dma_buf_export() takes a series of parameters, which makes it difficult to add any new parameters for exporters, if required. Make it simpler by moving all these parameters into a struct, and pass the struct * as parameter to dma_buf_export(). While at it, unite dma_buf_export_named() with dma_buf_export(), and change all callers accordingly. Reviewed-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> Acked-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com> Acked-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/armada/armada_gem.c10
-rw-r--r--drivers/gpu/drm/drm_prime.c12
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dmabuf.c9
-rw-r--r--drivers/gpu/drm/i915/i915_gem_dmabuf.c10
-rw-r--r--drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c9
-rw-r--r--drivers/gpu/drm/tegra/gem.c10
-rw-r--r--drivers/gpu/drm/ttm/ttm_object.c9
-rw-r--r--drivers/gpu/drm/udl/udl_dmabuf.c9
8 files changed, 62 insertions, 16 deletions
diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
index ef5feeecec84..580e10acaa3a 100644
--- a/drivers/gpu/drm/armada/armada_gem.c
+++ b/drivers/gpu/drm/armada/armada_gem.c
@@ -538,8 +538,14 @@ struct dma_buf *
538armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, 538armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj,
539 int flags) 539 int flags)
540{ 540{
541 return dma_buf_export(obj, &armada_gem_prime_dmabuf_ops, obj->size, 541 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
542 O_RDWR, NULL); 542
543 exp_info.ops = &armada_gem_prime_dmabuf_ops;
544 exp_info.size = obj->size;
545 exp_info.flags = O_RDWR;
546 exp_info.priv = obj;
547
548 return dma_buf_export(&exp_info);
543} 549}
544 550
545struct drm_gem_object * 551struct drm_gem_object *
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 7482b06cd08f..7fec191b45f7 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -339,13 +339,17 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = {
339struct dma_buf *drm_gem_prime_export(struct drm_device *dev, 339struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
340 struct drm_gem_object *obj, int flags) 340 struct drm_gem_object *obj, int flags)
341{ 341{
342 struct reservation_object *robj = NULL; 342 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
343
344 exp_info.ops = &drm_gem_prime_dmabuf_ops;
345 exp_info.size = obj->size;
346 exp_info.flags = flags;
347 exp_info.priv = obj;
343 348
344 if (dev->driver->gem_prime_res_obj) 349 if (dev->driver->gem_prime_res_obj)
345 robj = dev->driver->gem_prime_res_obj(obj); 350 exp_info.resv = dev->driver->gem_prime_res_obj(obj);
346 351
347 return dma_buf_export(obj, &drm_gem_prime_dmabuf_ops, obj->size, 352 return dma_buf_export(&exp_info);
348 flags, robj);
349} 353}
350EXPORT_SYMBOL(drm_gem_prime_export); 354EXPORT_SYMBOL(drm_gem_prime_export);
351 355
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
index 3833bf8ca025..cd485c091b30 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c
@@ -185,9 +185,14 @@ struct dma_buf *exynos_dmabuf_prime_export(struct drm_device *drm_dev,
185 struct drm_gem_object *obj, int flags) 185 struct drm_gem_object *obj, int flags)
186{ 186{
187 struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj); 187 struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
188 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
188 189
189 return dma_buf_export(obj, &exynos_dmabuf_ops, 190 exp_info.ops = &exynos_dmabuf_ops;
190 exynos_gem_obj->base.size, flags, NULL); 191 exp_info.size = exynos_gem_obj->base.size;
192 exp_info.flags = flags;
193 exp_info.priv = obj;
194
195 return dma_buf_export(&exp_info);
191} 196}
192 197
193struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev, 198struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev,
diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
index 82a1f4b57778..7998da27c500 100644
--- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
+++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
@@ -230,6 +230,13 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
230 struct drm_gem_object *gem_obj, int flags) 230 struct drm_gem_object *gem_obj, int flags)
231{ 231{
232 struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); 232 struct drm_i915_gem_object *obj = to_intel_bo(gem_obj);
233 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
234
235 exp_info.ops = &i915_dmabuf_ops;
236 exp_info.size = gem_obj->size;
237 exp_info.flags = flags;
238 exp_info.priv = gem_obj;
239
233 240
234 if (obj->ops->dmabuf_export) { 241 if (obj->ops->dmabuf_export) {
235 int ret = obj->ops->dmabuf_export(obj); 242 int ret = obj->ops->dmabuf_export(obj);
@@ -237,8 +244,7 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
237 return ERR_PTR(ret); 244 return ERR_PTR(ret);
238 } 245 }
239 246
240 return dma_buf_export(gem_obj, &i915_dmabuf_ops, gem_obj->size, flags, 247 return dma_buf_export(&exp_info);
241 NULL);
242} 248}
243 249
244static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) 250static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)
diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
index b46dabd9faf7..344fd789170d 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
@@ -171,7 +171,14 @@ static struct dma_buf_ops omap_dmabuf_ops = {
171struct dma_buf *omap_gem_prime_export(struct drm_device *dev, 171struct dma_buf *omap_gem_prime_export(struct drm_device *dev,
172 struct drm_gem_object *obj, int flags) 172 struct drm_gem_object *obj, int flags)
173{ 173{
174 return dma_buf_export(obj, &omap_dmabuf_ops, obj->size, flags, NULL); 174 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
175
176 exp_info.ops = &omap_dmabuf_ops;
177 exp_info.size = obj->size;
178 exp_info.flags = flags;
179 exp_info.priv = obj;
180
181 return dma_buf_export(&exp_info);
175} 182}
176 183
177struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev, 184struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev,
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
index cfb481943b6b..1217272a51f2 100644
--- a/drivers/gpu/drm/tegra/gem.c
+++ b/drivers/gpu/drm/tegra/gem.c
@@ -627,8 +627,14 @@ struct dma_buf *tegra_gem_prime_export(struct drm_device *drm,
627 struct drm_gem_object *gem, 627 struct drm_gem_object *gem,
628 int flags) 628 int flags)
629{ 629{
630 return dma_buf_export(gem, &tegra_gem_prime_dmabuf_ops, gem->size, 630 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
631 flags, NULL); 631
632 exp_info.ops = &tegra_gem_prime_dmabuf_ops;
633 exp_info.size = gem->size;
634 exp_info.flags = flags;
635 exp_info.priv = gem;
636
637 return dma_buf_export(&exp_info);
632} 638}
633 639
634struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm, 640struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm,
diff --git a/drivers/gpu/drm/ttm/ttm_object.c b/drivers/gpu/drm/ttm/ttm_object.c
index 12c87110db3a..4f5fa8d65fe9 100644
--- a/drivers/gpu/drm/ttm/ttm_object.c
+++ b/drivers/gpu/drm/ttm/ttm_object.c
@@ -683,6 +683,12 @@ int ttm_prime_handle_to_fd(struct ttm_object_file *tfile,
683 683
684 dma_buf = prime->dma_buf; 684 dma_buf = prime->dma_buf;
685 if (!dma_buf || !get_dma_buf_unless_doomed(dma_buf)) { 685 if (!dma_buf || !get_dma_buf_unless_doomed(dma_buf)) {
686 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
687
688 exp_info.ops = &tdev->ops;
689 exp_info.size = prime->size;
690 exp_info.flags = flags;
691 exp_info.priv = prime;
686 692
687 /* 693 /*
688 * Need to create a new dma_buf, with memory accounting. 694 * Need to create a new dma_buf, with memory accounting.
@@ -694,8 +700,7 @@ int ttm_prime_handle_to_fd(struct ttm_object_file *tfile,
694 goto out_unref; 700 goto out_unref;
695 } 701 }
696 702
697 dma_buf = dma_buf_export(prime, &tdev->ops, 703 dma_buf = dma_buf_export(&exp_info);
698 prime->size, flags, NULL);
699 if (IS_ERR(dma_buf)) { 704 if (IS_ERR(dma_buf)) {
700 ret = PTR_ERR(dma_buf); 705 ret = PTR_ERR(dma_buf);
701 ttm_mem_global_free(tdev->mem_glob, 706 ttm_mem_global_free(tdev->mem_glob,
diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
index ac8a66b4dfc2..e2243edd1ce3 100644
--- a/drivers/gpu/drm/udl/udl_dmabuf.c
+++ b/drivers/gpu/drm/udl/udl_dmabuf.c
@@ -202,7 +202,14 @@ static struct dma_buf_ops udl_dmabuf_ops = {
202struct dma_buf *udl_gem_prime_export(struct drm_device *dev, 202struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
203 struct drm_gem_object *obj, int flags) 203 struct drm_gem_object *obj, int flags)
204{ 204{
205 return dma_buf_export(obj, &udl_dmabuf_ops, obj->size, flags, NULL); 205 DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
206
207 exp_info.ops = &udl_dmabuf_ops;
208 exp_info.size = obj->size;
209 exp_info.flags = flags;
210 exp_info.priv = obj;
211
212 return dma_buf_export(&exp_info);
206} 213}
207 214
208static int udl_prime_create(struct drm_device *dev, 215static int udl_prime_create(struct drm_device *dev,