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 
6ae710a45SAndy Shevchenko #include <linux/container_of.h>
7ff540b76SGerd Hoffmann 
8ff540b76SGerd Hoffmann #include <drm/drm_device.h>
95690e486SThomas Zimmermann #include <drm/drm_gem.h>
10*a3185f91SChristian König #include <drm/ttm/ttm_bo.h>
11ff540b76SGerd Hoffmann 
127938f421SLucas De Marchi struct iosys_map;
1343676605SThomas Zimmermann 
14ff540b76SGerd Hoffmann #define drm_gem_ttm_of_gem(gem_obj) \
15ff540b76SGerd Hoffmann 	container_of(gem_obj, struct ttm_buffer_object, base)
16ff540b76SGerd Hoffmann 
17ff540b76SGerd Hoffmann void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent,
18ff540b76SGerd Hoffmann 			    const struct drm_gem_object *gem);
1943676605SThomas Zimmermann int drm_gem_ttm_vmap(struct drm_gem_object *gem,
207938f421SLucas De Marchi 		     struct iosys_map *map);
2143676605SThomas Zimmermann void drm_gem_ttm_vunmap(struct drm_gem_object *gem,
227938f421SLucas De Marchi 			struct iosys_map *map);
23231927d9SGerd Hoffmann int drm_gem_ttm_mmap(struct drm_gem_object *gem,
24231927d9SGerd Hoffmann 		     struct vm_area_struct *vma);
25ff540b76SGerd Hoffmann 
265690e486SThomas Zimmermann int drm_gem_ttm_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
275690e486SThomas Zimmermann 				uint32_t handle, uint64_t *offset);
285690e486SThomas Zimmermann 
29ff540b76SGerd Hoffmann #endif
30