1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */
232932281SBen Skeggs #ifndef __GF100_BAR_H__
332932281SBen Skeggs #define __GF100_BAR_H__
432932281SBen Skeggs #define gf100_bar(p) container_of((p), struct gf100_bar, base)
532932281SBen Skeggs #include "priv.h"
632932281SBen Skeggs 
7269fe32dSBen Skeggs struct gf100_barN {
8d30af7ceSBen Skeggs 	struct nvkm_memory *inst;
97eac5f4eSBen Skeggs 	struct nvkm_vmm *vmm;
1032932281SBen Skeggs };
1132932281SBen Skeggs 
1232932281SBen Skeggs struct gf100_bar {
1332932281SBen Skeggs 	struct nvkm_bar base;
14485c2c91SBen Skeggs 	bool bar2_halve;
15269fe32dSBen Skeggs 	struct gf100_barN bar[2];
1632932281SBen Skeggs };
1732932281SBen Skeggs 
18*917b24a3SBen Skeggs int gf100_bar_new_(const struct nvkm_bar_func *, struct nvkm_device *, enum nvkm_subdev_type,
1932932281SBen Skeggs 		   int, struct nvkm_bar **);
2032932281SBen Skeggs void *gf100_bar_dtor(struct nvkm_bar *);
2132932281SBen Skeggs int gf100_bar_oneinit(struct nvkm_bar *);
227313cfa4SBen Skeggs void gf100_bar_bar1_init(struct nvkm_bar *);
237313cfa4SBen Skeggs void gf100_bar_bar1_wait(struct nvkm_bar *);
24570889dcSBen Skeggs struct nvkm_vmm *gf100_bar_bar1_vmm(struct nvkm_bar *);
2548fe0247SBen Skeggs void gf100_bar_bar2_init(struct nvkm_bar *);
26a78dbce9SBen Skeggs struct nvkm_vmm *gf100_bar_bar2_vmm(struct nvkm_bar *);
2732932281SBen Skeggs #endif
28