1ff540b76SGerd Hoffmann /* SPDX-License-Identifier: GPL-2.0-or-later */
2ff540b76SGerd Hoffmann 
3ff540b76SGerd Hoffmann #ifndef DRM_GEM_TTM_HELPER_H
4ff540b76SGerd Hoffmann #define DRM_GEM_TTM_HELPER_H
5ff540b76SGerd Hoffmann 
6*ae710a45SAndy Shevchenko #include <linux/container_of.h>
7ff540b76SGerd Hoffmann 
8ff540b76SGerd Hoffmann #include <drm/drm_device.h>
95690e486SThomas Zimmermann #include <drm/drm_gem.h>
10ff540b76SGerd Hoffmann #include <drm/ttm/ttm_bo_api.h>
11ff540b76SGerd Hoffmann #include <drm/ttm/ttm_bo_driver.h>
12ff540b76SGerd Hoffmann 
1343676605SThomas Zimmermann struct dma_buf_map;
1443676605SThomas Zimmermann 
15ff540b76SGerd Hoffmann #define drm_gem_ttm_of_gem(gem_obj) \
16ff540b76SGerd Hoffmann 	container_of(gem_obj, struct ttm_buffer_object, base)
17ff540b76SGerd Hoffmann 
18ff540b76SGerd Hoffmann void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent,
19ff540b76SGerd Hoffmann 			    const struct drm_gem_object *gem);
2043676605SThomas Zimmermann int drm_gem_ttm_vmap(struct drm_gem_object *gem,
2143676605SThomas Zimmermann 		     struct dma_buf_map *map);
2243676605SThomas Zimmermann void drm_gem_ttm_vunmap(struct drm_gem_object *gem,
2343676605SThomas Zimmermann 			struct dma_buf_map *map);
24231927d9SGerd Hoffmann int drm_gem_ttm_mmap(struct drm_gem_object *gem,
25231927d9SGerd Hoffmann 		     struct vm_area_struct *vma);
26ff540b76SGerd Hoffmann 
275690e486SThomas Zimmermann int drm_gem_ttm_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
285690e486SThomas Zimmermann 				uint32_t handle, uint64_t *offset);
295690e486SThomas Zimmermann 
30ff540b76SGerd Hoffmann #endif
31