Lines Matching refs:mmu

22 #include <nvif/mmu.h>
28 nvif_mmu_dtor(struct nvif_mmu *mmu)
30 kfree(mmu->kind);
31 kfree(mmu->type);
32 kfree(mmu->heap);
33 nvif_object_dtor(&mmu->object);
38 struct nvif_mmu *mmu)
50 mmu->heap = NULL;
51 mmu->type = NULL;
52 mmu->kind = NULL;
55 &args, sizeof(args), &mmu->object);
59 mmu->dmabits = args.dmabits;
60 mmu->heap_nr = args.heap_nr;
61 mmu->type_nr = args.type_nr;
62 mmu->kind_nr = args.kind_nr;
64 ret = nvif_mclass(&mmu->object, mems);
67 mmu->mem = mems[ret].oclass;
69 mmu->heap = kmalloc_array(mmu->heap_nr, sizeof(*mmu->heap),
71 mmu->type = kmalloc_array(mmu->type_nr, sizeof(*mmu->type),
73 if (ret = -ENOMEM, !mmu->heap || !mmu->type)
76 mmu->kind = kmalloc_array(mmu->kind_nr, sizeof(*mmu->kind),
78 if (!mmu->kind && mmu->kind_nr)
81 for (i = 0; i < mmu->heap_nr; i++) {
84 ret = nvif_object_mthd(&mmu->object, NVIF_MMU_V0_HEAP,
89 mmu->heap[i].size = args.size;
92 for (i = 0; i < mmu->type_nr; i++) {
95 ret = nvif_object_mthd(&mmu->object, NVIF_MMU_V0_TYPE,
100 mmu->type[i].type = 0;
101 if (args.vram) mmu->type[i].type |= NVIF_MEM_VRAM;
102 if (args.host) mmu->type[i].type |= NVIF_MEM_HOST;
103 if (args.comp) mmu->type[i].type |= NVIF_MEM_COMP;
104 if (args.disp) mmu->type[i].type |= NVIF_MEM_DISP;
105 if (args.kind ) mmu->type[i].type |= NVIF_MEM_KIND;
106 if (args.mappable) mmu->type[i].type |= NVIF_MEM_MAPPABLE;
107 if (args.coherent) mmu->type[i].type |= NVIF_MEM_COHERENT;
108 if (args.uncached) mmu->type[i].type |= NVIF_MEM_UNCACHED;
109 mmu->type[i].heap = args.heap;
112 if (mmu->kind_nr) {
114 size_t argc = struct_size(kind, data, mmu->kind_nr);
119 kind->count = mmu->kind_nr;
121 ret = nvif_object_mthd(&mmu->object, NVIF_MMU_V0_KIND,
124 memcpy(mmu->kind, kind->data, kind->count);
125 mmu->kind_inv = kind->kind_inv;
131 nvif_mmu_dtor(mmu);