diff options
| author | Sumit Semwal <sumit.semwal@linaro.org> | 2015-01-23 02:23:43 -0500 |
|---|---|---|
| committer | Sumit Semwal <sumit.semwal@linaro.org> | 2015-04-21 05:17:16 -0400 |
| commit | d8fbe341beb617ebb22b98fb893e4aa32ae2d864 (patch) | |
| tree | 2e19c951d2b6ffef2319d87ec8a6c39e4e1ab8ee /drivers/gpu/drm | |
| parent | 646da63172f660ba84f195c1165360a9b73583ee (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.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/drm_prime.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_dmabuf.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_dmabuf.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/tegra/gem.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_object.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/udl/udl_dmabuf.c | 9 |
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 * | |||
| 538 | armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, | 538 | armada_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 | ||
| 545 | struct drm_gem_object * | 551 | struct 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 = { | |||
| 339 | struct dma_buf *drm_gem_prime_export(struct drm_device *dev, | 339 | struct 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 | } |
| 350 | EXPORT_SYMBOL(drm_gem_prime_export); | 354 | EXPORT_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 | ||
| 193 | struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev, | 198 | struct 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 | ||
| 244 | static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) | 250 | static 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 = { | |||
| 171 | struct dma_buf *omap_gem_prime_export(struct drm_device *dev, | 171 | struct 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 | ||
| 177 | struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev, | 184 | struct 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 | ||
| 634 | struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm, | 640 | struct 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 = { | |||
| 202 | struct dma_buf *udl_gem_prime_export(struct drm_device *dev, | 202 | struct 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 | ||
| 208 | static int udl_prime_create(struct drm_device *dev, | 215 | static int udl_prime_create(struct drm_device *dev, |
