1#ifndef __NVBIOS_RAMCFG_H__
2#define __NVBIOS_RAMCFG_H__
3
4struct nouveau_bios;
5
6struct nvbios_ramcfg {
7	unsigned rammap_ver;
8	unsigned rammap_hdr;
9	unsigned rammap_min;
10	unsigned rammap_max;
11	union {
12		struct {
13			unsigned rammap_10_04_02:1;
14			unsigned rammap_10_04_08:1;
15		};
16		struct {
17			unsigned rammap_11_08_01:1;
18			unsigned rammap_11_08_0c:2;
19			unsigned rammap_11_08_10:1;
20			unsigned rammap_11_09_01ff:9;
21			unsigned rammap_11_0a_03fe:9;
22			unsigned rammap_11_0a_0400:1;
23			unsigned rammap_11_0a_0800:1;
24			unsigned rammap_11_0b_01f0:5;
25			unsigned rammap_11_0b_0200:1;
26			unsigned rammap_11_0b_0400:1;
27			unsigned rammap_11_0b_0800:1;
28			unsigned rammap_11_0d:8;
29			unsigned rammap_11_0e:8;
30			unsigned rammap_11_0f:8;
31			unsigned rammap_11_11_0c:2;
32		};
33	};
34
35	unsigned ramcfg_ver;
36	unsigned ramcfg_hdr;
37	unsigned ramcfg_timing;
38	union {
39		struct {
40			unsigned ramcfg_10_02_01:1;
41			unsigned ramcfg_10_02_02:1;
42			unsigned ramcfg_10_02_04:1;
43			unsigned ramcfg_10_02_08:1;
44			unsigned ramcfg_10_02_10:1;
45			unsigned ramcfg_10_02_20:1;
46			unsigned ramcfg_10_02_40:1;
47			unsigned ramcfg_10_03_0f:4;
48			unsigned ramcfg_10_05:8;
49			unsigned ramcfg_10_06:8;
50			unsigned ramcfg_10_07:8;
51			unsigned ramcfg_10_08:8;
52			unsigned ramcfg_10_09_0f:4;
53			unsigned ramcfg_10_09_f0:4;
54		};
55		struct {
56			unsigned ramcfg_11_01_01:1;
57			unsigned ramcfg_11_01_02:1;
58			unsigned ramcfg_11_01_04:1;
59			unsigned ramcfg_11_01_08:1;
60			unsigned ramcfg_11_01_10:1;
61			unsigned ramcfg_11_01_20:1;
62			unsigned ramcfg_11_01_40:1;
63			unsigned ramcfg_11_01_80:1;
64			unsigned ramcfg_11_02_03:2;
65			unsigned ramcfg_11_02_04:1;
66			unsigned ramcfg_11_02_08:1;
67			unsigned ramcfg_11_02_10:1;
68			unsigned ramcfg_11_02_40:1;
69			unsigned ramcfg_11_02_80:1;
70			unsigned ramcfg_11_03_0f:4;
71			unsigned ramcfg_11_03_30:2;
72			unsigned ramcfg_11_03_c0:2;
73			unsigned ramcfg_11_03_f0:4;
74			unsigned ramcfg_11_04:8;
75			unsigned ramcfg_11_06:8;
76			unsigned ramcfg_11_07_02:1;
77			unsigned ramcfg_11_07_04:1;
78			unsigned ramcfg_11_07_08:1;
79			unsigned ramcfg_11_07_10:1;
80			unsigned ramcfg_11_07_40:1;
81			unsigned ramcfg_11_07_80:1;
82			unsigned ramcfg_11_08_01:1;
83			unsigned ramcfg_11_08_02:1;
84			unsigned ramcfg_11_08_04:1;
85			unsigned ramcfg_11_08_08:1;
86			unsigned ramcfg_11_08_10:1;
87			unsigned ramcfg_11_08_20:1;
88			unsigned ramcfg_11_09:8;
89		};
90	};
91
92	unsigned timing_ver;
93	unsigned timing_hdr;
94	unsigned timing[11];
95	union {
96		struct {
97			unsigned timing_10_WR:8;
98			unsigned timing_10_CL:8;
99			unsigned timing_10_ODT:3;
100			unsigned timing_10_CWL:8;
101		};
102		struct {
103			unsigned timing_20_2e_03:2;
104			unsigned timing_20_2e_30:2;
105			unsigned timing_20_2e_c0:2;
106			unsigned timing_20_2f_03:2;
107			unsigned timing_20_2c_003f:6;
108			unsigned timing_20_2c_1fc0:7;
109			unsigned timing_20_30_f8:5;
110			unsigned timing_20_30_07:3;
111			unsigned timing_20_31_0007:3;
112			unsigned timing_20_31_0078:4;
113			unsigned timing_20_31_0780:4;
114			unsigned timing_20_31_0800:1;
115			unsigned timing_20_31_7000:3;
116			unsigned timing_20_31_8000:1;
117		};
118	};
119};
120
121u8 nvbios_ramcfg_count(struct nouveau_bios *);
122u8 nvbios_ramcfg_index(struct nouveau_subdev *);
123
124#endif
125