aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_gem.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_gem.h')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_gem.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.h b/drivers/gpu/drm/exynos/exynos_drm_gem.h
index 67cdc9168708..e40fbad8b705 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.h
@@ -36,11 +36,15 @@
36 * @dma_addr: bus address(accessed by dma) to allocated memory region. 36 * @dma_addr: bus address(accessed by dma) to allocated memory region.
37 * - this address could be physical address without IOMMU and 37 * - this address could be physical address without IOMMU and
38 * device address with IOMMU. 38 * device address with IOMMU.
39 * @sgt: sg table to transfer page data.
40 * @pages: contain all pages to allocated memory region.
39 * @size: size of allocated memory region. 41 * @size: size of allocated memory region.
40 */ 42 */
41struct exynos_drm_gem_buf { 43struct exynos_drm_gem_buf {
42 void __iomem *kvaddr; 44 void __iomem *kvaddr;
43 dma_addr_t dma_addr; 45 dma_addr_t dma_addr;
46 struct sg_table *sgt;
47 struct page **pages;
44 unsigned long size; 48 unsigned long size;
45}; 49};
46 50
@@ -55,6 +59,8 @@ struct exynos_drm_gem_buf {
55 * by user request or at framebuffer creation. 59 * by user request or at framebuffer creation.
56 * continuous memory region allocated by user request 60 * continuous memory region allocated by user request
57 * or at framebuffer creation. 61 * or at framebuffer creation.
62 * @size: total memory size to physically non-continuous memory region.
63 * @flags: indicate memory type to allocated buffer and cache attruibute.
58 * 64 *
59 * P.S. this object would be transfered to user as kms_bo.handle so 65 * P.S. this object would be transfered to user as kms_bo.handle so
60 * user can access the buffer through kms_bo.handle. 66 * user can access the buffer through kms_bo.handle.
@@ -62,6 +68,8 @@ struct exynos_drm_gem_buf {
62struct exynos_drm_gem_obj { 68struct exynos_drm_gem_obj {
63 struct drm_gem_object base; 69 struct drm_gem_object base;
64 struct exynos_drm_gem_buf *buffer; 70 struct exynos_drm_gem_buf *buffer;
71 unsigned long size;
72 unsigned int flags;
65}; 73};
66 74
67/* destroy a buffer with gem object */ 75/* destroy a buffer with gem object */
@@ -69,7 +77,8 @@ void exynos_drm_gem_destroy(struct exynos_drm_gem_obj *exynos_gem_obj);
69 77
70/* create a new buffer with gem object */ 78/* create a new buffer with gem object */
71struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev, 79struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,
72 unsigned long size); 80 unsigned int flags,
81 unsigned long size);
73 82
74/* 83/*
75 * request gem object creation and buffer allocation as the size 84 * request gem object creation and buffer allocation as the size
@@ -79,6 +88,24 @@ struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,
79int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data, 88int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data,
80 struct drm_file *file_priv); 89 struct drm_file *file_priv);
81 90
91/*
92 * get dma address from gem handle and this function could be used for
93 * other drivers such as 2d/3d acceleration drivers.
94 * with this function call, gem object reference count would be increased.
95 */
96void *exynos_drm_gem_get_dma_addr(struct drm_device *dev,
97 unsigned int gem_handle,
98 struct drm_file *file_priv);
99
100/*
101 * put dma address from gem handle and this function could be used for
102 * other drivers such as 2d/3d acceleration drivers.
103 * with this function call, gem object reference count would be decreased.
104 */
105void exynos_drm_gem_put_dma_addr(struct drm_device *dev,
106 unsigned int gem_handle,
107 struct drm_file *file_priv);
108
82/* get buffer offset to map to user space. */ 109/* get buffer offset to map to user space. */
83int exynos_drm_gem_map_offset_ioctl(struct drm_device *dev, void *data, 110int exynos_drm_gem_map_offset_ioctl(struct drm_device *dev, void *data,
84 struct drm_file *file_priv); 111 struct drm_file *file_priv);