xref: /openbmc/linux/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/umem.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
1*c83c4097SBen Skeggs #ifndef __NVKM_UMEM_H__
2*c83c4097SBen Skeggs #define __NVKM_UMEM_H__
3*c83c4097SBen Skeggs #define nvkm_umem(p) container_of((p), struct nvkm_umem, object)
4*c83c4097SBen Skeggs #include <core/object.h>
5*c83c4097SBen Skeggs #include "mem.h"
6*c83c4097SBen Skeggs 
7*c83c4097SBen Skeggs struct nvkm_umem {
8*c83c4097SBen Skeggs 	struct nvkm_object object;
9*c83c4097SBen Skeggs 	struct nvkm_mmu *mmu;
10*c83c4097SBen Skeggs 	u8 type:8;
11*c83c4097SBen Skeggs 	bool mappable:1;
12*c83c4097SBen Skeggs 	bool io:1;
13*c83c4097SBen Skeggs 
14*c83c4097SBen Skeggs 	struct nvkm_memory *memory;
15*c83c4097SBen Skeggs 	struct list_head head;
16*c83c4097SBen Skeggs 
17*c83c4097SBen Skeggs 	union {
18*c83c4097SBen Skeggs 		struct nvkm_vma *bar;
19*c83c4097SBen Skeggs 		void *map;
20*c83c4097SBen Skeggs 	};
21*c83c4097SBen Skeggs };
22*c83c4097SBen Skeggs 
23*c83c4097SBen Skeggs int nvkm_umem_new(const struct nvkm_oclass *, void *argv, u32 argc,
24*c83c4097SBen Skeggs 		  struct nvkm_object **);
25*c83c4097SBen Skeggs #endif
26