1c575b7eeSOleksandr Andrushchenko /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2c575b7eeSOleksandr Andrushchenko 
3c575b7eeSOleksandr Andrushchenko /*
4c575b7eeSOleksandr Andrushchenko  *  Xen para-virtual DRM device
5c575b7eeSOleksandr Andrushchenko  *
6c575b7eeSOleksandr Andrushchenko  * Copyright (C) 2016-2018 EPAM Systems Inc.
7c575b7eeSOleksandr Andrushchenko  *
8c575b7eeSOleksandr Andrushchenko  * Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
9c575b7eeSOleksandr Andrushchenko  */
10c575b7eeSOleksandr Andrushchenko 
11c575b7eeSOleksandr Andrushchenko #ifndef __XEN_DRM_FRONT_GEM_H
12c575b7eeSOleksandr Andrushchenko #define __XEN_DRM_FRONT_GEM_H
13c575b7eeSOleksandr Andrushchenko 
142ea2269eSSam Ravnborg struct dma_buf_attachment;
152ea2269eSSam Ravnborg struct drm_device;
162ea2269eSSam Ravnborg struct drm_gem_object;
172ea2269eSSam Ravnborg struct file;
182ea2269eSSam Ravnborg struct sg_table;
192ea2269eSSam Ravnborg struct vm_area_struct;
20c575b7eeSOleksandr Andrushchenko 
21c575b7eeSOleksandr Andrushchenko struct drm_gem_object *xen_drm_front_gem_create(struct drm_device *dev,
22c575b7eeSOleksandr Andrushchenko 						size_t size);
23c575b7eeSOleksandr Andrushchenko 
24c575b7eeSOleksandr Andrushchenko struct drm_gem_object *
25c575b7eeSOleksandr Andrushchenko xen_drm_front_gem_import_sg_table(struct drm_device *dev,
26c575b7eeSOleksandr Andrushchenko 				  struct dma_buf_attachment *attach,
27c575b7eeSOleksandr Andrushchenko 				  struct sg_table *sgt);
28c575b7eeSOleksandr Andrushchenko 
29c575b7eeSOleksandr Andrushchenko struct sg_table *xen_drm_front_gem_get_sg_table(struct drm_gem_object *gem_obj);
30c575b7eeSOleksandr Andrushchenko 
31c575b7eeSOleksandr Andrushchenko struct page **xen_drm_front_gem_get_pages(struct drm_gem_object *obj);
32c575b7eeSOleksandr Andrushchenko 
33c575b7eeSOleksandr Andrushchenko void xen_drm_front_gem_free_object_unlocked(struct drm_gem_object *gem_obj);
34c575b7eeSOleksandr Andrushchenko 
35c575b7eeSOleksandr Andrushchenko int xen_drm_front_gem_mmap(struct file *filp, struct vm_area_struct *vma);
36c575b7eeSOleksandr Andrushchenko 
37c575b7eeSOleksandr Andrushchenko void *xen_drm_front_gem_prime_vmap(struct drm_gem_object *gem_obj);
38c575b7eeSOleksandr Andrushchenko 
39c575b7eeSOleksandr Andrushchenko void xen_drm_front_gem_prime_vunmap(struct drm_gem_object *gem_obj,
40c575b7eeSOleksandr Andrushchenko 				    void *vaddr);
41c575b7eeSOleksandr Andrushchenko 
42c575b7eeSOleksandr Andrushchenko int xen_drm_front_gem_prime_mmap(struct drm_gem_object *gem_obj,
43c575b7eeSOleksandr Andrushchenko 				 struct vm_area_struct *vma);
44c575b7eeSOleksandr Andrushchenko 
45c575b7eeSOleksandr Andrushchenko #endif /* __XEN_DRM_FRONT_GEM_H */
46