xref: /openbmc/linux/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h (revision 769218209d8f00a4003dc9ee351198a473043eaf)
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