1848b8605Smrg#ifndef __NOUVEAU_MM_H__ 2848b8605Smrg#define __NOUVEAU_MM_H__ 3848b8605Smrg 4848b8605Smrgunion nouveau_bo_config; 5848b8605Smrgstruct nouveau_mman; 6848b8605Smrg 7848b8605Smrg/* Since a resource can be migrated, we need to decouple allocations from 8848b8605Smrg * them. This struct is linked with fences for delayed freeing of allocs. 9848b8605Smrg */ 10848b8605Smrgstruct nouveau_mm_allocation { 11848b8605Smrg struct nouveau_mm_allocation *next; 12848b8605Smrg void *priv; 13848b8605Smrg uint32_t offset; 14848b8605Smrg}; 15848b8605Smrg 16848b8605Smrgextern struct nouveau_mman * 17848b8605Smrgnouveau_mm_create(struct nouveau_device *, uint32_t domain, 18848b8605Smrg union nouveau_bo_config *); 19848b8605Smrg 20848b8605Smrgextern void 21848b8605Smrgnouveau_mm_destroy(struct nouveau_mman *); 22848b8605Smrg 23848b8605Smrgextern struct nouveau_mm_allocation * 24848b8605Smrgnouveau_mm_allocate(struct nouveau_mman *, uint32_t size, 25848b8605Smrg struct nouveau_bo **, uint32_t *offset); 26848b8605Smrg 27848b8605Smrgextern void 28848b8605Smrgnouveau_mm_free(struct nouveau_mm_allocation *); 29848b8605Smrg 30848b8605Smrgextern void 31848b8605Smrgnouveau_mm_free_work(void *); 32848b8605Smrg 33848b8605Smrg#endif // __NOUVEAU_MM_H__ 34