Skip to content

Commit

Permalink
staging: drm/omap: initial dmabuf/prime import support
Browse files Browse the repository at this point in the history
This adds support to re-import omapdrm's own buffers.  Importing buffers
allocated by other drivers can be added later, but for now is not needed
(we don't yet have any other exportering drivers to test with).

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Rob Clark authored and Greg Kroah-Hartman committed May 17, 2012
1 parent 8b6b569 commit 3080b83
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/staging/omapdrm/omap_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,9 @@ static struct drm_driver omap_drm_driver = {
.debugfs_cleanup = omap_debugfs_cleanup,
#endif
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
.gem_prime_export = omap_gem_prime_export,
.gem_prime_import = omap_gem_prime_import,
.gem_init_object = omap_gem_init_object,
.gem_free_object = omap_gem_free_object,
.gem_vm_ops = &omap_gem_vm_ops,
Expand Down
2 changes: 2 additions & 0 deletions drivers/staging/omapdrm/omap_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ size_t omap_gem_mmap_size(struct drm_gem_object *obj);

struct dma_buf * omap_gem_prime_export(struct drm_device *dev,
struct drm_gem_object *obj, int flags);
struct drm_gem_object * omap_gem_prime_import(struct drm_device *dev,
struct dma_buf *buffer);

static inline int align_pitch(int pitch, int width, int bpp)
{
Expand Down
22 changes: 22 additions & 0 deletions drivers/staging/omapdrm/omap_gem_dmabuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,3 +196,25 @@ struct dma_buf * omap_gem_prime_export(struct drm_device *dev,
{
return dma_buf_export(obj, &omap_dmabuf_ops, obj->size, 0600);
}

struct drm_gem_object * omap_gem_prime_import(struct drm_device *dev,
struct dma_buf *buffer)
{
struct drm_gem_object *obj;

/* is this one of own objects? */
if (buffer->ops == &omap_dmabuf_ops) {
obj = buffer->priv;
/* is it from our device? */
if (obj->dev == dev) {
drm_gem_object_reference(obj);
return obj;
}
}

/*
* TODO add support for importing buffers from other devices..
* for now we don't need this but would be nice to add eventually
*/
return ERR_PTR(-EINVAL);
}

0 comments on commit 3080b83

Please sign in to comment.