1*4882a593Smuzhiyun #ifndef __NOUVEAU_VMA_H__ 2*4882a593Smuzhiyun #define __NOUVEAU_VMA_H__ 3*4882a593Smuzhiyun #include <nvif/vmm.h> 4*4882a593Smuzhiyun struct nouveau_bo; 5*4882a593Smuzhiyun struct nouveau_mem; 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun struct nouveau_vma { 8*4882a593Smuzhiyun struct nouveau_vmm *vmm; 9*4882a593Smuzhiyun int refs; 10*4882a593Smuzhiyun struct list_head head; 11*4882a593Smuzhiyun u64 addr; 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun struct nouveau_mem *mem; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun struct nouveau_fence *fence; 16*4882a593Smuzhiyun }; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct nouveau_vma *nouveau_vma_find(struct nouveau_bo *, struct nouveau_vmm *); 19*4882a593Smuzhiyun int nouveau_vma_new(struct nouveau_bo *, struct nouveau_vmm *, 20*4882a593Smuzhiyun struct nouveau_vma **); 21*4882a593Smuzhiyun void nouveau_vma_del(struct nouveau_vma **); 22*4882a593Smuzhiyun int nouveau_vma_map(struct nouveau_vma *, struct nouveau_mem *); 23*4882a593Smuzhiyun void nouveau_vma_unmap(struct nouveau_vma *); 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun struct nouveau_vmm { 26*4882a593Smuzhiyun struct nouveau_cli *cli; 27*4882a593Smuzhiyun struct nvif_vmm vmm; 28*4882a593Smuzhiyun struct nouveau_svmm *svmm; 29*4882a593Smuzhiyun }; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun int nouveau_vmm_init(struct nouveau_cli *, s32 oclass, struct nouveau_vmm *); 32*4882a593Smuzhiyun void nouveau_vmm_fini(struct nouveau_vmm *); 33*4882a593Smuzhiyun #endif 34