xref: /openbmc/linux/drivers/gpu/drm/lima/lima_gem.h (revision ead5d1f4d877e92c051e1a1ade623d0d30e71619)
1a1d2a633SQiang Yu /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2a1d2a633SQiang Yu /* Copyright 2017-2019 Qiang Yu <yuq825@gmail.com> */
3a1d2a633SQiang Yu 
4a1d2a633SQiang Yu #ifndef __LIMA_GEM_H__
5a1d2a633SQiang Yu #define __LIMA_GEM_H__
6a1d2a633SQiang Yu 
7d61dd248SQiang Yu #include <drm/drm_gem_shmem_helper.h>
8d61dd248SQiang Yu 
9a1d2a633SQiang Yu struct lima_submit;
10*6aebc51dSQiang Yu struct lima_vm;
11a1d2a633SQiang Yu 
12d61dd248SQiang Yu struct lima_bo {
13d61dd248SQiang Yu 	struct drm_gem_shmem_object base;
14a1d2a633SQiang Yu 
15d61dd248SQiang Yu 	struct mutex lock;
16d61dd248SQiang Yu 	struct list_head va;
17*6aebc51dSQiang Yu 
18*6aebc51dSQiang Yu 	size_t heap_size;
19d61dd248SQiang Yu };
20d61dd248SQiang Yu 
21d61dd248SQiang Yu static inline struct lima_bo *
to_lima_bo(struct drm_gem_object * obj)22d61dd248SQiang Yu to_lima_bo(struct drm_gem_object *obj)
23d61dd248SQiang Yu {
24d61dd248SQiang Yu 	return container_of(to_drm_gem_shmem_obj(obj), struct lima_bo, base);
25d61dd248SQiang Yu }
26d61dd248SQiang Yu 
lima_bo_size(struct lima_bo * bo)27d61dd248SQiang Yu static inline size_t lima_bo_size(struct lima_bo *bo)
28d61dd248SQiang Yu {
29d61dd248SQiang Yu 	return bo->base.base.size;
30d61dd248SQiang Yu }
31d61dd248SQiang Yu 
lima_bo_resv(struct lima_bo * bo)32d61dd248SQiang Yu static inline struct dma_resv *lima_bo_resv(struct lima_bo *bo)
33d61dd248SQiang Yu {
34d61dd248SQiang Yu 	return bo->base.base.resv;
35d61dd248SQiang Yu }
36d61dd248SQiang Yu 
37*6aebc51dSQiang Yu int lima_heap_alloc(struct lima_bo *bo, struct lima_vm *vm);
38d61dd248SQiang Yu struct drm_gem_object *lima_gem_create_object(struct drm_device *dev, size_t size);
39a1d2a633SQiang Yu int lima_gem_create_handle(struct drm_device *dev, struct drm_file *file,
40a1d2a633SQiang Yu 			   u32 size, u32 flags, u32 *handle);
41a1d2a633SQiang Yu int lima_gem_get_info(struct drm_file *file, u32 handle, u32 *va, u64 *offset);
42a1d2a633SQiang Yu int lima_gem_submit(struct drm_file *file, struct lima_submit *submit);
43a1d2a633SQiang Yu int lima_gem_wait(struct drm_file *file, u32 handle, u32 op, s64 timeout_ns);
44a1d2a633SQiang Yu 
45a1d2a633SQiang Yu void lima_set_vma_flags(struct vm_area_struct *vma);
46a1d2a633SQiang Yu 
47a1d2a633SQiang Yu #endif
48