]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
5025407b BS |
2 | #ifndef __NVKM_GPUOBJ_H__ |
3 | #define __NVKM_GPUOBJ_H__ | |
9274f4a9 | 4 | #include <core/object.h> |
d8e83994 | 5 | #include <core/memory.h> |
9274f4a9 | 6 | #include <core/mm.h> |
5025407b BS |
7 | struct nvkm_vma; |
8 | struct nvkm_vm; | |
9274f4a9 BS |
9 | |
10 | #define NVOBJ_FLAG_ZERO_ALLOC 0x00000001 | |
9274f4a9 BS |
11 | #define NVOBJ_FLAG_HEAP 0x00000004 |
12 | ||
5025407b BS |
13 | struct nvkm_gpuobj { |
14 | struct nvkm_object object; | |
f027f491 | 15 | const struct nvkm_gpuobj_func *func; |
d8e83994 | 16 | struct nvkm_gpuobj *parent; |
f027f491 | 17 | struct nvkm_memory *memory; |
5025407b | 18 | struct nvkm_mm_node *node; |
9274f4a9 | 19 | |
9274f4a9 BS |
20 | u64 addr; |
21 | u32 size; | |
f027f491 | 22 | struct nvkm_mm heap; |
d8e83994 | 23 | |
f027f491 | 24 | void __iomem *map; |
d8e83994 BS |
25 | }; |
26 | ||
27 | struct nvkm_gpuobj_func { | |
f027f491 | 28 | void *(*acquire)(struct nvkm_gpuobj *); |
d8e83994 BS |
29 | void (*release)(struct nvkm_gpuobj *); |
30 | u32 (*rd32)(struct nvkm_gpuobj *, u32 offset); | |
31 | void (*wr32)(struct nvkm_gpuobj *, u32 offset, u32 data); | |
9274f4a9 BS |
32 | }; |
33 | ||
68f3f702 BS |
34 | int nvkm_gpuobj_new(struct nvkm_device *, u32 size, int align, bool zero, |
35 | struct nvkm_gpuobj *parent, struct nvkm_gpuobj **); | |
f027f491 | 36 | void nvkm_gpuobj_del(struct nvkm_gpuobj **); |
f027f491 BS |
37 | int nvkm_gpuobj_wrap(struct nvkm_memory *, struct nvkm_gpuobj **); |
38 | int nvkm_gpuobj_map(struct nvkm_gpuobj *, struct nvkm_vm *, u32 access, | |
39 | struct nvkm_vma *); | |
5025407b | 40 | void nvkm_gpuobj_unmap(struct nvkm_vma *); |
5d2083d2 AC |
41 | void nvkm_gpuobj_memcpy_to(struct nvkm_gpuobj *dst, u32 dstoffset, void *src, |
42 | u32 length); | |
43 | void nvkm_gpuobj_memcpy_from(void *dst, struct nvkm_gpuobj *src, u32 srcoffset, | |
44 | u32 length); | |
9274f4a9 | 45 | #endif |