Lines Matching refs:mmu
28 nvif_mmu_fini(struct nvif_mmu *mmu) in nvif_mmu_fini() argument
30 kfree(mmu->kind); in nvif_mmu_fini()
31 kfree(mmu->type); in nvif_mmu_fini()
32 kfree(mmu->heap); in nvif_mmu_fini()
33 nvif_object_fini(&mmu->object); in nvif_mmu_fini()
37 nvif_mmu_init(struct nvif_object *parent, s32 oclass, struct nvif_mmu *mmu) in nvif_mmu_init() argument
49 mmu->heap = NULL; in nvif_mmu_init()
50 mmu->type = NULL; in nvif_mmu_init()
51 mmu->kind = NULL; in nvif_mmu_init()
54 &mmu->object); in nvif_mmu_init()
58 mmu->dmabits = args.dmabits; in nvif_mmu_init()
59 mmu->heap_nr = args.heap_nr; in nvif_mmu_init()
60 mmu->type_nr = args.type_nr; in nvif_mmu_init()
61 mmu->kind_nr = args.kind_nr; in nvif_mmu_init()
63 ret = nvif_mclass(&mmu->object, mems); in nvif_mmu_init()
66 mmu->mem = mems[ret].oclass; in nvif_mmu_init()
68 mmu->heap = kmalloc_array(mmu->heap_nr, sizeof(*mmu->heap), in nvif_mmu_init()
70 mmu->type = kmalloc_array(mmu->type_nr, sizeof(*mmu->type), in nvif_mmu_init()
72 if (ret = -ENOMEM, !mmu->heap || !mmu->type) in nvif_mmu_init()
75 mmu->kind = kmalloc_array(mmu->kind_nr, sizeof(*mmu->kind), in nvif_mmu_init()
77 if (!mmu->kind && mmu->kind_nr) in nvif_mmu_init()
80 for (i = 0; i < mmu->heap_nr; i++) { in nvif_mmu_init()
83 ret = nvif_object_mthd(&mmu->object, NVIF_MMU_V0_HEAP, in nvif_mmu_init()
88 mmu->heap[i].size = args.size; in nvif_mmu_init()
91 for (i = 0; i < mmu->type_nr; i++) { in nvif_mmu_init()
94 ret = nvif_object_mthd(&mmu->object, NVIF_MMU_V0_TYPE, in nvif_mmu_init()
99 mmu->type[i].type = 0; in nvif_mmu_init()
100 if (args.vram) mmu->type[i].type |= NVIF_MEM_VRAM; in nvif_mmu_init()
101 if (args.host) mmu->type[i].type |= NVIF_MEM_HOST; in nvif_mmu_init()
102 if (args.comp) mmu->type[i].type |= NVIF_MEM_COMP; in nvif_mmu_init()
103 if (args.disp) mmu->type[i].type |= NVIF_MEM_DISP; in nvif_mmu_init()
104 if (args.kind ) mmu->type[i].type |= NVIF_MEM_KIND; in nvif_mmu_init()
105 if (args.mappable) mmu->type[i].type |= NVIF_MEM_MAPPABLE; in nvif_mmu_init()
106 if (args.coherent) mmu->type[i].type |= NVIF_MEM_COHERENT; in nvif_mmu_init()
107 if (args.uncached) mmu->type[i].type |= NVIF_MEM_UNCACHED; in nvif_mmu_init()
108 mmu->type[i].heap = args.heap; in nvif_mmu_init()
111 if (mmu->kind_nr) { in nvif_mmu_init()
113 u32 argc = sizeof(*kind) + sizeof(*kind->data) * mmu->kind_nr; in nvif_mmu_init()
118 kind->count = mmu->kind_nr; in nvif_mmu_init()
120 ret = nvif_object_mthd(&mmu->object, NVIF_MMU_V0_KIND, in nvif_mmu_init()
123 memcpy(mmu->kind, kind->data, kind->count); in nvif_mmu_init()
129 nvif_mmu_fini(mmu); in nvif_mmu_init()