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