1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */
2245dcfe9SBen Skeggs #ifndef __NVKM_BAR_H__
3245dcfe9SBen Skeggs #define __NVKM_BAR_H__
4c39f472eSBen Skeggs #include <core/subdev.h>
5245dcfe9SBen Skeggs struct nvkm_vma;
6c39f472eSBen Skeggs 
7245dcfe9SBen Skeggs struct nvkm_bar {
832932281SBen Skeggs 	const struct nvkm_bar_func *func;
95b0c189fSBen Skeggs 	struct nvkm_subdev subdev;
10c39f472eSBen Skeggs 
1132932281SBen Skeggs 	spinlock_t lock;
1248fe0247SBen Skeggs 	bool bar2;
13c39f472eSBen Skeggs 
14c39f472eSBen Skeggs 	/* whether the BAR supports to be ioremapped WC or should be uncached */
15c39f472eSBen Skeggs 	bool iomap_uncached;
16c39f472eSBen Skeggs };
17c39f472eSBen Skeggs 
18570889dcSBen Skeggs struct nvkm_vmm *nvkm_bar_bar1_vmm(struct nvkm_device *);
19302daab1SBen Skeggs void nvkm_bar_bar1_reset(struct nvkm_device *);
2048fe0247SBen Skeggs void nvkm_bar_bar2_init(struct nvkm_device *);
21e988952eSBen Skeggs void nvkm_bar_bar2_fini(struct nvkm_device *);
22302daab1SBen Skeggs void nvkm_bar_bar2_reset(struct nvkm_device *);
23a78dbce9SBen Skeggs struct nvkm_vmm *nvkm_bar_bar2_vmm(struct nvkm_device *);
2432932281SBen Skeggs void nvkm_bar_flush(struct nvkm_bar *);
25c39f472eSBen Skeggs 
26*917b24a3SBen Skeggs int nv50_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
27*917b24a3SBen Skeggs int g84_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
28*917b24a3SBen Skeggs int gf100_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
29*917b24a3SBen Skeggs int gk20a_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
30*917b24a3SBen Skeggs int gm107_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
31*917b24a3SBen Skeggs int gm20b_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
32*917b24a3SBen Skeggs int tu102_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
33c39f472eSBen Skeggs #endif
34