1/* SPDX-License-Identifier: MIT */
2#ifndef __NVKM_FB_RAM_PRIV_H__
3#define __NVKM_FB_RAM_PRIV_H__
4#include "priv.h"
5
6int  nvkm_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *,
7		   enum nvkm_ram_type, u64 size, struct nvkm_ram *);
8int  nvkm_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
9		   enum nvkm_ram_type, u64 size, struct nvkm_ram **);
10void nvkm_ram_del(struct nvkm_ram **);
11int  nvkm_ram_init(struct nvkm_ram *);
12
13extern const struct nvkm_ram_func nv04_ram_func;
14
15int  nv50_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *,
16		   struct nvkm_ram *);
17
18int gf100_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
19		   struct nvkm_ram **);
20int  gf100_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *,
21		    struct nvkm_ram *);
22u32  gf100_ram_probe_fbp(const struct nvkm_ram_func *,
23			 struct nvkm_device *, int, int *);
24u32  gf100_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32,
25				struct nvkm_device *, int, int *);
26u32  gf100_ram_probe_fbpa_amount(struct nvkm_device *, int);
27int gf100_ram_init(struct nvkm_ram *);
28int gf100_ram_calc(struct nvkm_ram *, u32);
29int gf100_ram_prog(struct nvkm_ram *);
30void gf100_ram_tidy(struct nvkm_ram *);
31
32u32 gf108_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32,
33			       struct nvkm_device *, int, int *);
34
35int gk104_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
36		   struct nvkm_ram **);
37void *gk104_ram_dtor(struct nvkm_ram *);
38int gk104_ram_init(struct nvkm_ram *);
39int gk104_ram_calc(struct nvkm_ram *, u32);
40int gk104_ram_prog(struct nvkm_ram *);
41void gk104_ram_tidy(struct nvkm_ram *);
42
43u32 gm107_ram_probe_fbp(const struct nvkm_ram_func *,
44			struct nvkm_device *, int, int *);
45
46u32 gm200_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32,
47			       struct nvkm_device *, int, int *);
48
49/* RAM type-specific MR calculation routines */
50int nvkm_sddr2_calc(struct nvkm_ram *);
51int nvkm_sddr3_calc(struct nvkm_ram *);
52int nvkm_gddr3_calc(struct nvkm_ram *);
53int nvkm_gddr5_calc(struct nvkm_ram *, bool nuts);
54
55int nv04_ram_new(struct nvkm_fb *, struct nvkm_ram **);
56int nv10_ram_new(struct nvkm_fb *, struct nvkm_ram **);
57int nv1a_ram_new(struct nvkm_fb *, struct nvkm_ram **);
58int nv20_ram_new(struct nvkm_fb *, struct nvkm_ram **);
59int nv40_ram_new(struct nvkm_fb *, struct nvkm_ram **);
60int nv41_ram_new(struct nvkm_fb *, struct nvkm_ram **);
61int nv44_ram_new(struct nvkm_fb *, struct nvkm_ram **);
62int nv49_ram_new(struct nvkm_fb *, struct nvkm_ram **);
63int nv4e_ram_new(struct nvkm_fb *, struct nvkm_ram **);
64int nv50_ram_new(struct nvkm_fb *, struct nvkm_ram **);
65int gt215_ram_new(struct nvkm_fb *, struct nvkm_ram **);
66int mcp77_ram_new(struct nvkm_fb *, struct nvkm_ram **);
67int gf100_ram_new(struct nvkm_fb *, struct nvkm_ram **);
68int gf108_ram_new(struct nvkm_fb *, struct nvkm_ram **);
69int gk104_ram_new(struct nvkm_fb *, struct nvkm_ram **);
70int gm107_ram_new(struct nvkm_fb *, struct nvkm_ram **);
71int gm200_ram_new(struct nvkm_fb *, struct nvkm_ram **);
72int gp100_ram_new(struct nvkm_fb *, struct nvkm_ram **);
73int gp102_ram_new(struct nvkm_fb *, struct nvkm_ram **);
74#endif
75