1
2
3
4
5
6
7
8#ifndef _EXYNOS_DRM_GEM_H_
9#define _EXYNOS_DRM_GEM_H_
10
11#include <drm/drm_gem.h>
12#include <linux/mm_types.h>
13
14#define to_exynos_gem(x) container_of(x, struct exynos_drm_gem, base)
15
16#define IS_NONCONTIG_BUFFER(f) (f & EXYNOS_BO_NONCONTIG)
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38struct exynos_drm_gem {
39 struct drm_gem_object base;
40 unsigned int flags;
41 unsigned long size;
42 void *cookie;
43 void *kvaddr;
44 dma_addr_t dma_addr;
45 unsigned long dma_attrs;
46 struct sg_table *sgt;
47};
48
49
50void exynos_drm_gem_destroy(struct exynos_drm_gem *exynos_gem);
51
52
53struct exynos_drm_gem *exynos_drm_gem_create(struct drm_device *dev,
54 unsigned int flags,
55 unsigned long size,
56 bool kvmap);
57
58
59
60
61
62
63int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data,
64 struct drm_file *file_priv);
65
66
67int exynos_drm_gem_map_ioctl(struct drm_device *dev, void *data,
68 struct drm_file *file_priv);
69
70
71
72
73
74
75struct exynos_drm_gem *exynos_drm_gem_get(struct drm_file *filp,
76 unsigned int gem_handle);
77
78
79
80
81
82static inline void exynos_drm_gem_put(struct exynos_drm_gem *exynos_gem)
83{
84 drm_gem_object_put(&exynos_gem->base);
85}
86
87
88int exynos_drm_gem_get_ioctl(struct drm_device *dev, void *data,
89 struct drm_file *file_priv);
90
91
92void exynos_drm_gem_free_object(struct drm_gem_object *obj);
93
94
95int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
96 struct drm_device *dev,
97 struct drm_mode_create_dumb *args);
98
99
100int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
101
102
103struct drm_gem_object *exynos_drm_gem_prime_import(struct drm_device *dev,
104 struct dma_buf *dma_buf);
105struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj);
106struct drm_gem_object *
107exynos_drm_gem_prime_import_sg_table(struct drm_device *dev,
108 struct dma_buf_attachment *attach,
109 struct sg_table *sgt);
110int exynos_drm_gem_prime_mmap(struct drm_gem_object *obj,
111 struct vm_area_struct *vma);
112
113#endif
114