1 #ifndef __NVKM_BAR_H__ 2 #define __NVKM_BAR_H__ 3 #include <core/subdev.h> 4 struct nvkm_mem; 5 struct nvkm_vma; 6 7 struct nvkm_bar { 8 struct nvkm_subdev base; 9 10 int (*alloc)(struct nvkm_bar *, struct nvkm_object *, 11 struct nvkm_mem *, struct nvkm_object **); 12 13 int (*kmap)(struct nvkm_bar *, struct nvkm_mem *, u32 flags, 14 struct nvkm_vma *); 15 int (*umap)(struct nvkm_bar *, struct nvkm_mem *, u32 flags, 16 struct nvkm_vma *); 17 void (*unmap)(struct nvkm_bar *, struct nvkm_vma *); 18 void (*flush)(struct nvkm_bar *); 19 20 /* whether the BAR supports to be ioremapped WC or should be uncached */ 21 bool iomap_uncached; 22 }; 23 24 static inline struct nvkm_bar * 25 nvkm_bar(void *obj) 26 { 27 return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_BAR); 28 } 29 30 extern struct nvkm_oclass nv50_bar_oclass; 31 extern struct nvkm_oclass gf100_bar_oclass; 32 extern struct nvkm_oclass gk20a_bar_oclass; 33 #endif 34