1c39f472eSBen Skeggs #ifndef __NVKM_BAR_PRIV_H__
2c39f472eSBen Skeggs #define __NVKM_BAR_PRIV_H__
332932281SBen Skeggs #define nvkm_bar(p) container_of((p), struct nvkm_bar, subdev)
4c39f472eSBen Skeggs #include <subdev/bar.h>
5c39f472eSBen Skeggs 
632932281SBen Skeggs void nvkm_bar_ctor(const struct nvkm_bar_func *, struct nvkm_device *,
732932281SBen Skeggs 		   int, struct nvkm_bar *);
8c39f472eSBen Skeggs 
932932281SBen Skeggs struct nvkm_bar_func {
1032932281SBen Skeggs 	void *(*dtor)(struct nvkm_bar *);
1132932281SBen Skeggs 	int (*oneinit)(struct nvkm_bar *);
12e69dae85SBen Skeggs 	void (*init)(struct nvkm_bar *);
137313cfa4SBen Skeggs 
147313cfa4SBen Skeggs 	struct {
157313cfa4SBen Skeggs 		void (*init)(struct nvkm_bar *);
16bbb163e1SBen Skeggs 		void (*fini)(struct nvkm_bar *);
177313cfa4SBen Skeggs 		void (*wait)(struct nvkm_bar *);
18570889dcSBen Skeggs 		struct nvkm_vmm *(*vmm)(struct nvkm_bar *);
1948fe0247SBen Skeggs 	} bar1, bar2;
207313cfa4SBen Skeggs 
2132932281SBen Skeggs 	void (*flush)(struct nvkm_bar *);
2232932281SBen Skeggs };
23c39f472eSBen Skeggs 
24bbb163e1SBen Skeggs void nv50_bar_bar1_fini(struct nvkm_bar *);
25e988952eSBen Skeggs void nv50_bar_bar2_fini(struct nvkm_bar *);
26bbb163e1SBen Skeggs 
27245dcfe9SBen Skeggs void g84_bar_flush(struct nvkm_bar *);
28bbb163e1SBen Skeggs 
29bbb163e1SBen Skeggs void gf100_bar_bar1_fini(struct nvkm_bar *);
30e988952eSBen Skeggs void gf100_bar_bar2_fini(struct nvkm_bar *);
3170433b90SBen Skeggs 
3270433b90SBen Skeggs void gm107_bar_bar1_wait(struct nvkm_bar *);
33c39f472eSBen Skeggs #endif
34