summaryrefslogtreecommitdiff
path: root/driver/xf86-video-mga/mga_PInS.txt
blob: eda6cf958cdb6e43ef0235215797210c0a106475 (plain)
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 dectect
                           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