~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/drm/drm_prime.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Copyright © 2012 Red Hat
  3  * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
  4  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
  5  * Copyright (c) 2009-2010, Code Aurora Forum.
  6  *
  7  * Permission is hereby granted, free of charge, to any person obtaining a
  8  * copy of this software and associated documentation files (the "Software"),
  9  * to deal in the Software without restriction, including without limitation
 10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 11  * and/or sell copies of the Software, and to permit persons to whom the
 12  * Software is furnished to do so, subject to the following conditions:
 13  *
 14  * The above copyright notice and this permission notice (including the next
 15  * paragraph) shall be included in all copies or substantial portions of the
 16  * Software.
 17  *
 18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 23  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 24  * IN THE SOFTWARE.
 25  *
 26  * Authors:
 27  *      Dave Airlie <airlied@redhat.com>
 28  *      Rob Clark <rob.clark@linaro.org>
 29  *
 30  */
 31 
 32 #ifndef __DRM_PRIME_H__
 33 #define __DRM_PRIME_H__
 34 
 35 #include <linux/mutex.h>
 36 #include <linux/rbtree.h>
 37 #include <linux/scatterlist.h>
 38 
 39 /**
 40  * struct drm_prime_file_private - per-file tracking for PRIME
 41  *
 42  * This just contains the internal &struct dma_buf and handle caches for each
 43  * &struct drm_file used by the PRIME core code.
 44  */
 45 struct drm_prime_file_private {
 46 /* private: */
 47         struct mutex lock;
 48         struct rb_root dmabufs;
 49         struct rb_root handles;
 50 };
 51 
 52 struct device;
 53 
 54 struct dma_buf_export_info;
 55 struct dma_buf;
 56 struct dma_buf_attachment;
 57 struct iosys_map;
 58 
 59 enum dma_data_direction;
 60 
 61 struct drm_device;
 62 struct drm_gem_object;
 63 struct drm_file;
 64 
 65 /* core prime functions */
 66 struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
 67                                       struct dma_buf_export_info *exp_info);
 68 void drm_gem_dmabuf_release(struct dma_buf *dma_buf);
 69 
 70 int drm_gem_prime_fd_to_handle(struct drm_device *dev,
 71                                struct drm_file *file_priv, int prime_fd, uint32_t *handle);
 72 int drm_gem_prime_handle_to_fd(struct drm_device *dev,
 73                                struct drm_file *file_priv, uint32_t handle, uint32_t flags,
 74                                int *prime_fd);
 75 
 76 /* helper functions for exporting */
 77 int drm_gem_map_attach(struct dma_buf *dma_buf,
 78                        struct dma_buf_attachment *attach);
 79 void drm_gem_map_detach(struct dma_buf *dma_buf,
 80                         struct dma_buf_attachment *attach);
 81 struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach,
 82                                      enum dma_data_direction dir);
 83 void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach,
 84                            struct sg_table *sgt,
 85                            enum dma_data_direction dir);
 86 int drm_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct iosys_map *map);
 87 void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map);
 88 
 89 int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
 90 int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma);
 91 
 92 struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
 93                                        struct page **pages, unsigned int nr_pages);
 94 struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
 95                                      int flags);
 96 
 97 unsigned long drm_prime_get_contiguous_size(struct sg_table *sgt);
 98 
 99 /* helper functions for importing */
100 struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
101                                                 struct dma_buf *dma_buf,
102                                                 struct device *attach_dev);
103 struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
104                                             struct dma_buf *dma_buf);
105 
106 void drm_prime_gem_destroy(struct drm_gem_object *obj, struct sg_table *sg);
107 
108 int drm_prime_sg_to_page_array(struct sg_table *sgt, struct page **pages,
109                                int max_pages);
110 int drm_prime_sg_to_dma_addr_array(struct sg_table *sgt, dma_addr_t *addrs,
111                                    int max_pages);
112 
113 #endif /* __DRM_PRIME_H__ */
114 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php