1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 2d36a99d2SBen Skeggs #ifndef __NVKM_FB_RAM_PRIV_H__ 3d36a99d2SBen Skeggs #define __NVKM_FB_RAM_PRIV_H__ 4d36a99d2SBen Skeggs #include "priv.h" 5d36a99d2SBen Skeggs 6d36a99d2SBen Skeggs int nvkm_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *, 7af793b8cSBen Skeggs enum nvkm_ram_type, u64 size, struct nvkm_ram *); 8d36a99d2SBen Skeggs int nvkm_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *, 9af793b8cSBen Skeggs enum nvkm_ram_type, u64 size, struct nvkm_ram **); 10d36a99d2SBen Skeggs void nvkm_ram_del(struct nvkm_ram **); 11d36a99d2SBen Skeggs int nvkm_ram_init(struct nvkm_ram *); 12d36a99d2SBen Skeggs 13d36a99d2SBen Skeggs extern const struct nvkm_ram_func nv04_ram_func; 14d36a99d2SBen Skeggs 15d36a99d2SBen Skeggs int nv50_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *, 16d36a99d2SBen Skeggs struct nvkm_ram *); 17d36a99d2SBen Skeggs 18fcb371a1SBen Skeggs int gf100_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *, 19fcb371a1SBen Skeggs struct nvkm_ram **); 20d36a99d2SBen Skeggs int gf100_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *, 2197e5268dSBen Skeggs struct nvkm_ram *); 2297e5268dSBen Skeggs u32 gf100_ram_probe_fbp(const struct nvkm_ram_func *, 2397e5268dSBen Skeggs struct nvkm_device *, int, int *); 2497e5268dSBen Skeggs u32 gf100_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32, 2597e5268dSBen Skeggs struct nvkm_device *, int, int *); 2697e5268dSBen Skeggs u32 gf100_ram_probe_fbpa_amount(struct nvkm_device *, int); 27fcb371a1SBen Skeggs int gf100_ram_init(struct nvkm_ram *); 28fcb371a1SBen Skeggs int gf100_ram_calc(struct nvkm_ram *, u32); 29fcb371a1SBen Skeggs int gf100_ram_prog(struct nvkm_ram *); 30fcb371a1SBen Skeggs void gf100_ram_tidy(struct nvkm_ram *); 31d36a99d2SBen Skeggs 3297e5268dSBen Skeggs u32 gf108_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32, 3397e5268dSBen Skeggs struct nvkm_device *, int, int *); 3497e5268dSBen Skeggs 35fcb371a1SBen Skeggs int gk104_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *, 3697e5268dSBen Skeggs struct nvkm_ram **); 37fcb371a1SBen Skeggs void *gk104_ram_dtor(struct nvkm_ram *); 38fcb371a1SBen Skeggs int gk104_ram_init(struct nvkm_ram *); 39fcb371a1SBen Skeggs int gk104_ram_calc(struct nvkm_ram *, u32); 40fcb371a1SBen Skeggs int gk104_ram_prog(struct nvkm_ram *); 41fcb371a1SBen Skeggs void gk104_ram_tidy(struct nvkm_ram *); 42d36a99d2SBen Skeggs 4397e5268dSBen Skeggs u32 gm107_ram_probe_fbp(const struct nvkm_ram_func *, 4497e5268dSBen Skeggs struct nvkm_device *, int, int *); 4597e5268dSBen Skeggs 4697e5268dSBen Skeggs u32 gm200_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32, 4797e5268dSBen Skeggs struct nvkm_device *, int, int *); 4897e5268dSBen Skeggs 49*def80cdbSBen Skeggs int gp100_ram_init(struct nvkm_ram *); 50*def80cdbSBen Skeggs 51d36a99d2SBen Skeggs /* RAM type-specific MR calculation routines */ 52d36a99d2SBen Skeggs int nvkm_sddr2_calc(struct nvkm_ram *); 53d36a99d2SBen Skeggs int nvkm_sddr3_calc(struct nvkm_ram *); 54d36a99d2SBen Skeggs int nvkm_gddr3_calc(struct nvkm_ram *); 55d36a99d2SBen Skeggs int nvkm_gddr5_calc(struct nvkm_ram *, bool nuts); 56d36a99d2SBen Skeggs 57d36a99d2SBen Skeggs int nv04_ram_new(struct nvkm_fb *, struct nvkm_ram **); 58d36a99d2SBen Skeggs int nv10_ram_new(struct nvkm_fb *, struct nvkm_ram **); 59d36a99d2SBen Skeggs int nv1a_ram_new(struct nvkm_fb *, struct nvkm_ram **); 60d36a99d2SBen Skeggs int nv20_ram_new(struct nvkm_fb *, struct nvkm_ram **); 61d36a99d2SBen Skeggs int nv40_ram_new(struct nvkm_fb *, struct nvkm_ram **); 62d36a99d2SBen Skeggs int nv41_ram_new(struct nvkm_fb *, struct nvkm_ram **); 63d36a99d2SBen Skeggs int nv44_ram_new(struct nvkm_fb *, struct nvkm_ram **); 64d36a99d2SBen Skeggs int nv49_ram_new(struct nvkm_fb *, struct nvkm_ram **); 65d36a99d2SBen Skeggs int nv4e_ram_new(struct nvkm_fb *, struct nvkm_ram **); 66d36a99d2SBen Skeggs int nv50_ram_new(struct nvkm_fb *, struct nvkm_ram **); 67d36a99d2SBen Skeggs int gt215_ram_new(struct nvkm_fb *, struct nvkm_ram **); 68d36a99d2SBen Skeggs int mcp77_ram_new(struct nvkm_fb *, struct nvkm_ram **); 69d36a99d2SBen Skeggs int gf100_ram_new(struct nvkm_fb *, struct nvkm_ram **); 70904e703cSBen Skeggs int gf108_ram_new(struct nvkm_fb *, struct nvkm_ram **); 71d36a99d2SBen Skeggs int gk104_ram_new(struct nvkm_fb *, struct nvkm_ram **); 72d36a99d2SBen Skeggs int gm107_ram_new(struct nvkm_fb *, struct nvkm_ram **); 73ba4c063dSBen Skeggs int gm200_ram_new(struct nvkm_fb *, struct nvkm_ram **); 747ff51f82SBen Skeggs int gp100_ram_new(struct nvkm_fb *, struct nvkm_ram **); 752c0c15a2SBen Skeggs int gp102_ram_new(struct nvkm_fb *, struct nvkm_ram **); 76d36a99d2SBen Skeggs #endif 77