1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __NOUVEAU_MM_H__ 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __NOUVEAU_MM_H__ 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgunion nouveau_bo_config; 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nouveau_mman; 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Since a resource can be migrated, we need to decouple allocations from 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * them. This struct is linked with fences for delayed freeing of allocs. 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nouveau_mm_allocation { 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct nouveau_mm_allocation *next; 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *priv; 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t offset; 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern struct nouveau_mman * 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnouveau_mm_create(struct nouveau_device *, uint32_t domain, 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union nouveau_bo_config *); 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern void 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnouveau_mm_destroy(struct nouveau_mman *); 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern struct nouveau_mm_allocation * 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnouveau_mm_allocate(struct nouveau_mman *, uint32_t size, 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct nouveau_bo **, uint32_t *offset); 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern void 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnouveau_mm_free(struct nouveau_mm_allocation *); 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgextern void 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnouveau_mm_free_work(void *); 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // __NOUVEAU_MM_H__ 34