GNU Linux-libre 4.14.251-gnu1
[releases.git] / drivers / gpu / drm / nouveau / nvkm / subdev / fb / ram.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __NVKM_FB_RAM_PRIV_H__
3 #define __NVKM_FB_RAM_PRIV_H__
4 #include "priv.h"
5
6 int  nvkm_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *,
7                    enum nvkm_ram_type, u64 size, u32 tags,
8                    struct nvkm_ram *);
9 int  nvkm_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
10                    enum nvkm_ram_type, u64 size, u32 tags,
11                    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 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 *);
22
23 int gf100_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
24                    struct nvkm_ram **);
25 int  gf100_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *,
26                     struct nvkm_ram *);
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 *);
38
39 u32 gf108_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32,
40                                struct nvkm_device *, int, int *);
41
42 int gk104_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
43                    struct nvkm_ram **);
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 *);
49
50 u32 gm107_ram_probe_fbp(const struct nvkm_ram_func *,
51                         struct nvkm_device *, int, int *);
52
53 u32 gm200_ram_probe_fbp_amount(const struct nvkm_ram_func *, u32,
54                                struct nvkm_device *, int, int *);
55
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);
61
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 **);
80 #endif