124e8375bSBen Skeggs #ifndef __NOUVEAU_VMA_H__
224e8375bSBen Skeggs #define __NOUVEAU_VMA_H__
396da0bcdSBen Skeggs #include <nvif/vmm.h>
424e8375bSBen Skeggs struct nouveau_bo;
524e8375bSBen Skeggs struct nouveau_mem;
624e8375bSBen Skeggs 
724e8375bSBen Skeggs struct nouveau_vma {
824e8375bSBen Skeggs 	struct nouveau_vmm *vmm;
924e8375bSBen Skeggs 	int refs;
1024e8375bSBen Skeggs 	struct list_head head;
1124e8375bSBen Skeggs 	u64 addr;
1224e8375bSBen Skeggs 
1324e8375bSBen Skeggs 	struct nouveau_mem *mem;
140db912afSBen Skeggs 
150db912afSBen Skeggs 	struct nouveau_fence *fence;
1624e8375bSBen Skeggs };
1724e8375bSBen Skeggs 
1824e8375bSBen Skeggs struct nouveau_vma *nouveau_vma_find(struct nouveau_bo *, struct nouveau_vmm *);
1924e8375bSBen Skeggs int nouveau_vma_new(struct nouveau_bo *, struct nouveau_vmm *,
2024e8375bSBen Skeggs 		    struct nouveau_vma **);
2124e8375bSBen Skeggs void nouveau_vma_del(struct nouveau_vma **);
2224e8375bSBen Skeggs int nouveau_vma_map(struct nouveau_vma *, struct nouveau_mem *);
2324e8375bSBen Skeggs void nouveau_vma_unmap(struct nouveau_vma *);
2424e8375bSBen Skeggs 
2524e8375bSBen Skeggs struct nouveau_vmm {
2624e8375bSBen Skeggs 	struct nouveau_cli *cli;
2796da0bcdSBen Skeggs 	struct nvif_vmm vmm;
28eeaf06acSBen Skeggs 	struct nouveau_svmm *svmm;
2924e8375bSBen Skeggs };
3024e8375bSBen Skeggs 
3124e8375bSBen Skeggs int nouveau_vmm_init(struct nouveau_cli *, s32 oclass, struct nouveau_vmm *);
3224e8375bSBen Skeggs void nouveau_vmm_fini(struct nouveau_vmm *);
3324e8375bSBen Skeggs #endif
34