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