1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */
2c39f472eSBen Skeggs #ifndef __NVKM_BAR_PRIV_H__
3c39f472eSBen Skeggs #define __NVKM_BAR_PRIV_H__
432932281SBen Skeggs #define nvkm_bar(p) container_of((p), struct nvkm_bar, subdev)
5c39f472eSBen Skeggs #include <subdev/bar.h>
6c39f472eSBen Skeggs 
732932281SBen Skeggs void nvkm_bar_ctor(const struct nvkm_bar_func *, struct nvkm_device *,
8*917b24a3SBen Skeggs 		   enum nvkm_subdev_type, int, struct nvkm_bar *);
9c39f472eSBen Skeggs 
1032932281SBen Skeggs struct nvkm_bar_func {
1132932281SBen Skeggs 	void *(*dtor)(struct nvkm_bar *);
1232932281SBen Skeggs 	int (*oneinit)(struct nvkm_bar *);
13e69dae85SBen Skeggs 	void (*init)(struct nvkm_bar *);
147313cfa4SBen Skeggs 
157313cfa4SBen Skeggs 	struct {
167313cfa4SBen Skeggs 		void (*init)(struct nvkm_bar *);
17bbb163e1SBen Skeggs 		void (*fini)(struct nvkm_bar *);
187313cfa4SBen Skeggs 		void (*wait)(struct nvkm_bar *);
19570889dcSBen Skeggs 		struct nvkm_vmm *(*vmm)(struct nvkm_bar *);
2048fe0247SBen Skeggs 	} bar1, bar2;
217313cfa4SBen Skeggs 
2232932281SBen Skeggs 	void (*flush)(struct nvkm_bar *);
2332932281SBen Skeggs };
24c39f472eSBen Skeggs 
25bbb163e1SBen Skeggs void nv50_bar_bar1_fini(struct nvkm_bar *);
26e988952eSBen Skeggs void nv50_bar_bar2_fini(struct nvkm_bar *);
27bbb163e1SBen Skeggs 
28245dcfe9SBen Skeggs void g84_bar_flush(struct nvkm_bar *);
29bbb163e1SBen Skeggs 
30bbb163e1SBen Skeggs void gf100_bar_bar1_fini(struct nvkm_bar *);
31e988952eSBen Skeggs void gf100_bar_bar2_fini(struct nvkm_bar *);
3270433b90SBen Skeggs 
3370433b90SBen Skeggs void gm107_bar_bar1_wait(struct nvkm_bar *);
34c39f472eSBen Skeggs #endif
35