xref: /netbsd-src/sys/external/bsd/drm2/dist/drm/xen/xen_drm_front_gem.h (revision 41ec02673d281bbb3d38e6c78504ce6e30c228c1)
1 /*	$NetBSD: xen_drm_front_gem.h,v 1.2 2021/12/18 23:45:45 riastradh Exp $	*/
2 
3 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
4 
5 /*
6  *  Xen para-virtual DRM device
7  *
8  * Copyright (C) 2016-2018 EPAM Systems Inc.
9  *
10  * Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
11  */
12 
13 #ifndef __XEN_DRM_FRONT_GEM_H
14 #define __XEN_DRM_FRONT_GEM_H
15 
16 struct dma_buf_attachment;
17 struct drm_device;
18 struct drm_gem_object;
19 struct file;
20 struct sg_table;
21 struct vm_area_struct;
22 
23 struct drm_gem_object *xen_drm_front_gem_create(struct drm_device *dev,
24 						size_t size);
25 
26 struct drm_gem_object *
27 xen_drm_front_gem_import_sg_table(struct drm_device *dev,
28 				  struct dma_buf_attachment *attach,
29 				  struct sg_table *sgt);
30 
31 struct sg_table *xen_drm_front_gem_get_sg_table(struct drm_gem_object *gem_obj);
32 
33 struct page **xen_drm_front_gem_get_pages(struct drm_gem_object *obj);
34 
35 void xen_drm_front_gem_free_object_unlocked(struct drm_gem_object *gem_obj);
36 
37 int xen_drm_front_gem_mmap(struct file *filp, struct vm_area_struct *vma);
38 
39 void *xen_drm_front_gem_prime_vmap(struct drm_gem_object *gem_obj);
40 
41 void xen_drm_front_gem_prime_vunmap(struct drm_gem_object *gem_obj,
42 				    void *vaddr);
43 
44 int xen_drm_front_gem_prime_mmap(struct drm_gem_object *gem_obj,
45 				 struct vm_area_struct *vma);
46 
47 #endif /* __XEN_DRM_FRONT_GEM_H */
48