1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __NVKM_FB_RAM_PRIV_H__
3 #define __NVKM_FB_RAM_PRIV_H__
6 int nvkm_ram_ctor(const struct nvkm_ram_func
*, struct nvkm_fb
*,
7 enum nvkm_ram_type
, u64 size
, u32 tags
,
9 int nvkm_ram_new_(const struct nvkm_ram_func
*, struct nvkm_fb
*,
10 enum nvkm_ram_type
, u64 size
, u32 tags
,
12 void nvkm_ram_del(struct nvkm_ram
**);
13 int nvkm_ram_init(struct nvkm_ram
*);
15 extern const struct nvkm_ram_func nv04_ram_func
;
17 int nv50_ram_ctor(const struct nvkm_ram_func
*, struct nvkm_fb
*,
19 int nv50_ram_get(struct nvkm_ram
*, u64
, u32
, u32
, u32
, struct nvkm_mem
**);
20 void nv50_ram_put(struct nvkm_ram
*, struct nvkm_mem
**);
21 void __nv50_ram_put(struct nvkm_ram
*, struct nvkm_mem
*);
23 int gf100_ram_new_(const struct nvkm_ram_func
*, struct nvkm_fb
*,
25 int gf100_ram_ctor(const struct nvkm_ram_func
*, struct nvkm_fb
*,
27 u32
gf100_ram_probe_fbp(const struct nvkm_ram_func
*,
28 struct nvkm_device
*, int, int *);
29 u32
gf100_ram_probe_fbp_amount(const struct nvkm_ram_func
*, u32
,
30 struct nvkm_device
*, int, int *);
31 u32
gf100_ram_probe_fbpa_amount(struct nvkm_device
*, int);
32 int gf100_ram_get(struct nvkm_ram
*, u64
, u32
, u32
, u32
, struct nvkm_mem
**);
33 void gf100_ram_put(struct nvkm_ram
*, struct nvkm_mem
**);
34 int gf100_ram_init(struct nvkm_ram
*);
35 int gf100_ram_calc(struct nvkm_ram
*, u32
);
36 int gf100_ram_prog(struct nvkm_ram
*);
37 void gf100_ram_tidy(struct nvkm_ram
*);
39 u32
gf108_ram_probe_fbp_amount(const struct nvkm_ram_func
*, u32
,
40 struct nvkm_device
*, int, int *);
42 int gk104_ram_new_(const struct nvkm_ram_func
*, struct nvkm_fb
*,
44 void *gk104_ram_dtor(struct nvkm_ram
*);
45 int gk104_ram_init(struct nvkm_ram
*);
46 int gk104_ram_calc(struct nvkm_ram
*, u32
);
47 int gk104_ram_prog(struct nvkm_ram
*);
48 void gk104_ram_tidy(struct nvkm_ram
*);
50 u32
gm107_ram_probe_fbp(const struct nvkm_ram_func
*,
51 struct nvkm_device
*, int, int *);
53 u32
gm200_ram_probe_fbp_amount(const struct nvkm_ram_func
*, u32
,
54 struct nvkm_device
*, int, int *);
56 /* RAM type-specific MR calculation routines */
57 int nvkm_sddr2_calc(struct nvkm_ram
*);
58 int nvkm_sddr3_calc(struct nvkm_ram
*);
59 int nvkm_gddr3_calc(struct nvkm_ram
*);
60 int nvkm_gddr5_calc(struct nvkm_ram
*, bool nuts
);
62 int nv04_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
63 int nv10_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
64 int nv1a_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
65 int nv20_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
66 int nv40_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
67 int nv41_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
68 int nv44_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
69 int nv49_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
70 int nv4e_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
71 int nv50_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
72 int gt215_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
73 int mcp77_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
74 int gf100_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
75 int gf108_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
76 int gk104_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
77 int gm107_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
78 int gm200_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);
79 int gp100_ram_new(struct nvkm_fb
*, struct nvkm_ram
**);