]>
Commit | Line | Data |
---|---|---|
dceef5d8 BS |
1 | #ifndef __NVKM_FB_PRIV_H__ |
2 | #define __NVKM_FB_PRIV_H__ | |
dceef5d8 | 3 | #include <subdev/fb.h> |
639c308e | 4 | struct nvkm_bios; |
dceef5d8 | 5 | |
639c308e BS |
6 | #define nvkm_ram_create(p,e,o,d) \ |
7 | nvkm_object_create_((p), (e), (o), 0, sizeof(**d), (void **)d) | |
8 | #define nvkm_ram_destroy(p) \ | |
9 | nvkm_object_destroy(&(p)->base) | |
10 | #define nvkm_ram_init(p) \ | |
11 | nvkm_object_init(&(p)->base) | |
12 | #define nvkm_ram_fini(p,s) \ | |
13 | nvkm_object_fini(&(p)->base, (s)) | |
dceef5d8 | 14 | |
639c308e BS |
15 | #define nvkm_ram_create_(p,e,o,s,d) \ |
16 | nvkm_object_create_((p), (e), (o), 0, (s), (void **)d) | |
17 | #define _nvkm_ram_dtor nvkm_object_destroy | |
18 | #define _nvkm_ram_init nvkm_object_init | |
19 | #define _nvkm_ram_fini nvkm_object_fini | |
dceef5d8 | 20 | |
639c308e BS |
21 | extern struct nvkm_oclass nv04_ram_oclass; |
22 | extern struct nvkm_oclass nv10_ram_oclass; | |
23 | extern struct nvkm_oclass nv1a_ram_oclass; | |
24 | extern struct nvkm_oclass nv20_ram_oclass; | |
25 | extern struct nvkm_oclass nv40_ram_oclass; | |
26 | extern struct nvkm_oclass nv41_ram_oclass; | |
27 | extern struct nvkm_oclass nv44_ram_oclass; | |
28 | extern struct nvkm_oclass nv49_ram_oclass; | |
29 | extern struct nvkm_oclass nv4e_ram_oclass; | |
30 | extern struct nvkm_oclass nv50_ram_oclass; | |
31 | extern struct nvkm_oclass gt215_ram_oclass; | |
32 | extern struct nvkm_oclass mcp77_ram_oclass; | |
33 | extern struct nvkm_oclass gf100_ram_oclass; | |
34 | extern struct nvkm_oclass gk104_ram_oclass; | |
639c308e | 35 | extern struct nvkm_oclass gm107_ram_oclass; |
aae95ca7 | 36 | |
639c308e BS |
37 | int nvkm_sddr2_calc(struct nvkm_ram *ram); |
38 | int nvkm_sddr3_calc(struct nvkm_ram *ram); | |
39 | int nvkm_gddr3_calc(struct nvkm_ram *ram); | |
40 | int nvkm_gddr5_calc(struct nvkm_ram *ram, bool nuts); | |
dceef5d8 | 41 | |
639c308e BS |
42 | #define nvkm_fb_create(p,e,c,d) \ |
43 | nvkm_fb_create_((p), (e), (c), sizeof(**d), (void **)d) | |
44 | #define nvkm_fb_destroy(p) ({ \ | |
45 | struct nvkm_fb *pfb = (p); \ | |
46 | _nvkm_fb_dtor(nv_object(pfb)); \ | |
dceef5d8 | 47 | }) |
639c308e BS |
48 | #define nvkm_fb_init(p) ({ \ |
49 | struct nvkm_fb *pfb = (p); \ | |
50 | _nvkm_fb_init(nv_object(pfb)); \ | |
dceef5d8 | 51 | }) |
639c308e BS |
52 | #define nvkm_fb_fini(p,s) ({ \ |
53 | struct nvkm_fb *pfb = (p); \ | |
54 | _nvkm_fb_fini(nv_object(pfb), (s)); \ | |
dceef5d8 BS |
55 | }) |
56 | ||
639c308e BS |
57 | int nvkm_fb_create_(struct nvkm_object *, struct nvkm_object *, |
58 | struct nvkm_oclass *, int, void **); | |
59 | void _nvkm_fb_dtor(struct nvkm_object *); | |
60 | int _nvkm_fb_init(struct nvkm_object *); | |
61 | int _nvkm_fb_fini(struct nvkm_object *, bool); | |
dceef5d8 | 62 | |
639c308e BS |
63 | struct nvkm_fb_impl { |
64 | struct nvkm_oclass base; | |
65 | struct nvkm_oclass *ram; | |
66 | bool (*memtype)(struct nvkm_fb *, u32); | |
8613e731 BS |
67 | }; |
68 | ||
639c308e BS |
69 | bool nv04_fb_memtype_valid(struct nvkm_fb *, u32 memtype); |
70 | bool nv50_fb_memtype_valid(struct nvkm_fb *, u32 memtype); | |
dceef5d8 | 71 | |
639c308e | 72 | int nvkm_fb_bios_memtype(struct nvkm_bios *); |
dceef5d8 | 73 | #endif |