Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: MIT */
0002 #ifndef __NVKM_BAR_H__
0003 #define __NVKM_BAR_H__
0004 #include <core/subdev.h>
0005 struct nvkm_vma;
0006 
0007 struct nvkm_bar {
0008     const struct nvkm_bar_func *func;
0009     struct nvkm_subdev subdev;
0010 
0011     spinlock_t lock;
0012     bool bar2;
0013 
0014     /* whether the BAR supports to be ioremapped WC or should be uncached */
0015     bool iomap_uncached;
0016 };
0017 
0018 struct nvkm_vmm *nvkm_bar_bar1_vmm(struct nvkm_device *);
0019 void nvkm_bar_bar1_reset(struct nvkm_device *);
0020 void nvkm_bar_bar2_init(struct nvkm_device *);
0021 void nvkm_bar_bar2_fini(struct nvkm_device *);
0022 void nvkm_bar_bar2_reset(struct nvkm_device *);
0023 struct nvkm_vmm *nvkm_bar_bar2_vmm(struct nvkm_device *);
0024 void nvkm_bar_flush(struct nvkm_bar *);
0025 
0026 int nv50_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0027 int g84_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0028 int gf100_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0029 int gk20a_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0030 int gm107_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0031 int gm20b_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0032 int tu102_bar_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_bar **);
0033 #endif