summaryrefslogtreecommitdiff
path: root/drm/nouveau/include/nvkm/subdev/bar.h
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2015-08-20 14:54:20 +1000
committerBen Skeggs <bskeggs@redhat.com>2015-08-28 12:37:41 +1000
commit20bada06526909dad623431d6d05dcee39150ba5 (patch)
tree9bc928584edcb324d6ec0cf42866368b6239896b /drm/nouveau/include/nvkm/subdev/bar.h
parent1933ae31b27dfe0815204eda9f4edbeb612a29e1 (diff)
downloadnouveau-20bada06526909dad623431d6d05dcee39150ba5.tar.gz
bar: convert to new-style nvkm_subdev
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drm/nouveau/include/nvkm/subdev/bar.h')
-rw-r--r--drm/nouveau/include/nvkm/subdev/bar.h22
1 files changed, 9 insertions, 13 deletions
diff --git a/drm/nouveau/include/nvkm/subdev/bar.h b/drm/nouveau/include/nvkm/subdev/bar.h
index 1eaf7de79..d3071b5a4 100644
--- a/drm/nouveau/include/nvkm/subdev/bar.h
+++ b/drm/nouveau/include/nvkm/subdev/bar.h
@@ -1,28 +1,24 @@
#ifndef __NVKM_BAR_H__
#define __NVKM_BAR_H__
#include <core/subdev.h>
-struct nvkm_mem;
struct nvkm_vma;
struct nvkm_bar {
+ const struct nvkm_bar_func *func;
struct nvkm_subdev subdev;
- struct nvkm_vm *(*kmap)(struct nvkm_bar *);
- int (*umap)(struct nvkm_bar *, u64 size, int type, struct nvkm_vma *);
- void (*unmap)(struct nvkm_bar *, struct nvkm_vma *);
- void (*flush)(struct nvkm_bar *);
+ spinlock_t lock;
/* whether the BAR supports to be ioremapped WC or should be uncached */
bool iomap_uncached;
};
-static inline struct nvkm_bar *
-nvkm_bar(void *obj)
-{
- return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_BAR);
-}
+void nvkm_bar_flush(struct nvkm_bar *);
+struct nvkm_vm *nvkm_bar_kmap(struct nvkm_bar *);
+int nvkm_bar_umap(struct nvkm_bar *, u64 size, int type, struct nvkm_vma *);
-extern struct nvkm_oclass nv50_bar_oclass;
-extern struct nvkm_oclass gf100_bar_oclass;
-extern struct nvkm_oclass gk20a_bar_oclass;
+int nv50_bar_new(struct nvkm_device *, int, struct nvkm_bar **);
+int g84_bar_new(struct nvkm_device *, int, struct nvkm_bar **);
+int gf100_bar_new(struct nvkm_device *, int, struct nvkm_bar **);
+int gk20a_bar_new(struct nvkm_device *, int, struct nvkm_bar **);
#endif