1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
Version 1:
Offset Type Description
0 uint16_t Length of the PInS data, in bytes. This must be 64.
2 uint16_t Product ID. Possible values are:
0: MGA-S1P20 (2MB base with 175MHz RAMDAC)
1: MGA-S1P21 (2MB base with 220MHz RAMDAC)
2: Reserved
3: Reserved
4: MGA-S1P40 (4MB base with 175MHz RAMDAC)
5: MGA-S1P41 (4MB base with 220MHz RAMDAC)
4 char[8] Serial number of the board. NUL terminated string.
12 uint16_t Manufacturing date of the board (at product test).
Format (stored little-endian) yyyyyyymmmmddddd.
14 uint16_t Identification of manufacturing site.
16 uint16_t Number and revision level of the PCB. Format (stored
little-endian): nnnnnnnnnnnrrrrr, where n = PCB number
ex:576 (from 0->2047) and r = PCB revision (from 0->31).
18 uint16_t Identification of any PMBs.
20 uint8_t RAMDAC speed (0=175MHz, 1=220MHz).
21 uint8_t RAMDAC type (0=TVP3026, 1=TVP3027).
22 uint16_t Maximum PCLK of the ramdac.
24 uint16_t Maximum LDCLK supported by the WRAM memory.
26 uint16_t Maximum MCLK of base board.
28 uint16_t Maximum MCLK of 4Mb board.
30 uint16_t Maximum MCLK of 8Mb board.
32 uint16_t Maximum MCLK of board with multimedia module.
34 uint16_t Diagnostic test pass frequency.
36 uint16_t Default VGA mode1 pixel frequency.
38 uint16_t Default VGA mode2 pixel frequency.
40 uint16_t Date of last BIOS programming / update.
42 uint16_t Number of times BIOS has been programmed.
44 uint32_t Support for up to 32 hardware/software options.
48 uint32_t Support for up to 32 hardware/software features.
52 uint16_t Definition of VGA mode MCLK.
54 uint16_t Indicate the revision level of this header struct.
56 char[7] Unused.
63 uint8_t Check-sum byte.
Version 2:
Unless otherwise noted, all clock speeds stored in this version of the PInS
data are stored as the clock speed in MHz minus 100. To convert a stored
clock speed, C, to kHz, use ((C + 100) * 1000).
Offset Type Description
0 uint16_t PInS structure signature. This must be the 16-bit
value (stored little-endian) 0x412E.
2 uint8_t Length of the PInS data, in bytes. For version 2, this
must be 64.
3 uint8_t Reserved.
4 uint16_t Version of the structure. For version 2, this must be the
value (stored little-endian) 0x02XX.
6 uint16_t Date of last BIOS programming / update.
8 uint16_t Number of times BIOS has been programmed.
10 uint16_t Product ID.
12 char[16] Serial number of the board. NUL terminated string.
28 char[6] Parts list identification. NUL terminated string.
34 uint16_t Number and revision level of the PCB. Format (stored
little-endian): nnnnnnnnnnnrrrrr, where n = PCB number
ex:576 (from 0->2047) and r = PCB revision (from 0->31).
36 uint32_t Support for up to 32 hardware/software features.
40 uint8_t RAMDAC type.
41 uint8_t RAMDAC speed. Stored using standard clock encoding (see
above).
42 uint8_t PclkMax
43 uint8_t Memory clock. Stored using standard clock encoding (see
above).
44 uint8_t Maximum MCLK of base board.
45 uint8_t Maximum MCLK of 4Mb board.
46 uint8_t Maximum MCLK of 8Mb board.
47 uint8_t Maximum MCLK of board with multimedia module.
48 uint8_t TestClk
49 uint8_t Default VGA mode1 pixel frequency.
50 uint8_t Default VGA mode2 pixel frequency.
51 uint8_t MCTLWTST
52 uint8_t VidCtrl
53 uint8_t Maximum MCLK of 12Mb board.
54 uint8_t Maximum MCLK of 16Mb board.
55 char[8] Unused
63 uint8_t Check-sum byte
Version 3:
Unless otherwise noted, all clock speeds stored in this version of the PInS
data are stored as the clock speed in MHz minus 100. To convert a stored
clock speed, C, to kHz, use ((C + 100) * 1000).
Offset Type Description
0 uint16_t PInS structure signature. This must be the 16-bit
value (stored little-endian) 0x412E.
2 uint8_t Length of the PInS data, in bytes. For version 3, this
must be 64.
3 uint8_t Reserved.
4 uint16_t Version of the structure. For version 3, this must be the
value (stored little-endian) 0x03XX.
6 uint16_t Date of last BIOS programming / update.
8 uint16_t Number of times BIOS has been programmed.
10 uint16_t Product ID.
12 char[16] Serial number of the board. NUL terminated string.
28 char[6] Parts list identification. NUL terminated string.
34 uint16_t Number and revision level of the PCB. Format (stored
little-endian): nnnnnnnnnnnrrrrr, where n = PCB number
ex:576 (from 0->2047) and r = PCB revision (from 0->31).
36 uint8_t RAMDAC speed. Stored using standard clock encoding (see
above).
37 char[15] Unknown?
52 uint32_t OPTION? Stored little-endian.
Bits Meaning
0 - 4 Unknown?
5 0 = Reference PLL speed is 27.050MHz.
1 = Reference PLL speed is 14.318MHz.
6 - 31 Unknown?
56 uint16_t MEMRDBK?
58 uint32_t OPTION2?
62 char Unused
63 uint8_t Check-sum byte
Version 4:
Unless otherwise noted, all clock speeds stored in this version of the PInS
data are stored as the clock speed in MHz divided by 4. To convert a stored
clock speed, C, to kHz, use ((C * 4) * 1000).
Offset Type Description
0 uint16_t PInS structure signature. This must be the 16-bit
value (stored little-endian) 0x412E.
2 uint8_t Length of the PInS data, in bytes. For version 4, this
must be 128.
3 uint8_t Reserved.
4 uint16_t Version of the structure. For version 4, this must be the
value (stored little-endian) 0x04XX.
6 uint16_t Date of last BIOS programming / update.
8 uint16_t Number of times BIOS has been programmed.
10 uint16_t Product ID.
12 char[16] Serial number of the board. NUL terminated string.
28 char[6] Parts list identification. NUL terminated string.
34 uint16_t Number and revision level of the PCB. Format (stored
little-endian): nnnnnnnnnnnrrrrr, where n = PCB number
ex:576 (from 0->2047) and r = PCB revision (from 0->31).
36 char Unknown?
37 char Unknown?
38 uint8_t VCO max for system PLL
39 uint8_t VCO max for pixel PLL
40 char[13] Unknown?
53 uint8_t OPTION?
54 char[11] Unknown?
65 uint8_t System PLL? Stored using standard clock encoding (see
above).
66 char Unknown?
67 uint32_t OPTION3? This offset seems wrong, but that's what
matroxfb does.
71 char[15] Unknown?
86 uint16_t MEMRDBK?
88 char[4] Unknown?
92 uint32_t OPTIONx?
Bits Meaning
0 0 = Reference PLL speed is 27.050MHz.
1 = Reference PLL speed is 14.318MHz.
1 - 31 Unknown?
96 char[21] Unknown?
127 uint8_t Check-sum byte
Version 5:
Unless otherwise noted, all clock speeds stored in this version of the PInS
data are stored as the clock speed in MHz divided by 6 for version 0x500 or
by 8 for all other versions. To convert a stored clock speed, C, to kHz, on
version 0x0500, use ((C * 6) * 1000). For all other versions, use ((C * 8) *
1000).
Offset Type Description
0 uint16_t PInS structure signature. This must be the 16-bit
value (stored little-endian) 0x412E.
2 uint8_t Length of the PInS data, in bytes. For version 5, this
must be 128.
3 uint8_t Reserved.
4 uint16_t Version of the structure. For version 5, this must be the
value (stored little-endian) 0x05XX.
6 uint16_t Date of last BIOS programming / update.
8 uint16_t Number of times BIOS has been programmed.
10 uint16_t Product ID.
12 char[16] Serial number of the board. NUL terminated string.
28 char[6] Parts list identification. NUL terminated string.
34 uint16_t Number and revision level of the PCB. Format (stored
little-endian): nnnnnnnnnnnrrrrr, where n = PCB number
ex:576 (from 0->2047) and r = PCB revision (from 0->31).
36 uint8_t VCO max for system PLL. Stored using standard clock
encoding (see above).
37 uint8_t VCO max for video PLL. Stored using standard clock
encoding (see above).
38 uint8_t VCO max for pixel PLL. Stored using standard clock
encoding (see above).
39 char[9] Unknown?
48 uint32_t OPTION1?
52 uint32_t OPTION2?
56 char[38] Unknown?
94 uint32_t OPTION3?
98 uint32_t MCTLWTST?
102 uint32_t MEMMISC?
106 uint32_t MEMRDBK?
110 uint32_t OPTIONx?
Bits Meaning
0 0 = Reference PLL speed is 27.050MHz.
1 = Reference PLL speed is 14.318MHz.
1 - 31 Unknown?
114 uint16_t MEMINFO?
Bits Meaning
0 - 4 Unknown
5 - 6 0 = SDR memory installed?
1 = DDR memory installed
2 = Unknown
3 = Unknown
7 Unknown
8 EMRSWEN?
9 Has DLL?
10 Core uses MCTLWTST?
11 - 15 MCTLWTST values for core?
116 uint16_t Display Info.
Bits Meaning
0-3 Primary display info (see below)
4-7 Secondary display info (see below)
8-10 Primary modes (see below)
13 Default output
0 = default output is secondary connector
1 = default output is primary connector
12-14 Secondary modes (see below)
15 Primary hardware detect
0 = hardware detection is off
1 = use hardware detection to determine main output
Display info values:
0000 None
0001 HD15
0010 DVI
0011 TV
x1xx Reserved
1xxx Reserved
Modes values:
xx1 Analog
x1x Digital
1xx TV
118 char[3] Unknown?
121 uint8_t VCO min for system PLL. Stored using standard clock
encoding (see above).
122 uint8_t VCO min for video PLL. Stored using standard clock
encoding (see above).
123 uint8_t VCO min for pixel PLL. Stored using standard clock
encoding (see above).
124 char[3] Unknown?
127 uint8_t Check-sum byte
|