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