1 #ifndef _VB_TABLE_ 2 #define _VB_TABLE_ 3 static const struct SiS_MCLKData XGI340New_MCLKData[] = { 4 {0x16, 0x01, 0x01, 166}, 5 {0x19, 0x02, 0x01, 124}, 6 {0x7C, 0x08, 0x01, 200}, 7 }; 8 9 static const struct SiS_MCLKData XGI27New_MCLKData[] = { 10 {0x5c, 0x23, 0x01, 166}, 11 {0x19, 0x02, 0x01, 124}, 12 {0x7C, 0x08, 0x80, 200}, 13 }; 14 15 const struct XGI_ECLKDataStruct XGI340_ECLKData[] = { 16 {0x5c, 0x23, 0x01, 166}, 17 {0x55, 0x84, 0x01, 123}, 18 {0x7C, 0x08, 0x01, 200}, 19 }; 20 21 static const unsigned char XG27_SR18[3] = { 22 0x32, 0x32, 0x42 /* SR18 */ 23 }; 24 25 static const unsigned char XGI340_SR18[3] = { 26 0x31, 0x42, 0x42 /* SR18 */ 27 }; 28 29 static const unsigned char XGI340_cr41[24][3] = { 30 {0x20, 0x50, 0x60}, /* 0 CR41 */ 31 {0xc4, 0x40, 0x84}, /* 1 CR8A */ 32 {0xc4, 0x40, 0x84}, /* 2 CR8B */ 33 {0xb5, 0xa4, 0xa4}, 34 {0xf0, 0xf0, 0xf0}, 35 {0x90, 0x90, 0x24}, /* 5 CR68 */ 36 {0x77, 0x77, 0x44}, /* 6 CR69 */ 37 {0x77, 0x77, 0x44}, /* 7 CR6A */ 38 {0xff, 0xff, 0xff}, /* 8 CR6D */ 39 {0x55, 0x55, 0x55}, /* 9 CR80 */ 40 {0x00, 0x00, 0x00}, /* 10 CR81 */ 41 {0x88, 0xa8, 0x48}, /* 11 CR82 */ 42 {0x44, 0x44, 0x77}, /* 12 CR85 */ 43 {0x48, 0x48, 0x88}, /* 13 CR86 */ 44 {0x54, 0x54, 0x44}, /* 14 CR90 */ 45 {0x54, 0x54, 0x44}, /* 15 CR91 */ 46 {0x0a, 0x0a, 0x07}, /* 16 CR92 */ 47 {0x44, 0x44, 0x44}, /* 17 CR93 */ 48 {0x10, 0x10, 0x0A}, /* 18 CR94 */ 49 {0x11, 0x11, 0x0a}, /* 19 CR95 */ 50 {0x05, 0x05, 0x05}, /* 20 CR96 */ 51 {0xf0, 0xf0, 0xf0}, /* 21 CRC3 */ 52 {0x05, 0x00, 0x02}, /* 22 CRC4 */ 53 {0x00, 0x00, 0x00} /* 23 CRC5 */ 54 }; 55 56 static const unsigned char XGI27_cr41[24][3] = { 57 {0x20, 0x40, 0x60}, /* 0 CR41 */ 58 {0xC4, 0x40, 0x84}, /* 1 CR8A */ 59 {0xC4, 0x40, 0x84}, /* 2 CR8B */ 60 {0xB3, 0x13, 0xa4}, /* 3 CR40[7], 61 * CR99[2:0], 62 * CR45[3:0] 63 */ 64 {0xf0, 0xf5, 0xf0}, /* 4 CR59 */ 65 {0x90, 0x90, 0x24}, /* 5 CR68 */ 66 {0x77, 0x67, 0x44}, /* 6 CR69 */ 67 {0x77, 0x77, 0x44}, /* 7 CR6A */ 68 {0xff, 0xff, 0xff}, /* 8 CR6D */ 69 {0x55, 0x55, 0x55}, /* 9 CR80 */ 70 {0x00, 0x00, 0x00}, /* 10 CR81 */ 71 {0x88, 0xcc, 0x48}, /* 11 CR82 */ 72 {0x44, 0x88, 0x77}, /* 12 CR85 */ 73 {0x48, 0x88, 0x88}, /* 13 CR86 */ 74 {0x54, 0x32, 0x44}, /* 14 CR90 */ 75 {0x54, 0x33, 0x44}, /* 15 CR91 */ 76 {0x0a, 0x07, 0x07}, /* 16 CR92 */ 77 {0x44, 0x63, 0x44}, /* 17 CR93 */ 78 {0x10, 0x14, 0x0A}, /* 18 CR94 */ 79 {0x11, 0x0B, 0x0C}, /* 19 CR95 */ 80 {0x05, 0x22, 0x05}, /* 20 CR96 */ 81 {0xf0, 0xf0, 0x00}, /* 21 CRC3 */ 82 {0x05, 0x00, 0x02}, /* 22 CRC4 */ 83 {0x00, 0x00, 0x00} /* 23 CRC5 */ 84 }; 85 86 /* CR47,CR48,CR49,CR4A,CR4B,CR4C,CR70,CR71,CR74,CR75,CR76,CR77 */ 87 const unsigned char XGI340_AGPReg[12] = { 88 0x28, 0x23, 0x00, 0x20, 0x00, 0x20, 89 0x00, 0x05, 0xd0, 0x10, 0x10, 0x00 90 }; 91 92 const struct XGI_ExtStruct XGI330_EModeIDTable[] = { 93 {0x2e, 0x0a1b, 0x0306, 0x06, 0x05, 0x06}, 94 {0x2f, 0x0a1b, 0x0305, 0x05, 0x05, 0x05}, 95 {0x30, 0x2a1b, 0x0407, 0x07, 0x07, 0x0e}, 96 {0x31, 0x0a1b, 0x030d, 0x0d, 0x06, 0x3d}, 97 {0x32, 0x0a1b, 0x0a0e, 0x0e, 0x06, 0x3e}, 98 {0x33, 0x0a1d, 0x0a0d, 0x0d, 0x06, 0x3d}, 99 {0x34, 0x2a1d, 0x0a0e, 0x0e, 0x06, 0x3e}, 100 {0x35, 0x0a1f, 0x0a0d, 0x0d, 0x06, 0x3d}, 101 {0x36, 0x2a1f, 0x0a0e, 0x0e, 0x06, 0x3e}, 102 {0x38, 0x0a1b, 0x0508, 0x08, 0x00, 0x16}, 103 {0x3a, 0x0e3b, 0x0609, 0x09, 0x00, 0x1e}, 104 {0x3c, 0x0e3b, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200 105 * add CRT2MODE [2003/10/07] 106 */ 107 {0x3d, 0x0e7d, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200 108 * add CRT2MODE 109 */ 110 {0x40, 0x9a1c, 0x0000, 0x00, 0x04, 0x00}, 111 {0x41, 0x9a1d, 0x0000, 0x00, 0x04, 0x00}, 112 {0x43, 0x0a1c, 0x0306, 0x06, 0x05, 0x06}, 113 {0x44, 0x0a1d, 0x0306, 0x06, 0x05, 0x06}, 114 {0x46, 0x2a1c, 0x0407, 0x07, 0x07, 0x0e}, 115 {0x47, 0x2a1d, 0x0407, 0x07, 0x07, 0x0e}, 116 {0x49, 0x0a3c, 0x0508, 0x08, 0x00, 0x16}, 117 {0x4a, 0x0a3d, 0x0508, 0x08, 0x00, 0x16}, 118 {0x4c, 0x0e7c, 0x0609, 0x09, 0x00, 0x1e}, 119 {0x4d, 0x0e7d, 0x0609, 0x09, 0x00, 0x1e}, 120 {0x50, 0x9a1b, 0x0001, 0x01, 0x04, 0x02}, 121 {0x51, 0xba1b, 0x0103, 0x03, 0x07, 0x03}, 122 {0x52, 0x9a1b, 0x0204, 0x04, 0x00, 0x04}, 123 {0x56, 0x9a1d, 0x0001, 0x01, 0x04, 0x02}, 124 {0x57, 0xba1d, 0x0103, 0x03, 0x07, 0x03}, 125 {0x58, 0x9a1d, 0x0204, 0x04, 0x00, 0x04}, 126 {0x59, 0x9a1b, 0x0000, 0x00, 0x04, 0x00}, 127 {0x5A, 0x021b, 0x0014, 0x01, 0x04, 0x3f}, 128 {0x5B, 0x0a1d, 0x0014, 0x01, 0x04, 0x3f}, 129 {0x5d, 0x0a1d, 0x0305, 0x05, 0x07, 0x05}, 130 {0x62, 0x0a3f, 0x0306, 0x06, 0x05, 0x06}, 131 {0x63, 0x2a3f, 0x0407, 0x07, 0x07, 0x0e}, 132 {0x64, 0x0a7f, 0x0508, 0x08, 0x00, 0x16}, 133 {0x65, 0x0eff, 0x0609, 0x09, 0x00, 0x1e}, 134 {0x66, 0x0eff, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200 135 * add CRT2MODE 136 */ 137 {0x68, 0x067b, 0x080b, 0x0b, 0x00, 0x29}, 138 {0x69, 0x06fd, 0x080b, 0x0b, 0x00, 0x29}, 139 {0x6b, 0x07ff, 0x080b, 0x0b, 0x00, 0x29}, 140 {0x6c, 0x067b, 0x090c, 0x0c, 0x00, 0x2f}, 141 {0x6d, 0x06fd, 0x090c, 0x0c, 0x00, 0x2f}, 142 {0x6e, 0x07ff, 0x090c, 0x0c, 0x00, 0x2f}, 143 {0x70, 0x2a1b, 0x0410, 0x10, 0x07, 0x34}, 144 {0x71, 0x0a1b, 0x0511, 0x11, 0x00, 0x37}, 145 {0x74, 0x0a1d, 0x0511, 0x11, 0x00, 0x37}, 146 {0x75, 0x0a3d, 0x0612, 0x12, 0x00, 0x3a}, 147 {0x76, 0x2a1f, 0x0410, 0x10, 0x07, 0x34}, 148 {0x77, 0x0a1f, 0x0511, 0x11, 0x00, 0x37}, 149 {0x78, 0x0a3f, 0x0612, 0x12, 0x00, 0x3a}, 150 {0x79, 0x0a3b, 0x0612, 0x12, 0x00, 0x3a}, 151 {0x7a, 0x2a1d, 0x0410, 0x10, 0x07, 0x34}, 152 {0x7b, 0x0e3b, 0x060f, 0x0f, 0x00, 0x1d}, 153 {0x7c, 0x0e7d, 0x060f, 0x0f, 0x00, 0x1d}, 154 {0x7d, 0x0eff, 0x060f, 0x0f, 0x00, 0x1d}, 155 {0x20, 0x0e3b, 0x0D16, 0x16, 0x00, 0x43}, 156 {0x21, 0x0e7d, 0x0D16, 0x16, 0x00, 0x43}, 157 {0x22, 0x0eff, 0x0D16, 0x16, 0x00, 0x43}, 158 {0x23, 0x0e3b, 0x0614, 0x14, 0x00, 0x41}, 159 {0x24, 0x0e7d, 0x0614, 0x14, 0x00, 0x41}, 160 {0x25, 0x0eff, 0x0614, 0x14, 0x00, 0x41}, 161 {0x26, 0x063b, 0x0c15, 0x15, 0x00, 0x42}, 162 {0x27, 0x067d, 0x0c15, 0x15, 0x00, 0x42}, 163 {0x28, 0x06ff, 0x0c15, 0x15, 0x00, 0x42}, 164 {0xff, 0x0000, 0x0000, 0x00, 0x00, 0x00} 165 }; 166 167 static const struct SiS_StandTable_S XGI330_StandTable = { 168 /* ExtVGATable */ 169 0x00, 0x00, 0x00, 0x0000, 170 {0x21, 0x0f, 0x00, 0x0e}, /* 0x21 = 0x01 | (0x20 = screen off) */ 171 0x23, 172 {0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e, 173 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 174 0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3, 175 0xff}, 176 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 177 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 178 0x01, 0x00, 0x00, 0x00}, 179 {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 180 0xff} 181 }; 182 183 static const struct XGI_XG21CRT1Struct XGI_UpdateCRT1Table[] = { 184 {0x01, 0x27, 0x91, 0x8f, 0xc0}, /* 00 */ 185 {0x03, 0x4f, 0x83, 0x8f, 0xc0}, /* 01 */ 186 {0x05, 0x27, 0x91, 0x8f, 0xc0}, /* 02 */ 187 {0x06, 0x4f, 0x83, 0x8f, 0xc0}, /* 03 */ 188 {0x07, 0x4f, 0x83, 0x8f, 0xc0}, /* 04 */ 189 {0x0d, 0x27, 0x91, 0x8f, 0xc0}, /* 05 */ 190 {0x0e, 0x4f, 0x83, 0x8f, 0xc0}, /* 06 */ 191 {0x0f, 0x4f, 0x83, 0x5d, 0xc0}, /* 07 */ 192 {0x10, 0x4f, 0x83, 0x5d, 0xc0}, /* 08 */ 193 {0x11, 0x4f, 0x83, 0xdf, 0x0c}, /* 09 */ 194 {0x12, 0x4f, 0x83, 0xdf, 0x0c}, /* 10 */ 195 {0x13, 0x4f, 0x83, 0x8f, 0xc0}, /* 11 */ 196 {0x2e, 0x4f, 0x83, 0xdf, 0x0c}, /* 12 */ 197 {0x2e, 0x4f, 0x87, 0xdf, 0xc0}, /* 13 */ 198 {0x2f, 0x4f, 0x83, 0x8f, 0xc0}, /* 14 */ 199 {0x50, 0x27, 0x91, 0xdf, 0x0c}, /* 15 */ 200 {0x59, 0x27, 0x91, 0x8f, 0xc0} /* 16 */ 201 }; 202 203 const struct XGI_CRT1TableStruct XGI_CRT1Table[] = { 204 { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00, 205 0xbf, 0x1f, 0x9c, 0x8e, 0x96, 0xb9, 0x30} }, /* 0x0 */ 206 { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00, 207 0x0b, 0x3e, 0xe9, 0x8b, 0xe7, 0x04, 0x00} }, /* 0x1 */ 208 { {0x3D, 0x31, 0x81, 0x37, 0x1F, 0x00, 0x05, 0x00, 209 0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} }, /* 0x2 */ 210 { {0x4F, 0x3F, 0x93, 0x45, 0x0D, 0x00, 0x01, 0x00, 211 0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x3 */ 212 { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00, 213 0xBF, 0x1F, 0x9C, 0x8E, 0x96, 0xB9, 0x30} }, /* 0x4 */ 214 { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00, 215 0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x5 */ 216 { {0x63, 0x50, 0x86, 0x56, 0x9B, 0x00, 0x01, 0x00, 217 0x06, 0x3E, 0xE8, 0x8B, 0xE7, 0xFF, 0x10} }, /* 0x6 */ 218 { {0x64, 0x4F, 0x88, 0x55, 0x9D, 0x00, 0x01, 0x00, 219 0xF2, 0x1F, 0xE0, 0x83, 0xDF, 0xF3, 0x10} }, /* 0x7 */ 220 { {0x63, 0x4F, 0x87, 0x5A, 0x81, 0x00, 0x05, 0x00, 221 0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x10} }, /* 0x8 */ 222 { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60, 223 0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x80} }, /* 0x9 */ 224 { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60, 225 0x01, 0x3E, 0xE0, 0x83, 0xDF, 0x02, 0x80} }, /* 0xa */ 226 { {0x67, 0x4F, 0x8B, 0x58, 0x81, 0x00, 0x05, 0x60, 227 0x0D, 0x3E, 0xE0, 0x83, 0xDF, 0x0E, 0x90} }, /* 0xb */ 228 { {0x65, 0x4F, 0x89, 0x57, 0x9F, 0x00, 0x01, 0x00, 229 0xFB, 0x1F, 0xE6, 0x8A, 0xDF, 0xFC, 0x10} }, /* 0xc */ 230 /* 0D (800x600,56Hz) */ 231 { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00, 232 /* (VCLK 36.0MHz) */ 233 0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} }, 234 /* 0E (800x600,60Hz) */ 235 { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00, 236 /* (VCLK 40.0MHz) */ 237 0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} }, 238 /* 0F (800x600,72Hz) */ 239 { {0x7D, 0x63, 0x81, 0x6E, 0x1D, 0x00, 0x06, 0x00, 240 /* (VCLK 50.0MHz) */ 241 0x98, 0xF0, 0x7C, 0x82, 0x57, 0x99, 0x80} }, 242 /* 10 (800x600,75Hz) */ 243 { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00, 244 /* (VCLK 49.5MHz) */ 245 0x6F, 0xF0, 0x58, 0x8B, 0x57, 0x70, 0xA0} }, 246 /* 11 (800x600,85Hz) */ 247 { {0x7E, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00, 248 /* (VCLK 56.25MHz) */ 249 0x75, 0xF0, 0x58, 0x8B, 0x57, 0x76, 0xA0} }, 250 /* 12 (800x600,100Hz) */ 251 { {0x81, 0x63, 0x85, 0x6D, 0x18, 0x00, 0x06, 0x60, 252 /* (VCLK 75.8MHz) */ 253 0x7A, 0xF0, 0x58, 0x8B, 0x57, 0x7B, 0xA0} }, 254 /* 13 (800x600,120Hz) */ 255 { {0x83, 0x63, 0x87, 0x6E, 0x19, 0x00, 0x06, 0x60, 256 /* (VCLK 79.411MHz) */ 257 0x81, 0xF0, 0x58, 0x8B, 0x57, 0x82, 0xA0} }, 258 /* 14 (800x600,160Hz) */ 259 { {0x85, 0x63, 0x89, 0x6F, 0x1A, 0x00, 0x06, 0x60, 260 /* (VCLK 105.822MHz) */ 261 0x91, 0xF0, 0x58, 0x8B, 0x57, 0x92, 0xA0} }, 262 { {0x99, 0x7F, 0x9D, 0x84, 0x1A, 0x00, 0x02, 0x00, 263 0x96, 0x1F, 0x7F, 0x83, 0x7F, 0x97, 0x10} }, /* 0x15 */ 264 { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00, 265 0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x16 */ 266 { {0xA1, 0x7F, 0x85, 0x86, 0x97, 0x00, 0x02, 0x00, 267 0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x17 */ 268 { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00, 269 0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} }, /* 0x18 */ 270 { {0xA7, 0x7F, 0x8B, 0x89, 0x95, 0x00, 0x02, 0x00, 271 0x26, 0xF5, 0x00, 0x83, 0xFF, 0x27, 0x90} }, /* 0x19 */ 272 { {0xA9, 0x7F, 0x8D, 0x8C, 0x9A, 0x00, 0x02, 0x62, 273 0x2C, 0xF5, 0x00, 0x83, 0xFF, 0x2D, 0x14} }, /* 0x1a */ 274 { {0xAB, 0x7F, 0x8F, 0x8D, 0x9B, 0x00, 0x02, 0x62, 275 0x35, 0xF5, 0x00, 0x83, 0xFF, 0x36, 0x14} }, /* 0x1b */ 276 { {0xCF, 0x9F, 0x93, 0xB2, 0x01, 0x00, 0x03, 0x00, 277 0x14, 0xBA, 0x00, 0x83, 0xFF, 0x15, 0x00} }, /* 0x1c */ 278 { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00, 279 0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1d */ 280 { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00, 281 0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1e */ 282 { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00, 283 0x2E, 0x5A, 0x00, 0x83, 0xFF, 0x2F, 0x89} }, /* 0x1f */ 284 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 285 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x20 */ 286 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 287 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x21 */ 288 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 289 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x22 */ 290 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 291 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x23 */ 292 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 293 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x24 */ 294 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 295 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x25 */ 296 { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00, 297 0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x26 */ 298 { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00, 299 0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x27 */ 300 { {0x43, 0xEF, 0x87, 0x06, 0x00, 0x41, 0x05, 0x62, 301 0xD4, 0x1F, 0xA0, 0x83, 0x9F, 0xD5, 0x9F} }, /* 0x28 */ 302 { {0x45, 0xEF, 0x89, 0x07, 0x01, 0x41, 0x05, 0x62, 303 0xD9, 0x1F, 0xA0, 0x83, 0x9F, 0xDA, 0x9F} }, /* 0x29 */ 304 { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00, 305 0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2a */ 306 { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00, 307 0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2b */ 308 { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00, 309 0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2c */ 310 { {0x59, 0xFF, 0x9D, 0x17, 0x13, 0x41, 0x05, 0x44, 311 0x33, 0xBA, 0x00, 0x83, 0xFF, 0x34, 0x0F} }, /* 0x2d */ 312 { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44, 313 0x38, 0xBA, 0x00, 0x83, 0xFF, 0x39, 0x0F} }, /* 0x2e */ 314 { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44, 315 0x3D, 0xBA, 0x00, 0x83, 0xFF, 0x3E, 0x0F} }, /* 0x2f */ 316 { {0x5D, 0xFF, 0x81, 0x19, 0x95, 0x41, 0x05, 0x44, 317 0x41, 0xBA, 0x00, 0x84, 0xFF, 0x42, 0x0F} }, /* 0x30 */ 318 { {0x55, 0xFF, 0x99, 0x0D, 0x0C, 0x41, 0x05, 0x00, 319 0x3E, 0xBA, 0x00, 0x84, 0xFF, 0x3F, 0x0F} }, /* 0x31 */ 320 { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00, 321 0x72, 0xBA, 0x27, 0x8B, 0xDF, 0x73, 0x80} }, /* 0x32 */ 322 { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00, 323 0x6F, 0xBA, 0x26, 0x89, 0xDF, 0x6F, 0x80} }, /* 0x33 */ 324 { {0x7F, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00, 325 0x75, 0xBA, 0x29, 0x8C, 0xDF, 0x75, 0x80} }, /* 0x34 */ 326 { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00, 327 0x24, 0xF1, 0xAF, 0x85, 0x3F, 0x25, 0xB0} }, /* 0x35 */ 328 { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00, 329 0x1E, 0xF1, 0xAD, 0x81, 0x3F, 0x1F, 0xB0} }, /* 0x36 */ 330 { {0xA7, 0x7F, 0x88, 0x89, 0x15, 0x00, 0x02, 0x00, 331 0x26, 0xF1, 0xB1, 0x85, 0x3F, 0x27, 0xB0} }, /* 0x37 */ 332 { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00, 333 0x28, 0xC4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x38 */ 334 { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00, 335 0x28, 0xD4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x39 */ 336 { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00, 337 0x2E, 0xD4, 0x7D, 0x81, 0xCF, 0x2F, 0xA1} }, /* 0x3a */ 338 { {0xDC, 0x9F, 0x00, 0xAB, 0x19, 0x00, 0x07, 0x00, 339 0xE6, 0xEF, 0xC0, 0xC3, 0xBF, 0xE7, 0x90} }, /* 0x3b */ 340 { {0x6B, 0x59, 0x8F, 0x5E, 0x8C, 0x00, 0x05, 0x00, 341 0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x3c */ 342 { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00, 343 0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} }, /* 0x3d */ 344 { {0x86, 0x6A, 0x8a, 0x74, 0x06, 0x00, 0x02, 0x00, 345 0x8c, 0x15, 0x4f, 0x83, 0xef, 0x8d, 0x30} }, /* 0x3e */ 346 { {0x81, 0x6A, 0x85, 0x70, 0x00, 0x00, 0x02, 0x00, 347 0x0f, 0x3e, 0xeb, 0x8e, 0xdf, 0x10, 0x00} }, /* 0x3f */ 348 { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00, 349 0x20, 0xF5, 0x03, 0x88, 0xFF, 0x21, 0x90} }, /* 0x40 */ 350 { {0xE6, 0xAE, 0x8A, 0xBD, 0x90, 0x00, 0x03, 0x00, 351 0x3D, 0x10, 0x1A, 0x8D, 0x19, 0x3E, 0x2F} }, /* 0x41 */ 352 { {0xB9, 0x8F, 0x9D, 0x9B, 0x8A, 0x00, 0x06, 0x00, 353 0x7D, 0xFF, 0x60, 0x83, 0x5F, 0x7E, 0x90} }, /* 0x42 */ 354 { {0xC3, 0x8F, 0x87, 0x9B, 0x0B, 0x00, 0x07, 0x00, 355 0x82, 0xFF, 0x60, 0x83, 0x5F, 0x83, 0x90} }, /* 0x43 */ 356 { {0xAD, 0x7F, 0x91, 0x8E, 0x9C, 0x00, 0x02, 0x82, 357 0x49, 0xF5, 0x00, 0x83, 0xFF, 0x4A, 0x90} }, /* 0x44 */ 358 { {0xCD, 0x9F, 0x91, 0xA7, 0x19, 0x00, 0x07, 0x60, 359 0xE6, 0xFF, 0xC0, 0x83, 0xBF, 0xE7, 0x90} }, /* 0x45 */ 360 { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x60, 361 0xF1, 0xFF, 0xC0, 0x83, 0xBF, 0xF2, 0x90} }, /* 0x46 */ 362 { {0xD7, 0x9F, 0x9B, 0xAC, 0x1E, 0x00, 0x07, 0x00, 363 0x03, 0xDE, 0xC0, 0x84, 0xBF, 0x04, 0x90} } /* 0x47 */ 364 }; 365 366 /*add for new UNIVGABIOS*/ 367 static const struct SiS_LCDData XGI_StLCD1024x768Data[] = { 368 {62, 25, 800, 546, 1344, 806}, 369 {32, 15, 930, 546, 1344, 806}, 370 {62, 25, 800, 546, 1344, 806}, /*chiawenfordot9->dot8*/ 371 {104, 45, 945, 496, 1344, 806}, 372 {62, 25, 800, 546, 1344, 806}, 373 {31, 18, 1008, 624, 1344, 806}, 374 {1, 1, 1344, 806, 1344, 806} 375 }; 376 377 static const struct SiS_LCDData XGI_ExtLCD1024x768Data[] = { 378 {42, 25, 1536, 419, 1344, 806}, 379 {48, 25, 1536, 369, 1344, 806}, 380 {42, 25, 1536, 419, 1344, 806}, 381 {48, 25, 1536, 369, 1344, 806}, 382 {12, 5, 896, 500, 1344, 806}, 383 {42, 25, 1024, 625, 1344, 806}, 384 {1, 1, 1344, 806, 1344, 806}, 385 {12, 5, 896, 500, 1344, 806}, 386 {42, 25, 1024, 625, 1344, 806}, 387 {1, 1, 1344, 806, 1344, 806}, 388 {12, 5, 896, 500, 1344, 806}, 389 {42, 25, 1024, 625, 1344, 806}, 390 {1, 1, 1344, 806, 1344, 806} 391 }; 392 393 static const struct SiS_LCDData XGI_CetLCD1024x768Data[] = { 394 {1, 1, 1344, 806, 1344, 806}, /* ; 00 (320x200,320x400, 395 * 640x200,640x400) 396 */ 397 {1, 1, 1344, 806, 1344, 806}, /* 01 (320x350,640x350) */ 398 {1, 1, 1344, 806, 1344, 806}, /* 02 (360x400,720x400) */ 399 {1, 1, 1344, 806, 1344, 806}, /* 03 (720x350) */ 400 {1, 1, 1344, 806, 1344, 806}, /* 04 (640x480x60Hz) */ 401 {1, 1, 1344, 806, 1344, 806}, /* 05 (800x600x60Hz) */ 402 {1, 1, 1344, 806, 1344, 806} /* 06 (1024x768x60Hz) */ 403 }; 404 405 static const struct SiS_LCDData XGI_StLCD1280x1024Data[] = { 406 {22, 5, 800, 510, 1650, 1088}, 407 {22, 5, 800, 510, 1650, 1088}, 408 {176, 45, 900, 510, 1650, 1088}, 409 {176, 45, 900, 510, 1650, 1088}, 410 {22, 5, 800, 510, 1650, 1088}, 411 {13, 5, 1024, 675, 1560, 1152}, 412 {16, 9, 1266, 804, 1688, 1072}, 413 {1, 1, 1688, 1066, 1688, 1066} 414 }; 415 416 static const struct SiS_LCDData XGI_ExtLCD1280x1024Data[] = { 417 {211, 60, 1024, 501, 1688, 1066}, 418 {211, 60, 1024, 508, 1688, 1066}, 419 {211, 60, 1024, 501, 1688, 1066}, 420 {211, 60, 1024, 508, 1688, 1066}, 421 {211, 60, 1024, 500, 1688, 1066}, 422 {211, 75, 1024, 625, 1688, 1066}, 423 {211, 120, 1280, 798, 1688, 1066}, 424 {1, 1, 1688, 1066, 1688, 1066} 425 }; 426 427 static const struct SiS_LCDData XGI_CetLCD1280x1024Data[] = { 428 {1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400, 429 * 640x200,640x400) 430 */ 431 {1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */ 432 {1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */ 433 {1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */ 434 {1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */ 435 {1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */ 436 {1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */ 437 {1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */ 438 {1, 1, 1688, 1066, 1688, 1066} /* 08 (1400x1050x60Hz) */ 439 }; 440 441 static const struct SiS_LCDData xgifb_lcd_1400x1050[] = { 442 {211, 100, 2100, 408, 1688, 1066}, /* 00 (320x200,320x400, 443 * 640x200,640x400) 444 */ 445 {211, 64, 1536, 358, 1688, 1066}, /* 01 (320x350,640x350) */ 446 {211, 100, 2100, 408, 1688, 1066}, /* 02 (360x400,720x400) */ 447 {211, 64, 1536, 358, 1688, 1066}, /* 03 (720x350) */ 448 {211, 48, 840, 488, 1688, 1066}, /* 04 (640x480x60Hz) */ 449 {211, 72, 1008, 609, 1688, 1066}, /* 05 (800x600x60Hz) */ 450 {211, 128, 1400, 776, 1688, 1066}, /* 06 (1024x768x60Hz) */ 451 {1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz 452 * w/o Scaling) 453 */ 454 {1, 1, 1688, 1066, 1688, 1066} /* 08 (1400x1050x60Hz) */ 455 }; 456 457 static const struct SiS_LCDData XGI_ExtLCD1600x1200Data[] = { 458 {4, 1, 1620, 420, 2160, 1250}, /* 00 (320x200,320x400, 459 * 640x200,640x400) 460 */ 461 {27, 7, 1920, 375, 2160, 1250}, /* 01 (320x350,640x350) */ 462 {4, 1, 1620, 420, 2160, 1250}, /* 02 (360x400,720x400)*/ 463 {27, 7, 1920, 375, 2160, 1250}, /* 03 (720x350) */ 464 {27, 4, 800, 500, 2160, 1250}, /* 04 (640x480x60Hz) */ 465 {4, 1, 1080, 625, 2160, 1250}, /* 05 (800x600x60Hz) */ 466 {5, 2, 1350, 800, 2160, 1250}, /* 06 (1024x768x60Hz) */ 467 {27, 16, 1500, 1064, 2160, 1250}, /* 07 (1280x1024x60Hz) */ 468 {9, 7, 1920, 1106, 2160, 1250}, /* 08 (1400x1050x60Hz) */ 469 {1, 1, 2160, 1250, 2160, 1250} /* 09 (1600x1200x60Hz) ;302lv */ 470 }; 471 472 static const struct SiS_LCDData XGI_StLCD1600x1200Data[] = { 473 {27, 4, 800, 500, 2160, 1250}, /* 00 (320x200,320x400, 474 * 640x200,640x400) 475 */ 476 {27, 4, 800, 500, 2160, 1250}, /* 01 (320x350,640x350) */ 477 {27, 4, 800, 500, 2160, 1250}, /* 02 (360x400,720x400) */ 478 {27, 4, 800, 500, 2160, 1250}, /* 03 (720x350) */ 479 {27, 4, 800, 500, 2160, 1250}, /* 04 (320x240,640x480) */ 480 {4, 1, 1080, 625, 2160, 1250}, /* 05 (400x300,800x600) */ 481 {5, 2, 1350, 800, 2160, 1250}, /* 06 (512x384,1024x768) */ 482 {135, 88, 1600, 1100, 2160, 1250}, /* 07 (1280x1024) */ 483 {1, 1, 1800, 1500, 2160, 1250}, /* 08 (1400x1050) */ 484 {1, 1, 2160, 1250, 2160, 1250} /* 09 (1600x1200) */ 485 }; 486 487 #define XGI_CetLCD1400x1050Data XGI_CetLCD1280x1024Data 488 489 static const struct SiS_LCDData XGI_NoScalingData[] = { 490 {1, 1, 800, 449, 800, 449}, 491 {1, 1, 800, 449, 800, 449}, 492 {1, 1, 900, 449, 900, 449}, 493 {1, 1, 900, 449, 900, 449}, 494 {1, 1, 800, 525, 800, 525}, 495 {1, 1, 1056, 628, 1056, 628}, 496 {1, 1, 1344, 806, 1344, 806}, 497 {1, 1, 1688, 1066, 1688, 1066} 498 }; 499 500 static const struct SiS_LCDData XGI_ExtLCD1024x768x75Data[] = { 501 {42, 25, 1536, 419, 1344, 806}, /* ; 00 (320x200,320x400, 502 * 640x200,640x400) 503 */ 504 {48, 25, 1536, 369, 1344, 806}, /* ; 01 (320x350,640x350) */ 505 {42, 25, 1536, 419, 1344, 806}, /* ; 02 (360x400,720x400) */ 506 {48, 25, 1536, 369, 1344, 806}, /* ; 03 (720x350) */ 507 {8, 5, 1312, 500, 1312, 800}, /* ; 04 (640x480x75Hz) */ 508 {41, 25, 1024, 625, 1312, 800}, /* ; 05 (800x600x75Hz) */ 509 {1, 1, 1312, 800, 1312, 800} /* ; 06 (1024x768x75Hz) */ 510 }; 511 512 static const struct SiS_LCDData XGI_CetLCD1024x768x75Data[] = { 513 {1, 1, 1312, 800, 1312, 800}, /* ; 00 (320x200,320x400, 514 * 640x200,640x400) 515 */ 516 {1, 1, 1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */ 517 {1, 1, 1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */ 518 {1, 1, 1312, 800, 1312, 800}, /* ; 03 (720x350) */ 519 {1, 1, 1312, 800, 1312, 800}, /* ; 04 (640x480x75Hz) */ 520 {1, 1, 1312, 800, 1312, 800}, /* ; 05 (800x600x75Hz) */ 521 {1, 1, 1312, 800, 1312, 800} /* ; 06 (1024x768x75Hz) */ 522 }; 523 524 static const struct SiS_LCDData xgifb_lcd_1280x1024x75[] = { 525 {211, 60, 1024, 501, 1688, 1066}, /* ; 00 (320x200,320x400, 526 * 640x200,640x400) 527 */ 528 {211, 60, 1024, 508, 1688, 1066}, /* ; 01 (320x350,640x350) */ 529 {211, 60, 1024, 501, 1688, 1066}, /* ; 02 (360x400,720x400) */ 530 {211, 60, 1024, 508, 1688, 1066}, /* ; 03 (720x350) */ 531 {211, 45, 768, 498, 1688, 1066}, /* ; 04 (640x480x75Hz) */ 532 {211, 75, 1024, 625, 1688, 1066}, /* ; 05 (800x600x75Hz) */ 533 {211, 120, 1280, 798, 1688, 1066}, /* ; 06 (1024x768x75Hz) */ 534 {1, 1, 1688, 1066, 1688, 1066} /* ; 07 (1280x1024x75Hz) */ 535 }; 536 537 #define XGI_CetLCD1280x1024x75Data XGI_CetLCD1280x1024Data 538 539 static const struct SiS_LCDData XGI_NoScalingDatax75[] = { 540 {1, 1, 800, 449, 800, 449}, /* ; 00 (320x200, 320x400, 541 * 640x200, 640x400) 542 */ 543 {1, 1, 800, 449, 800, 449}, /* ; 01 (320x350, 640x350) */ 544 {1, 1, 900, 449, 900, 449}, /* ; 02 (360x400, 720x400) */ 545 {1, 1, 900, 449, 900, 449}, /* ; 03 (720x350) */ 546 {1, 1, 840, 500, 840, 500}, /* ; 04 (640x480x75Hz) */ 547 {1, 1, 1056, 625, 1056, 625}, /* ; 05 (800x600x75Hz) */ 548 {1, 1, 1312, 800, 1312, 800}, /* ; 06 (1024x768x75Hz) */ 549 {1, 1, 1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */ 550 {1, 1, 1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)*/ 551 {1, 1, 2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */ 552 {1, 1, 1688, 806, 1688, 806} /* ; 0A (1280x768x75Hz) */ 553 }; 554 555 static const struct XGI_LCDDesStruct XGI_ExtLCDDes1024x768Data[] = { 556 {9, 1057, 0, 771}, /* ; 00 (320x200,320x400,640x200,640x400) */ 557 {9, 1057, 0, 771}, /* ; 01 (320x350,640x350) */ 558 {9, 1057, 0, 771}, /* ; 02 (360x400,720x400) */ 559 {9, 1057, 0, 771}, /* ; 03 (720x350) */ 560 {9, 1057, 0, 771}, /* ; 04 (640x480x60Hz) */ 561 {9, 1057, 0, 771}, /* ; 05 (800x600x60Hz) */ 562 {9, 1057, 805, 770} /* ; 06 (1024x768x60Hz) */ 563 }; 564 565 static const struct XGI_LCDDesStruct XGI_StLCDDes1024x768Data[] = { 566 {9, 1057, 737, 703}, /* ; 00 (320x200,320x400,640x200,640x400) */ 567 {9, 1057, 686, 651}, /* ; 01 (320x350,640x350) */ 568 {9, 1057, 737, 703}, /* ; 02 (360x400,720x400) */ 569 {9, 1057, 686, 651}, /* ; 03 (720x350) */ 570 {9, 1057, 776, 741}, /* ; 04 (640x480x60Hz) */ 571 {9, 1057, 0, 771}, /* ; 05 (800x600x60Hz) */ 572 {9, 1057, 805, 770} /* ; 06 (1024x768x60Hz) */ 573 }; 574 575 static const struct XGI_LCDDesStruct XGI_CetLCDDes1024x768Data[] = { 576 {1152, 856, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */ 577 {1152, 856, 597, 562}, /* ; 01 (320x350,640x350) */ 578 {1152, 856, 622, 587}, /* ; 02 (360x400,720x400) */ 579 {1152, 856, 597, 562}, /* ; 03 (720x350) */ 580 {1152, 856, 662, 627}, /* ; 04 (640x480x60Hz) */ 581 {1232, 936, 722, 687}, /* ; 05 (800x600x60Hz) */ 582 {0, 1048, 805, 770} /* ; 06 (1024x768x60Hz) */ 583 }; 584 585 static const struct XGI_LCDDesStruct XGI_ExtLCDDLDes1280x1024Data[] = { 586 {18, 1346, 981, 940}, /* 00 (320x200,320x400,640x200,640x400) */ 587 {18, 1346, 926, 865}, /* 01 (320x350,640x350) */ 588 {18, 1346, 981, 940}, /* 02 (360x400,720x400) */ 589 {18, 1346, 926, 865}, /* 03 (720x350) */ 590 {18, 1346, 0, 1025}, /* 04 (640x480x60Hz) */ 591 {18, 1346, 0, 1025}, /* 05 (800x600x60Hz) */ 592 {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */ 593 {18, 1346, 1065, 1024} /* 07 (1280x1024x60Hz) */ 594 }; 595 596 static const struct XGI_LCDDesStruct XGI_StLCDDLDes1280x1024Data[] = { 597 {18, 1346, 970, 907}, /* 00 (320x200,320x400,640x200,640x400) */ 598 {18, 1346, 917, 854}, /* 01 (320x350,640x350) */ 599 {18, 1346, 970, 907}, /* 02 (360x400,720x400) */ 600 {18, 1346, 917, 854}, /* 03 (720x350) */ 601 {18, 1346, 0, 1025}, /* 04 (640x480x60Hz) */ 602 {18, 1346, 0, 1025}, /* 05 (800x600x60Hz) */ 603 {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */ 604 {18, 1346, 1065, 1024} /* 07 (1280x1024x60Hz) */ 605 }; 606 607 static const struct XGI_LCDDesStruct XGI_CetLCDDLDes1280x1024Data[] = { 608 {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */ 609 {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */ 610 {1368, 1008, 752, 711}, /* 02 (360x400,720x400) */ 611 {1368, 1008, 729, 688}, /* 03 (720x350) */ 612 {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */ 613 {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */ 614 {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */ 615 {18, 1346, 1065, 1024} /* 07 (1280x1024x60Hz) */ 616 }; 617 618 static const struct XGI_LCDDesStruct XGI_ExtLCDDes1280x1024Data[] = { 619 {9, 1337, 981, 940}, /* ; 00 (320x200,320x400,640x200,640x400) */ 620 {9, 1337, 926, 884}, /* ; 01 (320x350,640x350) alan, 2003/09/30 */ 621 {9, 1337, 981, 940}, /* ; 02 (360x400,720x400) */ 622 {9, 1337, 926, 884}, /* ; 03 (720x350) alan, 2003/09/30 */ 623 {9, 1337, 0, 1025}, /* ; 04 (640x480x60Hz) */ 624 {9, 1337, 0, 1025}, /* ; 05 (800x600x60Hz) */ 625 {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */ 626 {9, 1337, 1065, 1024} /* ; 07 (1280x1024x60Hz) */ 627 }; 628 629 static const struct XGI_LCDDesStruct XGI_StLCDDes1280x1024Data[] = { 630 {9, 1337, 970, 907}, /* ; 00 (320x200,320x400,640x200,640x400) */ 631 {9, 1337, 917, 854}, /* ; 01 (320x350,640x350) */ 632 {9, 1337, 970, 907}, /* ; 02 (360x400,720x400) */ 633 {9, 1337, 917, 854}, /* ; 03 (720x350) */ 634 {9, 1337, 0, 1025}, /* ; 04 (640x480x60Hz) */ 635 {9, 1337, 0, 1025}, /* ; 05 (800x600x60Hz) */ 636 {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */ 637 {9, 1337, 1065, 1024} /* ; 07 (1280x1024x60Hz) */ 638 }; 639 640 static const struct XGI_LCDDesStruct XGI_CetLCDDes1280x1024Data[] = { 641 {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */ 642 {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */ 643 {1368, 1008, 752, 711}, /* 02 (360x400,720x400) */ 644 {1368, 1008, 729, 688}, /* 03 (720x350) */ 645 {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */ 646 {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */ 647 {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */ 648 {9, 1337, 1065, 1024} /* 07 (1280x1024x60Hz) */ 649 }; 650 651 static const struct XGI_LCDDesStruct xgifb_lcddldes_1400x1050[] = { 652 {18, 1464, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */ 653 {18, 1464, 0, 1051}, /* 01 (320x350,640x350) */ 654 {18, 1464, 0, 1051}, /* 02 (360x400,720x400) */ 655 {18, 1464, 0, 1051}, /* 03 (720x350) */ 656 {18, 1464, 0, 1051}, /* 04 (640x480x60Hz) */ 657 {18, 1464, 0, 1051}, /* 05 (800x600x60Hz) */ 658 {18, 1464, 0, 1051}, /* 06 (1024x768x60Hz) */ 659 {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */ 660 {18, 1464, 0, 1051} /* 08 (1400x1050x60Hz) */ 661 }; 662 663 static const struct XGI_LCDDesStruct xgifb_lcddes_1400x1050[] = { 664 {9, 1455, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */ 665 {9, 1455, 0, 1051}, /* 01 (320x350,640x350) */ 666 {9, 1455, 0, 1051}, /* 02 (360x400,720x400) */ 667 {9, 1455, 0, 1051}, /* 03 (720x350) */ 668 {9, 1455, 0, 1051}, /* 04 (640x480x60Hz) */ 669 {9, 1455, 0, 1051}, /* 05 (800x600x60Hz) */ 670 {9, 1455, 0, 1051}, /* 06 (1024x768x60Hz) */ 671 {1637, 1397, 1053, 1038}, /* 07 (1280x1024x60Hz) */ 672 {9, 1455, 0, 1051} /* 08 (1400x1050x60Hz) */ 673 }; 674 675 static const struct XGI_LCDDesStruct XGI_CetLCDDes1400x1050Data[] = { 676 {1308, 1068, 781, 766}, /* 00 (320x200,320x400,640x200,640x400) */ 677 {1308, 1068, 781, 766}, /* 01 (320x350,640x350) */ 678 {1308, 1068, 781, 766}, /* 02 (360x400,720x400) */ 679 {1308, 1068, 781, 766}, /* 03 (720x350) */ 680 {1308, 1068, 781, 766}, /* 04 (640x480x60Hz) */ 681 {1388, 1148, 841, 826}, /* 05 (800x600x60Hz) */ 682 {1490, 1250, 925, 910}, /* 06 (1024x768x60Hz) */ 683 {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */ 684 {18, 1464, 0, 1051} /* 08 (1400x1050x60Hz) */ 685 }; 686 687 static const struct XGI_LCDDesStruct XGI_CetLCDDes1400x1050Data2[] = { 688 {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */ 689 {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */ 690 {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */ 691 {0, 1448, 0, 1051}, /* 03 (720x350) */ 692 {0, 1448, 0, 1051} /* 04 (640x480x60Hz) */ 693 }; 694 695 static const struct XGI_LCDDesStruct XGI_ExtLCDDLDes1600x1200Data[] = { 696 {18, 1682, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */ 697 {18, 1682, 0, 1201}, /* 01 (320x350,640x350) */ 698 {18, 1682, 0, 1201}, /* 02 (360x400,720x400) */ 699 {18, 1682, 0, 1201}, /* 03 (720x350) */ 700 {18, 1682, 0, 1201}, /* 04 (640x480x60Hz) */ 701 {18, 1682, 0, 1201}, /* 05 (800x600x60Hz) */ 702 {18, 1682, 0, 1201}, /* 06 (1024x768x60Hz) */ 703 {18, 1682, 0, 1201}, /* 07 (1280x1024x60Hz) */ 704 {18, 1682, 0, 1201}, /* 08 (1400x1050x60Hz) */ 705 {18, 1682, 0, 1201} /* 09 (1600x1200x60Hz) */ 706 }; 707 708 static const struct XGI_LCDDesStruct XGI_StLCDDLDes1600x1200Data[] = { 709 {18, 1682, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */ 710 {18, 1682, 1083, 1034}, /* 01 (320x350,640x350) */ 711 {18, 1682, 1150, 1101}, /* 02 (360x400,720x400) */ 712 {18, 1682, 1083, 1034}, /* 03 (720x350) */ 713 {18, 1682, 0, 1201}, /* 04 (640x480x60Hz) */ 714 {18, 1682, 0, 1201}, /* 05 (800x600x60Hz) */ 715 {18, 1682, 0, 1201}, /* 06 (1024x768x60Hz) */ 716 {18, 1682, 1232, 1183}, /* 07 (1280x1024x60Hz) */ 717 {18, 1682, 0, 1201}, /* 08 (1400x1050x60Hz) */ 718 {18, 1682, 0, 1201} /* 09 (1600x1200x60Hz) */ 719 }; 720 721 static const struct XGI_LCDDesStruct XGI_ExtLCDDes1600x1200Data[] = { 722 {9, 1673, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */ 723 {9, 1673, 0, 1201}, /* 01 (320x350,640x350) */ 724 {9, 1673, 0, 1201}, /* 02 (360x400,720x400) */ 725 {9, 1673, 0, 1201}, /* 03 (720x350) */ 726 {9, 1673, 0, 1201}, /* 04 (640x480x60Hz) */ 727 {9, 1673, 0, 1201}, /* 05 (800x600x60Hz) */ 728 {9, 1673, 0, 1201}, /* 06 (1024x768x60Hz) */ 729 {9, 1673, 0, 1201}, /* 07 (1280x1024x60Hz) */ 730 {9, 1673, 0, 1201}, /* 08 (1400x1050x60Hz) */ 731 {9, 1673, 0, 1201} /* 09 (1600x1200x60Hz) */ 732 }; 733 734 static const struct XGI_LCDDesStruct XGI_StLCDDes1600x1200Data[] = { 735 {9, 1673, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */ 736 {9, 1673, 1083, 1034}, /* 01 (320x350,640x350) */ 737 {9, 1673, 1150, 1101}, /* 02 (360x400,720x400) */ 738 {9, 1673, 1083, 1034}, /* 03 (720x350) */ 739 {9, 1673, 0, 1201}, /* 04 (640x480x60Hz) */ 740 {9, 1673, 0, 1201}, /* 05 (800x600x60Hz) */ 741 {9, 1673, 0, 1201}, /* 06 (1024x768x60Hz) */ 742 {9, 1673, 1232, 1183}, /* 07 (1280x1024x60Hz) */ 743 {9, 1673, 0, 1201}, /* 08 (1400x1050x60Hz) */ 744 {9, 1673, 0, 1201} /* 09 (1600x1200x60Hz) */ 745 }; 746 747 static const struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesData[] = { 748 {9, 657, 448, 405, 96, 2}, /* 00 (320x200,320x400, 749 * 640x200,640x400) 750 */ 751 {9, 657, 448, 355, 96, 2}, /* 01 (320x350,640x350) */ 752 {9, 657, 448, 405, 96, 2}, /* 02 (360x400,720x400) */ 753 {9, 657, 448, 355, 96, 2}, /* 03 (720x350) */ 754 {9, 657, 1, 483, 96, 2}, /* 04 (640x480x60Hz) */ 755 {9, 849, 627, 600, 128, 4}, /* 05 (800x600x60Hz) */ 756 {9, 1057, 805, 770, 0136, 6}, /* 06 (1024x768x60Hz) */ 757 {9, 1337, 0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */ 758 {9, 1457, 0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)*/ 759 {9, 1673, 0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */ 760 {9, 1337, 0, 771, 112, 6} /* 0A (1280x768x60Hz) */ 761 }; 762 763 /* ;;1024x768x75Hz */ 764 static const struct XGI_LCDDesStruct xgifb_lcddes_1024x768x75[] = { 765 {9, 1049, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */ 766 {9, 1049, 0, 769}, /* ; 01 (320x350,640x350) */ 767 {9, 1049, 0, 769}, /* ; 02 (360x400,720x400) */ 768 {9, 1049, 0, 769}, /* ; 03 (720x350) */ 769 {9, 1049, 0, 769}, /* ; 04 (640x480x75Hz) */ 770 {9, 1049, 0, 769}, /* ; 05 (800x600x75Hz) */ 771 {9, 1049, 0, 769} /* ; 06 (1024x768x75Hz) */ 772 }; 773 774 /* ;;1024x768x75Hz */ 775 static const struct XGI_LCDDesStruct XGI_CetLCDDes1024x768x75Data[] = { 776 {1152, 856, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */ 777 {1152, 856, 597, 562}, /* ; 01 (320x350,640x350) */ 778 {1192, 896, 622, 587}, /* ; 02 (360x400,720x400) */ 779 {1192, 896, 597, 562}, /* ; 03 (720x350) */ 780 {1129, 857, 656, 625}, /* ; 04 (640x480x75Hz) */ 781 {1209, 937, 716, 685}, /* ; 05 (800x600x75Hz) */ 782 {9, 1049, 0, 769} /* ; 06 (1024x768x75Hz) */ 783 }; 784 785 /* ;;1280x1024x75Hz */ 786 static const struct XGI_LCDDesStruct xgifb_lcddldes_1280x1024x75[] = { 787 {18, 1314, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */ 788 {18, 1314, 0, 1025}, /* ; 01 (320x350,640x350) */ 789 {18, 1314, 0, 1025}, /* ; 02 (360x400,720x400) */ 790 {18, 1314, 0, 1025}, /* ; 03 (720x350) */ 791 {18, 1314, 0, 1025}, /* ; 04 (640x480x60Hz) */ 792 {18, 1314, 0, 1025}, /* ; 05 (800x600x60Hz) */ 793 {18, 1314, 0, 1025}, /* ; 06 (1024x768x60Hz) */ 794 {18, 1314, 0, 1025} /* ; 07 (1280x1024x60Hz) */ 795 }; 796 797 /* 1280x1024x75Hz */ 798 static const struct XGI_LCDDesStruct XGI_CetLCDDLDes1280x1024x75Data[] = { 799 {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */ 800 {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */ 801 {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */ 802 {1408, 1048, 729, 688}, /* ; 03 (720x350) */ 803 {1377, 985, 794, 753}, /* ; 04 (640x480x75Hz) */ 804 {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */ 805 {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */ 806 {18, 1314, 0, 1025} /* ; 07 (1280x1024x75Hz) */ 807 }; 808 809 /* ;;1280x1024x75Hz */ 810 static const struct XGI_LCDDesStruct xgifb_lcddes_1280x1024x75[] = { 811 {9, 1305, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */ 812 {9, 1305, 0, 1025}, /* ; 01 (320x350,640x350) */ 813 {9, 1305, 0, 1025}, /* ; 02 (360x400,720x400) */ 814 {9, 1305, 0, 1025}, /* ; 03 (720x350) */ 815 {9, 1305, 0, 1025}, /* ; 04 (640x480x60Hz) */ 816 {9, 1305, 0, 1025}, /* ; 05 (800x600x60Hz) */ 817 {9, 1305, 0, 1025}, /* ; 06 (1024x768x60Hz) */ 818 {9, 1305, 0, 1025} /* ; 07 (1280x1024x60Hz) */ 819 }; 820 821 /* 1280x1024x75Hz */ 822 static const struct XGI_LCDDesStruct XGI_CetLCDDes1280x1024x75Data[] = { 823 {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */ 824 {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */ 825 {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */ 826 {1408, 1048, 729, 688}, /* ; 03 (720x350) */ 827 {1377, 985, 794, 753}, /* ; 04 (640x480x75Hz) */ 828 {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */ 829 {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */ 830 {9, 1305, 0, 1025} /* ; 07 (1280x1024x75Hz) */ 831 }; 832 833 /* Scaling LCD 75Hz */ 834 static const struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesDatax75[] = { 835 {9, 657, 448, 405, 96, 2}, /* ; 00 (320x200,320x400, 836 * 640x200,640x400) 837 */ 838 {9, 657, 448, 355, 96, 2}, /* ; 01 (320x350,640x350) */ 839 {9, 738, 448, 405, 108, 2}, /* ; 02 (360x400,720x400) */ 840 {9, 738, 448, 355, 108, 2}, /* ; 03 (720x350) */ 841 {9, 665, 0, 481, 64, 3}, /* ; 04 (640x480x75Hz) */ 842 {9, 825, 0, 601, 80, 3}, /* ; 05 (800x600x75Hz) */ 843 {9, 1049, 0, 769, 96, 3}, /* ; 06 (1024x768x75Hz) */ 844 {9, 1305, 0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */ 845 {9, 1457, 0, 1051, 112, 3}, /* ; 08 (1400x1050x60Hz)*/ 846 {9, 1673, 0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */ 847 {9, 1337, 0, 771, 112, 6} /* ; 0A (1280x768x60Hz) */ 848 }; 849 850 static const struct SiS_TVData XGI_StPALData[] = { 851 {1, 1, 864, 525, 1270, 400, 100, 0, 760}, 852 {1, 1, 864, 525, 1270, 350, 100, 0, 760}, 853 {1, 1, 864, 525, 1270, 400, 0, 0, 720}, 854 {1, 1, 864, 525, 1270, 350, 0, 0, 720}, 855 {1, 1, 864, 525, 1270, 480, 50, 0, 760}, 856 {1, 1, 864, 525, 1270, 600, 50, 0, 0} 857 }; 858 859 static const struct SiS_TVData XGI_ExtPALData[] = { 860 {2, 1, 1080, 463, 1270, 500, 50, 0, 50}, 861 {15, 7, 1152, 413, 1270, 500, 50, 0, 50}, 862 {2, 1, 1080, 463, 1270, 500, 50, 0, 50}, 863 {15, 7, 1152, 413, 1270, 500, 50, 0, 50}, 864 {2, 1, 900, 543, 1270, 500, 0, 0, 50}, 865 {4, 3, 1080, 663, 1270, 500, 438, 0, 438}, 866 {1, 1, 1125, 831, 1270, 500, 686, 0, 686}, /*301b*/ 867 {3, 2, 1080, 619, 1270, 540, 438, 0, 438} 868 }; 869 870 static const struct SiS_TVData XGI_StNTSCData[] = { 871 {1, 1, 858, 525, 1270, 400, 50, 0, 760}, 872 {1, 1, 858, 525, 1270, 350, 50, 0, 640}, 873 {1, 1, 858, 525, 1270, 400, 0, 0, 720}, 874 {1, 1, 858, 525, 1270, 350, 0, 0, 720}, 875 {1, 1, 858, 525, 1270, 480, 0, 0, 760} 876 }; 877 878 static const struct SiS_TVData XGI_ExtNTSCData[] = { 879 {9, 5, 1001, 453, 1270, 420, 171, 0, 171}, 880 {12, 5, 858, 403, 1270, 420, 171, 0, 171}, 881 {9, 5, 1001, 453, 1270, 420, 171, 0, 171}, 882 {12, 5, 858, 403, 1270, 420, 171, 0, 171}, 883 {143, 80, 836, 523, 1270, 420, 224, 0, 0}, 884 {143, 120, 1008, 643, 1270, 420, 0, 1, 0}, 885 {1, 1, 1120, 821, 1516, 420, 0, 1, 0}, /*301b*/ 886 {2, 1, 858, 503, 1584, 480, 0, 1, 0}, 887 {3, 2, 1001, 533, 1270, 420, 0, 0, 0} 888 }; 889 890 static const struct SiS_TVData XGI_St1HiTVData[] = { 891 {1, 1, 892, 563, 690, 800, 0, 0, 0}, /* 00 (320x200,320x400, 892 * 640x200,640x400) 893 */ 894 {1, 1, 892, 563, 690, 700, 0, 0, 0}, /* 01 (320x350,640x350) */ 895 {1, 1, 1000, 563, 785, 800, 0, 0, 0}, /* 02 (360x400,720x400) */ 896 {1, 1, 1000, 563, 785, 700, 0, 0, 0}, /* 03 (720x350) */ 897 {1, 1, 892, 563, 690, 960, 0, 0, 0}, /* 04 (320x240,640x480) */ 898 {8, 5, 1050, 683, 1648, 960, 0x150, 1, 0} /* 05 (400x300,800x600) */ 899 }; 900 901 static const struct SiS_TVData XGI_St2HiTVData[] = { 902 {3, 1, 840, 483, 1648, 960, 0x032, 0, 0}, /* 00 (320x200,320x400, 903 * 640x200,640x400) 904 */ 905 {1, 1, 892, 563, 690, 700, 0, 0, 0}, /* 01 (320x350,640x350) */ 906 {3, 1, 840, 483, 1648, 960, 0x032, 0, 0}, /* 02 (360x400,720x400) */ 907 {1, 1, 1000, 563, 785, 700, 0, 0, 0}, /* 03 (720x350) */ 908 {5, 2, 840, 563, 1648, 960, 0x08D, 1, 0}, /* 04 (320x240,640x480) */ 909 {8, 5, 1050, 683, 1648, 960, 0x17C, 1, 0} /* 05 (400x300,800x600) */ 910 }; 911 912 static const struct SiS_TVData XGI_ExtHiTVData[] = { 913 {6, 1, 840, 563, 1632, 960, 0, 0, 0}, /* 00 (320x200,320x400, 914 * 640x200,640x400) 915 */ 916 {3, 1, 960, 563, 1632, 960, 0, 0, 0}, /* 01 (320x350,640x350) */ 917 {3, 1, 840, 483, 1632, 960, 0, 0, 0}, /* 02 (360x400,720x400) */ 918 {3, 1, 960, 563, 1632, 960, 0, 0, 0}, /* 03 (720x350) */ 919 {5, 1, 840, 563, 1648, 960, 0x166, 1, 0}, /* 04 (320x240,640x480) */ 920 {16, 5, 1050, 683, 1648, 960, 0x143, 1, 0}, /* 05 (400x300,800x600) */ 921 {25, 12, 1260, 851, 1648, 960, 0x032, 0, 0}, /* 06 (512x384,1024x768)*/ 922 {5, 4, 1575, 1124, 1648, 960, 0x128, 0, 0}, /* 07 (1280x1024) */ 923 {4, 1, 1050, 563, 1548, 960, 0x143, 1, 0}, /* 08 (800x480) */ 924 {5, 2, 1400, 659, 1648, 960, 0x032, 0, 0}, /* 09 (1024x576) */ 925 {8, 5, 1750, 803, 1648, 960, 0x128, 0, 0} /* 0A (1280x720) */ 926 }; 927 928 static const struct SiS_TVData XGI_ExtYPbPr525iData[] = { 929 { 9, 5, 1001, 453, 1270, 420, 171, 0, 171}, 930 { 12, 5, 858, 403, 1270, 420, 171, 0, 171}, 931 { 9, 5, 1001, 453, 1270, 420, 171, 0, 171}, 932 { 12, 5, 858, 403, 1270, 420, 171, 0, 171}, 933 {143, 80, 836, 523, 1250, 420, 224, 0, 0}, 934 {143, 120, 1008, 643, 1250, 420, 0, 1, 0}, 935 { 1, 1, 1120, 821, 1516, 420, 0, 1, 0}, /*301b*/ 936 { 2, 1, 858, 503, 1584, 480, 0, 1, 0}, 937 { 3, 2, 1001, 533, 1250, 420, 0, 0, 0} 938 }; 939 940 static const struct SiS_TVData XGI_StYPbPr525iData[] = { 941 {1, 1, 858, 525, 1270, 400, 50, 0, 760}, 942 {1, 1, 858, 525, 1270, 350, 50, 0, 640}, 943 {1, 1, 858, 525, 1270, 400, 0, 0, 720}, 944 {1, 1, 858, 525, 1270, 350, 0, 0, 720}, 945 {1, 1, 858, 525, 1270, 480, 0, 0, 760}, 946 }; 947 948 static const struct SiS_TVData XGI_ExtYPbPr525pData[] = { 949 { 9, 5, 1001, 453, 1270, 420, 171, 0, 171}, 950 { 12, 5, 858, 403, 1270, 420, 171, 0, 171}, 951 { 9, 5, 1001, 453, 1270, 420, 171, 0, 171}, 952 { 12, 5, 858, 403, 1270, 420, 171, 0, 171}, 953 {143, 80, 836, 523, 1270, 420, 224, 0, 0}, 954 {143, 120, 1008, 643, 1270, 420, 0, 1, 0}, 955 { 1, 1, 1120, 821, 1516, 420, 0, 1, 0}, /*301b*/ 956 { 2, 1, 858, 503, 1584, 480, 0, 1, 0}, 957 { 3, 2, 1001, 533, 1270, 420, 0, 0, 0} 958 }; 959 960 static const struct SiS_TVData XGI_StYPbPr525pData[] = { 961 {1, 1, 1716, 525, 1270, 400, 50, 0, 760}, 962 {1, 1, 1716, 525, 1270, 350, 50, 0, 640}, 963 {1, 1, 1716, 525, 1270, 400, 0, 0, 720}, 964 {1, 1, 1716, 525, 1270, 350, 0, 0, 720}, 965 {1, 1, 1716, 525, 1270, 480, 0, 0, 760}, 966 }; 967 968 static const struct SiS_TVData XGI_ExtYPbPr750pData[] = { 969 { 3, 1, 935, 470, 1130, 680, 50, 0, 0}, /* 00 (320x200,320x400, 970 * 640x200,640x400) 971 */ 972 {24, 7, 935, 420, 1130, 680, 50, 0, 0}, /* 01 (320x350,640x350) */ 973 { 3, 1, 935, 470, 1130, 680, 50, 0, 0}, /* 02 (360x400,720x400) */ 974 {24, 7, 935, 420, 1130, 680, 50, 0, 0}, /* 03 (720x350) */ 975 { 2, 1, 1100, 590, 1130, 640, 50, 0, 0}, /* 04 (320x240,640x480) */ 976 { 3, 2, 1210, 690, 1130, 660, 50, 0, 0}, /* 05 (400x300,800x600) */ 977 { 1, 1, 1375, 878, 1130, 640, 638, 0, 0}, /* 06 (1024x768) */ 978 { 2, 1, 858, 503, 1130, 480, 0, 1, 0}, /* 07 (720x480) */ 979 { 5, 4, 1815, 570, 1130, 660, 50, 0, 0}, 980 { 5, 3, 1100, 686, 1130, 640, 50, 1, 0}, 981 {10, 9, 1320, 830, 1130, 640, 50, 0, 0} 982 }; 983 984 static const struct SiS_TVData XGI_StYPbPr750pData[] = { 985 {1, 1, 1650, 750, 1280, 400, 50, 0, 760}, 986 {1, 1, 1650, 750, 1280, 350, 50, 0, 640}, 987 {1, 1, 1650, 750, 1280, 400, 0, 0, 720}, 988 {1, 1, 1650, 750, 1280, 350, 0, 0, 720}, 989 {1, 1, 1650, 750, 1280, 480, 0, 0, 760}, 990 }; 991 992 static const unsigned char XGI330_NTSCTiming[] = { 993 0x17, 0x1d, 0x03, 0x09, 0x05, 0x06, 0x0c, 0x0c, 994 0x94, 0x49, 0x01, 0x0a, 0x06, 0x0d, 0x04, 0x0a, 995 0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x1b, 996 0x0c, 0x50, 0x00, 0x97, 0x00, 0xda, 0x4a, 0x17, 997 0x7d, 0x05, 0x4b, 0x00, 0x00, 0xe2, 0x00, 0x02, 998 0x03, 0x0a, 0x65, 0x9d, 0x08, 0x92, 0x8f, 0x40, 999 0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x50, 1000 0x00, 0x40, 0x44, 0x00, 0xdb, 0x02, 0x3b, 0x00 1001 }; 1002 1003 static const unsigned char XGI330_PALTiming[] = { 1004 0x21, 0x5A, 0x35, 0x6e, 0x04, 0x38, 0x3d, 0x70, 1005 0x94, 0x49, 0x01, 0x12, 0x06, 0x3e, 0x35, 0x6d, 1006 0x06, 0x14, 0x3e, 0x35, 0x6d, 0x00, 0x45, 0x2b, 1007 0x70, 0x50, 0x00, 0x9b, 0x00, 0xd9, 0x5d, 0x17, 1008 0x7d, 0x05, 0x45, 0x00, 0x00, 0xe8, 0x00, 0x02, 1009 0x0d, 0x00, 0x68, 0xb0, 0x0b, 0x92, 0x8f, 0x40, 1010 0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x63, 1011 0x00, 0x40, 0x3e, 0x00, 0xe1, 0x02, 0x28, 0x00 1012 }; 1013 1014 static const unsigned char XGI330_HiTVExtTiming[] = { 1015 0x2D, 0x60, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64, 1016 0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D, 1017 0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F, 1018 0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13, 1019 0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40, 1020 0x8E, 0x8E, 0x82, 0x07, 0x0B, 1021 0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1022 0x60, 0x14, 0x3D, 0x63, 0x4F, 1023 0x27, 0x00, 0xfc, 0xff, 0x6a, 0x00 1024 }; 1025 1026 static const unsigned char XGI330_HiTVSt1Timing[] = { 1027 0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65, 1028 0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D, 1029 0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F, 1030 0x65, 0x90, 0x7B, 0xA8, 0x03, 0xF0, 0x87, 0x03, 1031 0x11, 0x15, 0x11, 0xCF, 0x10, 0x11, 0xCF, 0x10, 1032 0x35, 0x35, 0x3B, 0x69, 0x1D, 1033 0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1034 0x60, 0x04, 0x86, 0xAF, 0x5D, 1035 0x0E, 0x00, 0xfc, 0xff, 0x2d, 0x00 1036 }; 1037 1038 static const unsigned char XGI330_HiTVSt2Timing[] = { 1039 0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64, 1040 0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D, 1041 0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F, 1042 0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13, 1043 0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40, 1044 0x8E, 0x8E, 0x82, 0x07, 0x0B, 1045 0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1046 0x60, 0x14, 0x3D, 0x63, 0x4F, 1047 0x27, 0x00, 0xFC, 0xff, 0x6a, 0x00 1048 }; 1049 1050 static const unsigned char XGI330_HiTVTextTiming[] = { 1051 0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65, 1052 0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D, 1053 0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F, 1054 0x65, 0x90, 0xE7, 0xBC, 0x03, 0x0C, 0x97, 0x03, 1055 0x14, 0x78, 0x14, 0x08, 0x20, 0x14, 0x08, 0x20, 1056 0xC8, 0xC8, 0x3B, 0xD2, 0x26, 1057 0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1058 0x60, 0x04, 0x96, 0x72, 0x5C, 1059 0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00 1060 }; 1061 1062 static const unsigned char XGI330_YPbPr750pTiming[] = { 1063 0x30, 0x1d, 0xe8, 0x09, 0x09, 0xed, 0x0c, 0x0c, 1064 0x98, 0x0a, 0x01, 0x0c, 0x06, 0x0d, 0x04, 0x0a, 1065 0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f, 1066 0xed, 0x50, 0x70, 0x9f, 0x16, 0x59, 0x60, 0x13, 1067 0x27, 0x0b, 0x27, 0xfc, 0x30, 0x27, 0x1c, 0xb0, 1068 0x4b, 0x4b, 0x6f, 0x2f, 0x63, 1069 0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1070 0x60, 0x14, 0x73, 0x00, 0x40, 1071 0x11, 0x00, 0xfc, 0xff, 0x32, 0x00 1072 }; 1073 1074 static const unsigned char XGI330_YPbPr525pTiming[] = { 1075 0x3E, 0x11, 0x06, 0x09, 0x0b, 0x0c, 0x0c, 0x0c, 1076 0x98, 0x0a, 0x01, 0x0d, 0x06, 0x0d, 0x04, 0x0a, 1077 0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f, 1078 0x0c, 0x50, 0xb2, 0x9f, 0x16, 0x59, 0x4f, 0x13, 1079 0xad, 0x11, 0xad, 0x1d, 0x40, 0x8a, 0x3d, 0xb8, 1080 0x51, 0x5e, 0x60, 0x49, 0x7d, 1081 0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1082 0x60, 0x14, 0x4B, 0x43, 0x41, 1083 0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00 1084 }; 1085 1086 static const unsigned char XGI330_YPbPr525iTiming[] = { 1087 0x1B, 0x21, 0x03, 0x09, 0x05, 0x06, 0x0C, 0x0C, 1088 0x94, 0x49, 0x01, 0x0A, 0x06, 0x0D, 0x04, 0x0A, 1089 0x06, 0x14, 0x0D, 0x04, 0x0A, 0x00, 0x85, 0x1B, 1090 0x0C, 0x50, 0x00, 0x97, 0x00, 0xDA, 0x4A, 0x17, 1091 0x7D, 0x05, 0x4B, 0x00, 0x00, 0xE2, 0x00, 0x02, 1092 0x03, 0x0A, 0x65, 0x9D, 0x08, 1093 0x92, 0x8F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C, 1094 0x60, 0x14, 0x4B, 0x00, 0x40, 1095 0x44, 0x00, 0xDB, 0x02, 0x3B, 0x00 1096 }; 1097 1098 static const unsigned char XGI330_HiTVGroup3Data[] = { 1099 0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x5F, 1100 0x05, 0x21, 0xB2, 0xB2, 0x55, 0x77, 0x2A, 0xA6, 1101 0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20, 1102 0x8C, 0x6E, 0x60, 0x2E, 0x58, 0x48, 0x72, 0x44, 1103 0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80, 1104 0x4F, 0x7F, 0x03, 0xA8, 0x7D, 0x20, 0x1A, 0xA9, 1105 0x14, 0x05, 0x03, 0x7E, 0x64, 0x31, 0x14, 0x75, 1106 0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01 1107 }; 1108 1109 static const unsigned char XGI330_HiTVGroup3Simu[] = { 1110 0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x95, 1111 0xDB, 0x20, 0xB8, 0xB8, 0x55, 0x47, 0x2A, 0xA6, 1112 0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20, 1113 0x8C, 0x6E, 0x60, 0x15, 0x26, 0xD3, 0xE4, 0x11, 1114 0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80, 1115 0x67, 0x36, 0x01, 0x47, 0x0E, 0x10, 0xBE, 0xB4, 1116 0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75, 1117 0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01 1118 }; 1119 1120 static const unsigned char XGI330_HiTVGroup3Text[] = { 1121 0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0xA7, 1122 0xF5, 0x20, 0xCE, 0xCE, 0x55, 0x47, 0x2A, 0xA6, 1123 0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20, 1124 0x8C, 0x6E, 0x60, 0x18, 0x2C, 0x0C, 0x20, 0x22, 1125 0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80, 1126 0x93, 0x3C, 0x01, 0x50, 0x2F, 0x10, 0xF4, 0xCA, 1127 0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75, 1128 0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01 1129 }; 1130 1131 static const unsigned char XGI330_Ren525pGroup3[] = { 1132 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13, 1133 0xB1, 0x41, 0x62, 0x62, 0xFF, 0xF4, 0x45, 0xa6, 1134 0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20, 1135 0xAC, 0xDA, 0x60, 0xFe, 0x6A, 0x9A, 0x06, 0x10, 1136 0xd1, 0x04, 0x18, 0x0a, 0xFF, 0x80, 0x00, 0x80, 1137 0x3c, 0x77, 0x00, 0xEF, 0xE0, 0x10, 0xB0, 0xE0, 1138 0x10, 0x4F, 0x0F, 0x0F, 0x05, 0x0F, 0x08, 0x6E, 1139 0x1a, 0x1F, 0x25, 0x2a, 0x4C, 0xAA, 0x01 1140 }; 1141 1142 static const unsigned char XGI330_Ren750pGroup3[] = { 1143 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a, 1144 0x54, 0x41, 0xE7, 0xE7, 0xFF, 0xF4, 0x45, 0xa6, 1145 0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20, 1146 0xAC, 0x6A, 0x60, 0x2b, 0x52, 0xCD, 0x61, 0x10, 1147 0x51, 0x04, 0x18, 0x0a, 0x1F, 0x80, 0x00, 0x80, 1148 0xFF, 0xA4, 0x04, 0x2B, 0x94, 0x21, 0x72, 0x94, 1149 0x26, 0x05, 0x01, 0x0F, 0xed, 0x0F, 0x0A, 0x64, 1150 0x18, 0x1D, 0x23, 0x28, 0x4C, 0xAA, 0x01 1151 }; 1152 1153 static const struct SiS_LVDSData XGI_LVDS1024x768Data_1[] = { 1154 { 960, 438, 1344, 806}, /* 00 (320x200,320x400,640x200,640x400) */ 1155 { 960, 388, 1344, 806}, /* 01 (320x350,640x350) */ 1156 {1040, 438, 1344, 806}, /* 02 (360x400,720x400) */ 1157 {1040, 388, 1344, 806}, /* 03 (720x350) */ 1158 { 960, 518, 1344, 806}, /* 04 (320x240,640x480) */ 1159 {1120, 638, 1344, 806}, /* 05 (400x300,800x600) */ 1160 {1344, 806, 1344, 806} /* 06 (512x384,1024x768) */ 1161 }; 1162 1163 static const struct SiS_LVDSData XGI_LVDS1024x768Data_2[] = { 1164 {1344, 806, 1344, 806}, 1165 {1344, 806, 1344, 806}, 1166 {1344, 806, 1344, 806}, 1167 {1344, 806, 1344, 806}, 1168 {1344, 806, 1344, 806}, 1169 {1344, 806, 1344, 806}, 1170 {1344, 806, 1344, 806}, 1171 {800, 449, 1280, 801}, 1172 {800, 525, 1280, 813} 1173 }; 1174 1175 static const struct SiS_LVDSData XGI_LVDS1280x1024Data_1[] = { 1176 {1048, 442, 1688, 1066}, 1177 {1048, 392, 1688, 1066}, 1178 {1048, 442, 1688, 1066}, 1179 {1048, 392, 1688, 1066}, 1180 {1048, 522, 1688, 1066}, 1181 {1208, 642, 1688, 1066}, 1182 {1432, 810, 1688, 1066}, 1183 {1688, 1066, 1688, 1066} 1184 }; 1185 1186 #define XGI_LVDS1280x1024Data_2 XGI_LVDS1024x768Data_2 1187 1188 static const struct SiS_LVDSData XGI_LVDS1400x1050Data_1[] = { 1189 {928, 416, 1688, 1066}, 1190 {928, 366, 1688, 1066}, 1191 {928, 416, 1688, 1066}, 1192 {928, 366, 1688, 1066}, 1193 {928, 496, 1688, 1066}, 1194 {1088, 616, 1688, 1066}, 1195 {1312, 784, 1688, 1066}, 1196 {1568, 1040, 1688, 1066}, 1197 {1688, 1066, 1688, 1066} 1198 }; 1199 1200 static const struct SiS_LVDSData XGI_LVDS1400x1050Data_2[] = { 1201 {1688, 1066, 1688, 1066}, 1202 {1688, 1066, 1688, 1066}, 1203 {1688, 1066, 1688, 1066}, 1204 {1688, 1066, 1688, 1066}, 1205 {1688, 1066, 1688, 1066}, 1206 {1688, 1066, 1688, 1066}, 1207 {1688, 1066, 1688, 1066}, 1208 {1688, 1066, 1688, 1066}, 1209 {1688, 1066, 1688, 1066} 1210 }; 1211 1212 /* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */ 1213 static const struct SiS_LVDSData XGI_LVDS1600x1200Data_1[] = { 1214 {1088, 520, 2048, 1320}, /* 00 (320x200,320x400,640x200,640x400) */ 1215 {1088, 470, 2048, 1320}, /* 01 (320x350,640x350) */ 1216 {1088, 520, 2048, 1320}, /* 02 (360x400,720x400) */ 1217 {1088, 470, 2048, 1320}, /* 03 (720x350) */ 1218 {1088, 600, 2048, 1320}, /* 04 (320x240,640x480) */ 1219 {1248, 720, 2048, 1320}, /* 05 (400x300,800x600) */ 1220 {1472, 888, 2048, 1320}, /* 06 (512x384,1024x768) */ 1221 {1728, 1144, 2048, 1320}, /* 07 (640x512,1280x1024) */ 1222 {1848, 1170, 2048, 1320}, /* 08 (1400x1050) */ 1223 {2048, 1320, 2048, 1320} /* 09 (1600x1200) */ 1224 }; 1225 1226 static const struct SiS_LVDSData XGI_LVDSNoScalingData[] = { 1227 { 800, 449, 800, 449}, /* 00 (320x200,320x400,640x200,640x400) */ 1228 { 800, 449, 800, 449}, /* 01 (320x350,640x350) */ 1229 { 800, 449, 800, 449}, /* 02 (360x400,720x400) */ 1230 { 800, 449, 800, 449}, /* 03 (720x350) */ 1231 { 800, 525, 800, 525}, /* 04 (640x480x60Hz) */ 1232 {1056, 628, 1056, 628}, /* 05 (800x600x60Hz) */ 1233 {1344, 806, 1344, 806}, /* 06 (1024x768x60Hz) */ 1234 {1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */ 1235 {1688, 1066, 1688, 1066}, /* 08 (1400x1050x60Hz) */ 1236 {2160, 1250, 2160, 1250}, /* 09 (1600x1200x60Hz) */ 1237 {1688, 806, 1688, 806} /* 0A (1280x768x60Hz) */ 1238 }; 1239 1240 static const struct SiS_LVDSData XGI_LVDS1024x768Data_1x75[] = { 1241 { 960, 438, 1312, 800}, /* 00 (320x200,320x400,640x200,640x400) */ 1242 { 960, 388, 1312, 800}, /* 01 (320x350,640x350) */ 1243 {1040, 438, 1312, 800}, /* 02 (360x400,720x400) */ 1244 {1040, 388, 1312, 800}, /* 03 (720x350) */ 1245 { 928, 512, 1312, 800}, /* 04 (320x240,640x480) */ 1246 {1088, 632, 1312, 800}, /* 05 (400x300,800x600) */ 1247 {1312, 800, 1312, 800}, /* 06 (512x384,1024x768) */ 1248 }; 1249 1250 static const struct SiS_LVDSData XGI_LVDS1024x768Data_2x75[] = { 1251 {1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,640x200,640x400) */ 1252 {1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */ 1253 {1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */ 1254 {1312, 800, 1312, 800}, /* ; 03 (720x350) */ 1255 {1312, 800, 1312, 800}, /* ; 04 (320x240,640x480) */ 1256 {1312, 800, 1312, 800}, /* ; 05 (400x300,800x600) */ 1257 {1312, 800, 1312, 800}, /* ; 06 (512x384,1024x768) */ 1258 }; 1259 1260 static const struct SiS_LVDSData XGI_LVDS1280x1024Data_1x75[] = { 1261 {1048, 442, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */ 1262 {1048, 392, 1688, 1066 }, /* ; 01 (320x350,640x350) */ 1263 {1128, 442, 1688, 1066 }, /* ; 02 (360x400,720x400) */ 1264 {1128, 392, 1688, 1066 }, /* ; 03 (720x350) */ 1265 {1048, 522, 1688, 1066 }, /* ; 04 (320x240,640x480) */ 1266 {1208, 642, 1688, 1066 }, /* ; 05 (400x300,800x600) */ 1267 {1432, 810, 1688, 1066 }, /* ; 06 (512x384,1024x768) */ 1268 {1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */ 1269 }; 1270 1271 static const struct SiS_LVDSData XGI_LVDS1280x1024Data_2x75[] = { 1272 {1688, 1066, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */ 1273 {1688, 1066, 1688, 1066 }, /* ; 01 (320x350,640x350) */ 1274 {1688, 1066, 1688, 1066 }, /* ; 02 (360x400,720x400) */ 1275 {1688, 1066, 1688, 1066 }, /* ; 03 (720x350) */ 1276 {1688, 1066, 1688, 1066 }, /* ; 04 (320x240,640x480) */ 1277 {1688, 1066, 1688, 1066 }, /* ; 05 (400x300,800x600) */ 1278 {1688, 1066, 1688, 1066 }, /* ; 06 (512x384,1024x768) */ 1279 {1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */ 1280 }; 1281 1282 static const struct SiS_LVDSData XGI_LVDSNoScalingDatax75[] = { 1283 { 800, 449, 800, 449}, /* ; 00 (320x200,320x400,640x200,640x400) */ 1284 { 800, 449, 800, 449}, /* ; 01 (320x350,640x350) */ 1285 { 900, 449, 900, 449}, /* ; 02 (360x400,720x400) */ 1286 { 900, 449, 900, 449}, /* ; 03 (720x350) */ 1287 { 800, 500, 800, 500}, /* ; 04 (640x480x75Hz) */ 1288 {1056, 625, 1056, 625}, /* ; 05 (800x600x75Hz) */ 1289 {1312, 800, 1312, 800}, /* ; 06 (1024x768x75Hz) */ 1290 {1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */ 1291 {1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz) 1292 * ;;[ycchen] 12/19/02 1293 */ 1294 {2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */ 1295 {1688, 806, 1688, 806}, /* ; 0A (1280x768x75Hz) */ 1296 }; 1297 1298 static const struct SiS_LVDSData XGI_LVDS1024x768Des_1[] = { 1299 {0, 1048, 0, 771}, /* 00 (320x200,320x400,640x200,640x400) */ 1300 {0, 1048, 0, 771}, /* 01 (320x350,640x350) */ 1301 {0, 1048, 0, 771}, /* 02 (360x400,720x400) */ 1302 {0, 1048, 0, 771}, /* 03 (720x350) */ 1303 {0, 1048, 0, 771}, /* 04 (640x480x60Hz) */ 1304 {0, 1048, 0, 771}, /* 05 (800x600x60Hz) */ 1305 {0, 1048, 805, 770} /* 06 (1024x768x60Hz) */ 1306 }; 1307 1308 static const struct SiS_LVDSData XGI_LVDS1024x768Des_2[] = { 1309 {1142, 856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */ 1310 {1142, 856, 597, 562}, /* 01 (320x350,640x350) */ 1311 {1142, 856, 622, 587}, /* 02 (360x400,720x400) */ 1312 {1142, 856, 597, 562}, /* 03 (720x350) */ 1313 {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */ 1314 {1232, 936, 722, 687}, /* 05 (800x600x60Hz) */ 1315 { 0, 1048, 805, 771} /* 06 (1024x768x60Hz) */ 1316 }; 1317 1318 static const struct SiS_LVDSData XGI_LVDS1024x768Des_3[] = { 1319 {320, 24, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */ 1320 {320, 24, 597, 562}, /* 01 (320x350,640x350) */ 1321 {320, 24, 622, 587}, /* 02 (360x400,720x400) */ 1322 {320, 24, 597, 562}, /* 03 (720x350) */ 1323 {320, 24, 722, 687} /* 04 (640x480x60Hz) */ 1324 }; 1325 1326 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_1[] = { 1327 {0, 1328, 0, 1025}, /* 00 (320x200,320x400,640x200,640x400) */ 1328 {0, 1328, 0, 1025}, /* 01 (320x350,640x350) */ 1329 {0, 1328, 0, 1025}, /* 02 (360x400,720x400) */ 1330 {0, 1328, 0, 1025}, /* 03 (720x350) */ 1331 {0, 1328, 0, 1025}, /* 04 (640x480x60Hz) */ 1332 {0, 1328, 0, 1025}, /* 05 (800x600x60Hz) */ 1333 {0, 1328, 0, 1025}, /* 06 (1024x768x60Hz) */ 1334 {0, 1328, 1065, 1024} /* 07 (1280x1024x60Hz) */ 1335 }; 1336 1337 /* The Display setting for DE Mode Panel */ 1338 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_2[] = { 1339 {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */ 1340 {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */ 1341 {1408, 1048, 752, 711}, /* 02 (360x400,720x400) */ 1342 {1408, 1048, 729, 688}, /* 03 (720x350) */ 1343 {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */ 1344 {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */ 1345 {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */ 1346 {0000, 1328, 0, 1025} /* 07 (1280x1024x60Hz) */ 1347 }; 1348 1349 static const struct SiS_LVDSData XGI_LVDS1400x1050Des_1[] = { 1350 {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */ 1351 {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */ 1352 {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */ 1353 {0, 1448, 0, 1051}, /* 03 (720x350) */ 1354 {0, 1448, 0, 1051}, /* 04 (640x480x60Hz) */ 1355 {0, 1448, 0, 1051}, /* 05 (800x600x60Hz) */ 1356 {0, 1448, 0, 1051}, /* 06 (1024x768x60Hz) */ 1357 {0, 1448, 0, 1051}, /* 07 (1280x1024x60Hz) */ 1358 {0, 1448, 0, 1051} /* 08 (1400x1050x60Hz) */ 1359 }; 1360 1361 static const struct SiS_LVDSData XGI_LVDS1400x1050Des_2[] = { 1362 {1308, 1068, 781, 766}, /* 00 (320x200,320x400,640x200,640x400) */ 1363 {1308, 1068, 781, 766}, /* 01 (320x350,640x350) */ 1364 {1308, 1068, 781, 766}, /* 02 (360x400,720x400) */ 1365 {1308, 1068, 781, 766}, /* 03 (720x350) */ 1366 {1308, 1068, 781, 766}, /* 04 (640x480x60Hz) */ 1367 {1388, 1148, 841, 826}, /* 05 (800x600x60Hz) */ 1368 {1490, 1250, 925, 910}, /* 06 (1024x768x60Hz) */ 1369 {1608, 1368, 1053, 1038}, /* 07 (1280x1024x60Hz) */ 1370 { 0, 1448, 0, 1051} /* 08 (1400x1050x60Hz) */ 1371 }; 1372 1373 static const struct SiS_LVDSData XGI_LVDS1600x1200Des_1[] = { 1374 {0, 1664, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */ 1375 {0, 1664, 0, 1201}, /* 01 (320x350,640x350) */ 1376 {0, 1664, 0, 1201}, /* 02 (360x400,720x400) */ 1377 {0, 1664, 0, 1201}, /* 03 (720x350) */ 1378 {0, 1664, 0, 1201}, /* 04 (640x480x60Hz) */ 1379 {0, 1664, 0, 1201}, /* 05 (800x600x60Hz) */ 1380 {0, 1664, 0, 1201}, /* 06 (1024x768x60Hz) */ 1381 {0, 1664, 0, 1201}, /* 07 (1280x1024x60Hz) */ 1382 {0, 1664, 0, 1201}, /* 08 (1400x1050x60Hz) */ 1383 {0, 1664, 0, 1201} /* 09 (1600x1200x60Hz) */ 1384 }; 1385 1386 static const struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesData[] = { 1387 {0, 648, 448, 405, 96, 2}, /* 00 (320x200,320x400, 1388 * 640x200,640x400) 1389 */ 1390 {0, 648, 448, 355, 96, 2}, /* 01 (320x350,640x350) */ 1391 {0, 648, 448, 405, 96, 2}, /* 02 (360x400,720x400) */ 1392 {0, 648, 448, 355, 96, 2}, /* 03 (720x350) */ 1393 {0, 648, 1, 483, 96, 2}, /* 04 (640x480x60Hz) */ 1394 {0, 840, 627, 600, 128, 4}, /* 05 (800x600x60Hz) */ 1395 {0, 1048, 805, 770, 136, 6}, /* 06 (1024x768x60Hz) */ 1396 {0, 1328, 0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */ 1397 {0, 1438, 0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)*/ 1398 {0, 1664, 0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */ 1399 {0, 1328, 0, 0771, 112, 6} /* 0A (1280x768x60Hz) */ 1400 }; 1401 1402 /* ; 1024x768 Full-screen */ 1403 static const struct SiS_LVDSData XGI_LVDS1024x768Des_1x75[] = { 1404 {0, 1040, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */ 1405 {0, 1040, 0, 769}, /* ; 01 (320x350,640x350) */ 1406 {0, 1040, 0, 769}, /* ; 02 (360x400,720x400) */ 1407 {0, 1040, 0, 769}, /* ; 03 (720x350) */ 1408 {0, 1040, 0, 769}, /* ; 04 (640x480x75Hz) */ 1409 {0, 1040, 0, 769}, /* ; 05 (800x600x75Hz) */ 1410 {0, 1040, 0, 769} /* ; 06 (1024x768x75Hz) */ 1411 }; 1412 1413 /* ; 1024x768 center-screen (Enh. Mode) */ 1414 static const struct SiS_LVDSData XGI_LVDS1024x768Des_2x75[] = { 1415 {1142, 856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */ 1416 {1142, 856, 597, 562}, /* 01 (320x350,640x350) */ 1417 {1142, 856, 622, 587}, /* 02 (360x400,720x400) */ 1418 {1142, 856, 597, 562}, /* 03 (720x350) */ 1419 {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */ 1420 {1232, 936, 722, 687}, /* 05 (800x600x60Hz) */ 1421 { 0, 1048, 805, 771} /* 06 (1024x768x60Hz) */ 1422 }; 1423 1424 /* ; 1024x768 center-screen (St.Mode) */ 1425 static const struct SiS_LVDSData XGI_LVDS1024x768Des_3x75[] = { 1426 {320, 24, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */ 1427 {320, 24, 597, 562}, /* ; 01 (320x350,640x350) */ 1428 {320, 24, 622, 587}, /* ; 02 (360x400,720x400) */ 1429 {320, 24, 597, 562}, /* ; 03 (720x350) */ 1430 {320, 24, 722, 687} /* ; 04 (640x480x60Hz) */ 1431 }; 1432 1433 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_1x75[] = { 1434 {0, 1296, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */ 1435 {0, 1296, 0, 1025}, /* ; 01 (320x350,640x350) */ 1436 {0, 1296, 0, 1025}, /* ; 02 (360x400,720x400) */ 1437 {0, 1296, 0, 1025}, /* ; 03 (720x350) */ 1438 {0, 1296, 0, 1025}, /* ; 04 (640x480x75Hz) */ 1439 {0, 1296, 0, 1025}, /* ; 05 (800x600x75Hz) */ 1440 {0, 1296, 0, 1025}, /* ; 06 (1024x768x75Hz) */ 1441 {0, 1296, 0, 1025} /* ; 07 (1280x1024x75Hz) */ 1442 }; 1443 1444 /* The Display setting for DE Mode Panel */ 1445 /* Set DE as default */ 1446 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_2x75[] = { 1447 {1368, 976, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */ 1448 {1368, 976, 729, 688}, /* ; 01 (320x350,640x350) */ 1449 {1408, 976, 752, 711}, /* ; 02 (360x400,720x400) */ 1450 {1408, 976, 729, 688}, /* ; 03 (720x350) */ 1451 {1368, 976, 794, 753}, /* ; 04 (640x480x75Hz) */ 1452 {1448, 1036, 854, 813}, /* ; 05 (800x600x75Hz) */ 1453 {1560, 1168, 938, 897}, /* ; 06 (1024x768x75Hz) */ 1454 { 0, 1296, 0, 1025} /* ; 07 (1280x1024x75Hz) */ 1455 }; 1456 1457 /* Scaling LCD 75Hz */ 1458 static const struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] = { 1459 {0, 648, 448, 405, 96, 2}, /* ; 00 (320x200,320x400, 1460 * 640x200,640x400) 1461 */ 1462 {0, 648, 448, 355, 96, 2}, /* ; 01 (320x350,640x350) */ 1463 {0, 729, 448, 405, 108, 2}, /* ; 02 (360x400,720x400) */ 1464 {0, 729, 448, 355, 108, 2}, /* ; 03 (720x350) */ 1465 {0, 656, 0, 481, 64, 3}, /* ; 04 (640x480x75Hz) */ 1466 {0, 816, 0, 601, 80, 3}, /* ; 05 (800x600x75Hz) */ 1467 {0, 1040, 0, 769, 96, 3}, /* ; 06 (1024x768x75Hz) */ 1468 {0, 1296, 0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */ 1469 {0, 1448, 0, 1051, 112, 3}, /* ; 08 (1400x1050x75Hz) */ 1470 {0, 1664, 0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */ 1471 {0, 1328, 0, 771, 112, 6} /* ; 0A (1280x768x75Hz) */ 1472 }; 1473 1474 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1475 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_H[] = { 1476 { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} }, /* 00 (320x) */ 1477 { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} }, /* 01 (360x) */ 1478 { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} }, /* 02 (400x) */ 1479 { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} }, /* 03 (512x) */ 1480 { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 04 (640x) */ 1481 { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 05 (720x) */ 1482 { {0x87, 0x63, 0x8B, 0x69, 0x1A, 0x00, 0x26, 0x00} }, /* 06 (800x) */ 1483 { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* 07 (1024x) */ 1484 }; 1485 1486 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1487 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_H[] = { 1488 { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 00 (320x) */ 1489 { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 01 (360x) */ 1490 { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00 } }, /* 02 (400x) */ 1491 { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00 } }, /* 03 (512x) */ 1492 { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 04 (640x) */ 1493 { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 05 (720x) */ 1494 { {0x92, 0x63, 0x96, 0x6C, 0x1A, 0x00, 0x06, 0x00 } }, /* 06 (800x) */ 1495 { {0xAE, 0x7F, 0x92, 0x88, 0x96, 0x00, 0x02, 0x00 } }, /* 07 (1024x) */ 1496 { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00 } } /* 08 (1280x) */ 1497 }; 1498 1499 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1500 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_H[] = { 1501 { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 00 (320x) */ 1502 { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 01 (360x) */ 1503 { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} }, /* 02 (400x) */ 1504 { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} }, /* 03 (512x) */ 1505 { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 04 (640x) */ 1506 { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 05 (720x) */ 1507 { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} }, /* 06 (800x) */ 1508 { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* 07 (1024x) */ 1509 }; 1510 1511 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1512 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_H[] = { 1513 { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 00 (320x) */ 1514 { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 01 (360x) */ 1515 { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} }, /* 02 (400x) */ 1516 { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} }, /* 03 (512x) */ 1517 { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 04 (640x) */ 1518 { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 05 (720x) */ 1519 { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} }, /* 06 (800x) */ 1520 { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} }, /* 07 (1024x) */ 1521 { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* 08 (1280x) */ 1522 }; 1523 1524 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1525 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] = { 1526 { {0x47, 0x27, 0x8B, 0x2C, 0x1A, 0x00, 0x05, 0x00} }, /* 00 (320x) */ 1527 { {0x47, 0x27, 0x8B, 0x30, 0x1E, 0x00, 0x05, 0x00} }, /* 01 (360x) */ 1528 { {0x51, 0x31, 0x95, 0x36, 0x04, 0x00, 0x01, 0x00} }, /* 02 (400x) */ 1529 { {0x5F, 0x3F, 0x83, 0x44, 0x92, 0x00, 0x01, 0x00} }, /* 03 (512x) */ 1530 { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 04 (640x) */ 1531 { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 05 (720x) */ 1532 { {0x83, 0x63, 0x87, 0x68, 0x16, 0x00, 0x06, 0x00} }, /* 06 (800x) */ 1533 { {0x9F, 0x7F, 0x83, 0x84, 0x92, 0x00, 0x02, 0x00} }, /* 07 (1024x) */ 1534 { {0xBF, 0x9F, 0x83, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 08 (1280x) */ 1535 { {0xCE, 0xAE, 0x92, 0xB3, 0x01, 0x00, 0x03, 0x00} } /* 09 (1400x) */ 1536 }; 1537 1538 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1539 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] = { 1540 { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 00 (320x) */ 1541 { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 01 (360x) */ 1542 { {0x76, 0x31, 0x9A, 0x48, 0x9F, 0x00, 0x41, 0x00} }, /* 02 (400x) */ 1543 { {0x76, 0x3F, 0x9A, 0x4F, 0x96, 0x00, 0x41, 0x00} }, /* 03 (512x) */ 1544 { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 04 (640x) */ 1545 { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 05 (720x) */ 1546 { {0xCE, 0x63, 0x92, 0x96, 0x04, 0x00, 0x07, 0x00} }, /* 06 (800x) */ 1547 { {0xCE, 0x7F, 0x92, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 07 (1024x) */ 1548 { {0xCE, 0x9F, 0x92, 0xB4, 0x02, 0x00, 0x03, 0x00} }, /* 08 (1280x) */ 1549 { {0xCE, 0xAE, 0x92, 0xBC, 0x0A, 0x00, 0x03, 0x00} } /* 09 (1400x) */ 1550 }; 1551 1552 /* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */ 1553 /* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1554 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] = { 1555 { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 00 (320x) */ 1556 { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 01 (360x) */ 1557 { {0x65, 0x31, 0x89, 0x3C, 0x94, 0x00, 0x01, 0x00} }, /* 02 (400x) */ 1558 { {0x73, 0x3F, 0x97, 0x4A, 0x82, 0x00, 0x05, 0x00} }, /* 03 (512x) */ 1559 { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 04 (640x) */ 1560 { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 05 (720x) */ 1561 { {0x97, 0x63, 0x9B, 0x65, 0x1D, 0x00, 0x06, 0xF0} }, /* 06 (800x) */ 1562 { {0xB3, 0x7F, 0x97, 0x81, 0x99, 0x00, 0x02, 0x00} }, /* 07 (1024x) */ 1563 { {0xD3, 0x9F, 0x97, 0xA1, 0x19, 0x00, 0x07, 0x00} }, /* 08 (1280x) */ 1564 { {0xE2, 0xAE, 0x86, 0xB9, 0x91, 0x00, 0x03, 0x00} }, /* 09 (1400x) */ 1565 { {0xFB, 0xC7, 0x9F, 0xC9, 0x81, 0x00, 0x07, 0x00} } /* 0A (1600x) */ 1566 }; 1567 1568 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */ 1569 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] = { 1570 { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} }, /* 00 (x350) */ 1571 { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} }, /* 01 (x400) */ 1572 { {0x04, 0x3E, 0xE2, 0x89, 0xDF, 0x05, 0x00} }, /* 02 (x480) */ 1573 { {0x7C, 0xF0, 0x5A, 0x8F, 0x57, 0x7D, 0xA0} }, /* 03 (x600) */ 1574 { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* 04 (x768) */ 1575 }; 1576 1577 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1578 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] = { 1579 { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} }, /* 00 (x350) */ 1580 { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} }, /* 01 (x400) */ 1581 { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} }, /* 02 (x480) */ 1582 { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} }, /* 03 (x600) */ 1583 { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* 04 (x768) */ 1584 }; 1585 1586 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1587 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] = { 1588 { {0x86, 0x1F, 0x5E, 0x82, 0x5D, 0x87, 0x00} }, /* 00 (x350) */ 1589 { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} }, /* 01 (x400) */ 1590 { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} }, /* 02 (x480) */ 1591 { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} }, /* 03 (x600) */ 1592 { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} }, /* 04 (x768) */ 1593 { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* 05 (x1024) */ 1594 }; 1595 1596 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1597 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] = { 1598 { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} }, /* 00 (x350) */ 1599 { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} }, /* 01 (x400) */ 1600 { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} }, /* 02 (x480) */ 1601 { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} }, /* 03 (x600) */ 1602 { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} }, /* 04 (x768) */ 1603 { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* 05 (x1024) */ 1604 }; 1605 1606 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1607 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] = { 1608 { {0x6C, 0x1F, 0x60, 0x84, 0x5D, 0x6D, 0x10} }, /* 00 (x350) */ 1609 { {0x9E, 0x1F, 0x93, 0x86, 0x8F, 0x9F, 0x30} }, /* 01 (x400) */ 1610 { {0xEE, 0x1F, 0xE2, 0x86, 0xDF, 0xEF, 0x10} }, /* 02 (x480) */ 1611 { {0x66, 0xF0, 0x5A, 0x8e, 0x57, 0x67, 0xA0} }, /* 03 (x600) */ 1612 { {0x0E, 0xF5, 0x02, 0x86, 0xFF, 0x0F, 0x90} }, /* 04 (x768) */ 1613 { {0x0E, 0x5A, 0x02, 0x86, 0xFF, 0x0F, 0x89} }, /* 05 (x1024) */ 1614 { {0x28, 0x10, 0x1A, 0x80, 0x19, 0x29, 0x0F} } /* 06 (x1050) */ 1615 }; 1616 1617 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1618 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] = { 1619 { {0x28, 0x92, 0xB6, 0x83, 0xB5, 0xCF, 0x81} }, /* 00 (x350) */ 1620 { {0x28, 0x92, 0xD5, 0x82, 0xD4, 0xEE, 0x81} }, /* 01 (x400) */ 1621 { {0x28, 0x92, 0xFD, 0x8A, 0xFC, 0x16, 0xB1} }, /* 02 (x480) */ 1622 { {0x28, 0xD4, 0x39, 0x86, 0x57, 0x29, 0x81} }, /* 03 (x600) */ 1623 { {0x28, 0xD4, 0x8D, 0x9A, 0xFF, 0x29, 0xA1} }, /* 04 (x768) */ 1624 { {0x28, 0x5A, 0x0D, 0x9A, 0xFF, 0x29, 0xA9} }, /* 05 (x1024) */ 1625 { {0x28, 0x10, 0x1A, 0x87, 0x19, 0x29, 0x8F} } /* 06 (x1050) */ 1626 }; 1627 1628 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */ 1629 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] = { 1630 { {0xd4, 0x1F, 0x81, 0x84, 0x5D, 0xd5, 0x10} }, /* 00 (x350) */ 1631 { {0x06, 0x3e, 0xb3, 0x86, 0x8F, 0x07, 0x20} }, /* 01 (x400) */ 1632 { {0x56, 0xba, 0x03, 0x86, 0xDF, 0x57, 0x00} }, /* 02 (x480) */ 1633 { {0xce, 0xF0, 0x7b, 0x8e, 0x57, 0xcf, 0xa0} }, /* 03 (x600) */ 1634 { {0x76, 0xF5, 0x23, 0x86, 0xFF, 0x77, 0x90} }, /* 04 (x768) */ 1635 { {0x76, 0x5A, 0x23, 0x86, 0xFF, 0x77, 0x89} }, /* 05 (x1024) */ 1636 { {0x90, 0x10, 0x1A, 0x8E, 0x19, 0x91, 0x2F} }, /* 06 (x1050) */ 1637 { {0x26, 0x11, 0xd3, 0x86, 0xaF, 0x27, 0x3f} } /* 07 (x1200) */ 1638 }; 1639 1640 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1641 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] = { 1642 { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} },/* ; 00 (320x) */ 1643 { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} },/* ; 01 (360x) */ 1644 { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} },/* ; 02 (400x) */ 1645 { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} },/* ; 03 (512x) */ 1646 { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 04 (640x) */ 1647 { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 05 (720x) */ 1648 { {0x83, 0x63, 0x87, 0x68, 0x14, 0x00, 0x26, 0x00} },/* ; 06 (800x) */ 1649 { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */ 1650 }; 1651 1652 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */ 1653 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] = { 1654 { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} },/* ; 00 (x350) */ 1655 { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} },/* ; 01 (x400) */ 1656 { {0xFE, 0x1F, 0xE0, 0x84, 0xDF, 0xFF, 0x10} },/* ; 02 (x480) */ 1657 { {0x76, 0xF0, 0x58, 0x8C, 0x57, 0x77, 0xA0} },/* ; 03 (x600) */ 1658 { {0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} } /* ; 04 (x768) */ 1659 }; 1660 1661 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1662 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] = { 1663 { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 00 (320x) */ 1664 { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 01 (360x) */ 1665 { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} },/* ; 02 (400x) */ 1666 { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */ 1667 { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 04 (640x) */ 1668 { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 05 (720x) */ 1669 { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} },/* ; 06 (800x) */ 1670 { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */ 1671 }; 1672 1673 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1674 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] = { 1675 { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} },/* ; 00 (x350) */ 1676 { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} },/* ; 01 (x400) */ 1677 { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} },/* ; 02 (x480) */ 1678 { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} },/* ; 03 (x600) */ 1679 { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* ; 04 (x768) */ 1680 }; 1681 1682 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1683 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] = { 1684 { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 00 (320x) */ 1685 { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 01 (360x) */ 1686 { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00} },/* ; 02 (400x) */ 1687 { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */ 1688 { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 04 (640x) */ 1689 { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 05 (720x) */ 1690 { {0x92, 0x63, 0x96, 0x68, 0x1A, 0x00, 0x06, 0x00} },/* ; 06 (800x) */ 1691 { {0xAE, 0x7F, 0x92, 0x84, 0x96, 0x00, 0x02, 0x00} },/* ; 07 (1024x) */ 1692 { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */ 1693 }; 1694 1695 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1696 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] = { 1697 { {0x86, 0xD1, 0xBC, 0x80, 0xBB, 0xE5, 0x00} },/* ; 00 (x350) */ 1698 { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} },/* ; 01 (x400) */ 1699 { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} },/* ; 02 (x480) */ 1700 { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} },/* ; 03 (x600) */ 1701 { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} },/* ; 04 (x768) */ 1702 { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */ 1703 }; 1704 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */ 1705 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] = { 1706 { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 00 (320x) */ 1707 { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 01 (360x) */ 1708 { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} },/* ; 02 (400x) */ 1709 { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} },/* ; 03 (512x) */ 1710 { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 04 (640x) */ 1711 { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 05 (720x) */ 1712 { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} },/* ; 06 (800x) */ 1713 { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} },/* ; 07 (1024x) */ 1714 { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */ 1715 }; 1716 1717 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */ 1718 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = { 1719 { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} },/* ; 00 (x350) */ 1720 { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} },/* ; 01 (x400) */ 1721 { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} },/* ; 02 (x480) */ 1722 { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} },/* ; 03 (x600) */ 1723 { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} },/* ; 04 (x768) */ 1724 { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */ 1725 }; 1726 1727 /*add for new UNIVGABIOS*/ 1728 static const struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = { 1729 {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCD1024x768Data }, 1730 {Panel_1024x768, 0x0019, 0x0000, XGI_StLCD1024x768Data }, 1731 {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCD1024x768Data }, 1732 {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCD1280x1024Data }, 1733 {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCD1280x1024Data }, 1734 {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCD1280x1024Data }, 1735 {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcd_1400x1050 }, 1736 {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcd_1400x1050 }, 1737 {Panel_1400x1050, 0x0018, 0x0010, XGI_CetLCD1400x1050Data }, 1738 {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCD1600x1200Data }, 1739 {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCD1600x1200Data }, 1740 {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingData }, 1741 {Panel_1024x768x75, 0x0019, 0x0001, XGI_ExtLCD1024x768x75Data }, 1742 {Panel_1024x768x75, 0x0019, 0x0000, XGI_ExtLCD1024x768x75Data }, 1743 {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCD1024x768x75Data }, 1744 {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcd_1280x1024x75 }, 1745 {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcd_1280x1024x75 }, 1746 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCD1280x1024x75Data }, 1747 {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDatax75 }, 1748 {0xFF, 0x0000, 0x0000, NULL } /* End of table */ 1749 }; 1750 1751 static const struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = { 1752 {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data }, 1753 {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data }, 1754 {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data }, 1755 {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDes1280x1024Data }, 1756 {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDes1280x1024Data }, 1757 {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDes1280x1024Data }, 1758 {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddes_1400x1050 }, 1759 {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddes_1400x1050 }, 1760 {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data }, 1761 {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 }, 1762 {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDes1600x1200Data }, 1763 {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDes1600x1200Data }, 1764 {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData }, 1765 {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 }, 1766 {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 }, 1767 {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data }, 1768 {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddes_1280x1024x75 }, 1769 {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddes_1280x1024x75 }, 1770 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDes1280x1024x75Data }, 1771 {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 }, 1772 {0xFF, 0x0000, 0x0000, NULL } 1773 }; 1774 1775 static const struct XGI330_LCDDataTablStruct xgifb_lcddldes[] = { 1776 {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data }, 1777 {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data }, 1778 {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data }, 1779 {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDLDes1280x1024Data }, 1780 {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDLDes1280x1024Data }, 1781 {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024Data }, 1782 {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddldes_1400x1050 }, 1783 {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddldes_1400x1050 }, 1784 {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data }, 1785 {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 }, 1786 {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDLDes1600x1200Data }, 1787 {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDLDes1600x1200Data }, 1788 {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData }, 1789 {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 }, 1790 {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 }, 1791 {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data }, 1792 {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddldes_1280x1024x75 }, 1793 {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddldes_1280x1024x75 }, 1794 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024x75Data }, 1795 {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 }, 1796 {0xFF, 0x0000, 0x0000, NULL } 1797 }; 1798 1799 static const struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_h[] = { 1800 {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_H }, 1801 {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_H }, 1802 {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_H }, 1803 {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_H }, 1804 {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_H }, 1805 {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_H }, 1806 {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_H }, 1807 {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Hx75 }, 1808 {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Hx75 }, 1809 {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Hx75 }, 1810 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Hx75 }, 1811 {0xFF, 0x0000, 0x0000, NULL } 1812 }; 1813 1814 static const struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_v[] = { 1815 {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_V }, 1816 {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_V }, 1817 {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_V }, 1818 {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_V }, 1819 {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_V }, 1820 {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_V }, 1821 {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_V }, 1822 {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Vx75 }, 1823 {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Vx75 }, 1824 {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Vx75 }, 1825 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Vx75 }, 1826 {0xFF, 0x0000, 0x0000, NULL } 1827 }; 1828 1829 static const struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = { 1830 {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Data_1 }, 1831 {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Data_2 }, 1832 {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1 }, 1833 {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2 }, 1834 {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Data_1 }, 1835 {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Data_2 }, 1836 {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Data_1 }, 1837 {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingData }, 1838 {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Data_1x75 }, 1839 {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Data_2x75 }, 1840 {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1x75 }, 1841 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2x75 }, 1842 {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDatax75 }, 1843 {0xFF, 0x0000, 0x0000, NULL } 1844 }; 1845 1846 static const struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = { 1847 {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Des_1 }, 1848 {Panel_1024x768, 0x0618, 0x0410, XGI_LVDS1024x768Des_3 }, 1849 {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Des_2 }, 1850 {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1 }, 1851 {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2 }, 1852 {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Des_1 }, 1853 {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Des_2 }, 1854 {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Des_1 }, 1855 {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesData }, 1856 {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Des_1x75 }, 1857 {Panel_1024x768x75, 0x0618, 0x0410, XGI_LVDS1024x768Des_3x75 }, 1858 {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Des_2x75 }, 1859 {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1x75 }, 1860 {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2x75 }, 1861 {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesDatax75 }, 1862 {0xFF, 0x0000, 0x0000, NULL } 1863 }; 1864 1865 static const struct XGI330_TVDataTablStruct XGI_TVDataTable[] = { 1866 {0x09E1, 0x0001, XGI_ExtPALData}, 1867 {0x09E1, 0x0000, XGI_ExtNTSCData}, 1868 {0x09E1, 0x0801, XGI_StPALData}, 1869 {0x09E1, 0x0800, XGI_StNTSCData}, 1870 {0x49E0, 0x0100, XGI_ExtHiTVData}, 1871 {0x49E0, 0x4100, XGI_St2HiTVData}, 1872 {0x49E0, 0x4900, XGI_St1HiTVData}, 1873 {0x09E0, 0x0020, XGI_ExtYPbPr525iData}, 1874 {0x09E0, 0x0040, XGI_ExtYPbPr525pData}, 1875 {0x09E0, 0x0080, XGI_ExtYPbPr750pData}, 1876 {0x09E0, 0x0820, XGI_StYPbPr525iData}, 1877 {0x09E0, 0x0840, XGI_StYPbPr525pData}, 1878 {0x09E0, 0x0880, XGI_StYPbPr750pData}, 1879 {0xffff, 0x0000, XGI_ExtNTSCData}, 1880 }; 1881 1882 /* Dual link only */ 1883 static const struct XGI330_LCDCapStruct XGI_LCDDLCapList[] = { 1884 /* LCDCap1024x768 */ 1885 {Panel_1024x768, DefaultLCDCap, 0x88, 0x06, VCLK65_315, 1886 0x6C, 0xC3, 0x35, 0x62, 1887 0x0A, 0xC0, 0x28, 0x10}, 1888 /* LCDCap1280x1024 */ 1889 {Panel_1280x1024, XGI_LCDDualLink+DefaultLCDCap, 1890 0x70, 0x03, VCLK108_2_315, 1891 0x70, 0x44, 0xF8, 0x2F, 1892 0x0A, 0xC0, 0x30, 0x10}, 1893 /* LCDCap1400x1050 */ 1894 {Panel_1400x1050, XGI_LCDDualLink+DefaultLCDCap, 1895 0x70, 0x03, VCLK108_2_315, 1896 0x70, 0x44, 0xF8, 0x2F, 1897 0x0A, 0xC0, 0x30, 0x10}, 1898 /* LCDCap1600x1200 */ 1899 {Panel_1600x1200, XGI_LCDDualLink+DefaultLCDCap, 1900 0xC0, 0x03, VCLK162, 1901 0x43, 0x22, 0x70, 0x24, 1902 0x0A, 0xC0, 0x30, 0x10}, 1903 /* LCDCap1024x768x75 */ 1904 {Panel_1024x768x75, DefaultLCDCap, 0x60, 0, VCLK78_75, 1905 0x2B, 0x61, 0x2B, 0x61, 1906 0x0A, 0xC0, 0x28, 0x10}, 1907 /* LCDCap1280x1024x75 */ 1908 {Panel_1280x1024x75, XGI_LCDDualLink+DefaultLCDCap, 1909 0x90, 0x03, VCLK135_5, 1910 0x54, 0x42, 0x4A, 0x61, 1911 0x0A, 0xC0, 0x30, 0x10}, 1912 /* LCDCapDefault */ 1913 {0xFF, DefaultLCDCap, 0x88, 0x06, VCLK65_315, 1914 0x6C, 0xC3, 0x35, 0x62, 1915 0x0A, 0xC0, 0x28, 0x10} 1916 }; 1917 1918 static const struct XGI330_LCDCapStruct XGI_LCDCapList[] = { 1919 /* LCDCap1024x768 */ 1920 {Panel_1024x768, DefaultLCDCap, 0x88, 0x06, VCLK65_315, 1921 0x6C, 0xC3, 0x35, 0x62, 1922 0x0A, 0xC0, 0x28, 0x10}, 1923 /* LCDCap1280x1024 */ 1924 {Panel_1280x1024, DefaultLCDCap, 1925 0x70, 0x03, VCLK108_2_315, 1926 0x70, 0x44, 0xF8, 0x2F, 1927 0x0A, 0xC0, 0x30, 0x10}, 1928 /* LCDCap1400x1050 */ 1929 {Panel_1400x1050, DefaultLCDCap, 1930 0x70, 0x03, VCLK108_2_315, 1931 0x70, 0x44, 0xF8, 0x2F, 1932 0x0A, 0xC0, 0x30, 0x10}, 1933 /* LCDCap1600x1200 */ 1934 {Panel_1600x1200, DefaultLCDCap, 1935 0xC0, 0x03, VCLK162, 1936 0x5A, 0x23, 0x5A, 0x23, 1937 0x0A, 0xC0, 0x30, 0x10}, 1938 /* LCDCap1024x768x75 */ 1939 {Panel_1024x768x75, DefaultLCDCap, 0x60, 0, VCLK78_75, 1940 0x2B, 0x61, 0x2B, 0x61, 1941 0x0A, 0xC0, 0x28, 0x10}, 1942 /* LCDCap1280x1024x75 */ 1943 {Panel_1280x1024x75, DefaultLCDCap, 1944 0x90, 0x03, VCLK135_5, 1945 0x54, 0x42, 0x4A, 0x61, 1946 0x0A, 0xC0, 0x30, 0x10}, 1947 /* LCDCapDefault */ 1948 {0xFF, DefaultLCDCap, 0x88, 0x06, VCLK65_315, 1949 0x6C, 0xC3, 0x35, 0x62, 1950 0x0A, 0xC0, 0x28, 0x10} 1951 }; 1952 1953 const struct XGI_Ext2Struct XGI330_RefIndex[] = { 1954 {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175, 1955 0x00, 0x10, 0x59, 320, 200},/* 00 */ 1956 {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175, 1957 0x00, 0x10, 0x00, 320, 400},/* 01 */ 1958 {Mode32Bpp + SupportAllCRT2 + SyncNN, RES320x240, VCLK25_175, 1959 0x04, 0x20, 0x50, 320, 240},/* 02 */ 1960 {Mode32Bpp + SupportAllCRT2 + SyncPP, RES400x300, VCLK40, 1961 0x05, 0x32, 0x51, 400, 300},/* 03 */ 1962 {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES512x384, 1963 VCLK65_315, 0x06, 0x43, 0x52, 512, 384},/* 04 */ 1964 {Mode32Bpp + SupportAllCRT2 + SyncPN, RES640x400, VCLK25_175, 1965 0x00, 0x14, 0x2f, 640, 400},/* 05 */ 1966 {Mode32Bpp + SupportAllCRT2 + SyncNN, RES640x480x60, VCLK25_175, 1967 0x04, 0x24, 0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */ 1968 {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x72, VCLK31_5, 1969 0x04, 0x24, 0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */ 1970 {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x75, VCLK31_5, 1971 0x47, 0x24, 0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */ 1972 {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x85, VCLK36, 1973 0x8A, 0x24, 0x2e, 640, 480},/* 09 640x480x85Hz */ 1974 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x100, VCLK43_163, 1975 0x00, 0x24, 0x2e, 640, 480},/* 0a 640x480x100Hz */ 1976 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x120, VCLK52_406, 1977 0x00, 0x24, 0x2e, 640, 480},/* 0b 640x480x120Hz */ 1978 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x160, VCLK72_852, 1979 0x00, 0x24, 0x2e, 640, 480},/* 0c 640x480x160Hz */ 1980 {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x200, VCLK86_6, 1981 0x00, 0x24, 0x2e, 640, 480},/* 0d 640x480x200Hz */ 1982 {Mode32Bpp + NoSupportLCD + SyncPP, RES800x600x56, VCLK36, 1983 0x05, 0x36, 0x6a, 800, 600},/* 0e 800x600x56Hz */ 1984 {Mode32Bpp + NoSupportTV + SyncPP, RES800x600x60, VCLK40, 1985 0x05, 0x36, 0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */ 1986 {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x72, VCLK50, 1987 0x48, 0x36, 0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */ 1988 {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x75, VCLK49_5, 1989 0x8B, 0x36, 0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */ 1990 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x600x85, VCLK56_25, 1991 0x00, 0x36, 0x6a, 800, 600},/* 12 800x600x85Hz */ 1992 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x100, VCLK68_179, 1993 0x00, 0x36, 0x6a, 800, 600},/* 13 800x600x100Hz */ 1994 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x120, VCLK83_95, 1995 0x00, 0x36, 0x6a, 800, 600},/* 14 800x600x120Hz */ 1996 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x160, VCLK116_406, 1997 0x00, 0x36, 0x6a, 800, 600},/* 15 800x600x160Hz */ 1998 {Mode32Bpp + InterlaceMode + SyncPP, RES1024x768x43, VCLK44_9, 1999 0x00, 0x47, 0x37, 1024, 768},/* 16 1024x768x43Hz */ 2000 /* 17 1024x768x60Hz (LCD 1024x768x60Hz) */ 2001 {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES1024x768x60, 2002 VCLK65_315, 0x06, 0x47, 0x37, 1024, 768}, 2003 {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES1024x768x70, VCLK75, 2004 0x49, 0x47, 0x37, 1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */ 2005 {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1024x768x75, VCLK78_75, 2006 0x00, 0x47, 0x37, 1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */ 2007 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x768x85, VCLK94_5, 2008 0x8C, 0x47, 0x37, 1024, 768},/* 1a 1024x768x85Hz */ 2009 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x100, VCLK113_309, 2010 0x00, 0x47, 0x37, 1024, 768},/* 1b 1024x768x100Hz */ 2011 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x120, VCLK139_054, 2012 0x00, 0x47, 0x37, 1024, 768},/* 1c 1024x768x120Hz */ 2013 {Mode32Bpp + SupportLCD + SyncPP, RES1280x960x60, VCLK108_2_315, 2014 0x08, 0x58, 0x7b, 1280, 960},/* 1d 1280x960x60Hz */ 2015 {Mode32Bpp + InterlaceMode + SyncPP, RES1280x1024x43, VCLK78_75, 2016 0x00, 0x58, 0x3a, 1280, 1024},/* 1e 1280x1024x43Hz */ 2017 {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x60, VCLK108_2_315, 2018 0x07, 0x58, 0x3a, 1280, 1024},/*1f 1280x1024x60Hz (LCD 1280x1024x60Hz)*/ 2019 {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x75, VCLK135_5, 2020 0x00, 0x58, 0x3a, 1280, 1024},/*20 1280x1024x75Hz (LCD 1280x1024x75Hz)*/ 2021 {Mode32Bpp + SyncPP, RES1280x1024x85, VCLK157_5, 2022 0x00, 0x58, 0x3a, 1280, 1024},/* 21 1280x1024x85Hz */ 2023 /* 22 1600x1200x60Hz */ 2024 {Mode32Bpp + SupportLCD + SyncPP + SupportCRT2in301C, 2025 RES1600x1200x60, VCLK162, 0x09, 0x7A, 0x3c, 1600, 1200}, 2026 {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x65, VCLK175, 2027 0x00, 0x69, 0x3c, 1600, 1200},/* 23 1600x1200x65Hz */ 2028 {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x70, VCLK189, 2029 0x00, 0x69, 0x3c, 1600, 1200},/* 24 1600x1200x70Hz */ 2030 {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x75, VCLK202_5, 2031 0x00, 0x69, 0x3c, 1600, 1200},/* 25 1600x1200x75Hz */ 2032 {Mode32Bpp + SyncPP, RES1600x1200x85, VCLK229_5, 2033 0x00, 0x69, 0x3c, 1600, 1200},/* 26 1600x1200x85Hz */ 2034 {Mode32Bpp + SyncPP, RES1600x1200x100, VCLK269_655, 2035 0x00, 0x69, 0x3c, 1600, 1200},/* 27 1600x1200x100Hz */ 2036 {Mode32Bpp + SyncPP, RES1600x1200x120, VCLK323_586, 2037 0x00, 0x69, 0x3c, 1600, 1200},/* 28 1600x1200x120Hz */ 2038 {Mode32Bpp + SupportLCD + SyncNP, RES1920x1440x60, VCLK234, 2039 0x00, 0x00, 0x68, 1920, 1440},/* 29 1920x1440x60Hz */ 2040 {Mode32Bpp + SyncPN, RES1920x1440x65, VCLK254_817, 2041 0x00, 0x00, 0x68, 1920, 1440},/* 2a 1920x1440x65Hz */ 2042 {Mode32Bpp + SyncPN, RES1920x1440x70, VCLK277_015, 2043 0x00, 0x00, 0x68, 1920, 1440},/* 2b 1920x1440x70Hz */ 2044 {Mode32Bpp + SyncPN, RES1920x1440x75, VCLK291_132, 2045 0x00, 0x00, 0x68, 1920, 1440},/* 2c 1920x1440x75Hz */ 2046 {Mode32Bpp + SyncPN, RES1920x1440x85, VCLK330_615, 2047 0x00, 0x00, 0x68, 1920, 1440},/* 2d 1920x1440x85Hz */ 2048 {Mode16Bpp + SyncPN, RES1920x1440x100, VCLK388_631, 2049 0x00, 0x00, 0x68, 1920, 1440},/* 2e 1920x1440x100Hz */ 2050 {Mode32Bpp + SupportLCD + SyncPN, RES2048x1536x60, VCLK266_952, 2051 0x00, 0x00, 0x6c, 2048, 1536},/* 2f 2048x1536x60Hz */ 2052 {Mode32Bpp + SyncPN, RES2048x1536x65, VCLK291_766, 2053 0x00, 0x00, 0x6c, 2048, 1536},/* 30 2048x1536x65Hz */ 2054 {Mode32Bpp + SyncPN, RES2048x1536x70, VCLK315_195, 2055 0x00, 0x00, 0x6c, 2048, 1536},/* 31 2048x1536x70Hz */ 2056 {Mode32Bpp + SyncPN, RES2048x1536x75, VCLK340_477, 2057 0x00, 0x00, 0x6c, 2048, 1536},/* 32 2048x1536x75Hz */ 2058 {Mode16Bpp + SyncPN, RES2048x1536x85, VCLK375_847, 2059 0x00, 0x00, 0x6c, 2048, 1536},/* 33 2048x1536x85Hz */ 2060 {Mode32Bpp + SupportHiVision + SupportRAMDAC2 + 2061 SyncPP + SupportYPbPr750p, RES800x480x60, VCLK39_77, 2062 0x08, 0x00, 0x70, 800, 480},/* 34 800x480x60Hz */ 2063 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x75, VCLK49_5, 2064 0x08, 0x00, 0x70, 800, 480},/* 35 800x480x75Hz */ 2065 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x85, VCLK56_25, 2066 0x08, 0x00, 0x70, 800, 480},/* 36 800x480x85Hz */ 2067 {Mode32Bpp + SupportHiVision + SupportRAMDAC2 + 2068 SyncPP + SupportYPbPr750p, RES1024x576x60, VCLK65_315, 2069 0x09, 0x00, 0x71, 1024, 576},/* 37 1024x576x60Hz */ 2070 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x75, VCLK78_75, 2071 0x09, 0x00, 0x71, 1024, 576},/* 38 1024x576x75Hz */ 2072 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x85, VCLK94_5, 2073 0x09, 0x00, 0x71, 1024, 576},/* 39 1024x576x85Hz */ 2074 {Mode32Bpp + SupportHiVision + SupportRAMDAC2 + 2075 SyncPP + SupportYPbPr750p, RES1280x720x60, VCLK108_2_315, 2076 0x0A, 0x00, 0x75, 1280, 720},/* 3a 1280x720x60Hz*/ 2077 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x75, VCLK135_5, 2078 0x0A, 0x00, 0x75, 1280, 720},/* 3b 1280x720x75Hz */ 2079 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x85, VCLK157_5, 2080 0x0A, 0x00, 0x75, 1280, 720},/* 3c 1280x720x85Hz */ 2081 {Mode32Bpp + SupportTV + SyncNN, RES720x480x60, VCLK28_322, 2082 0x06, 0x00, 0x31, 720, 480},/* 3d 720x480x60Hz */ 2083 {Mode32Bpp + SupportTV + SyncPP, RES720x576x56, VCLK36, 2084 0x06, 0x00, 0x32, 720, 576},/* 3e 720x576x56Hz */ 2085 {Mode32Bpp + InterlaceMode + NoSupportLCD + SyncPP, RES856x480x79I, 2086 VCLK35_2, 0x00, 0x00, 0x00, 856, 480},/* 3f 856x480x79I */ 2087 {Mode32Bpp + NoSupportLCD + SyncNN, RES856x480x60, VCLK35_2, 2088 0x00, 0x00, 0x00, 856, 480},/* 40 856x480x60Hz */ 2089 {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1280x768x60, 2090 VCLK79_411, 0x08, 0x48, 0x23, 1280, 768},/* 41 1280x768x60Hz */ 2091 {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1400x1050x60, 2092 VCLK122_61, 0x08, 0x69, 0x26, 1400, 1050},/* 42 1400x1050x60Hz */ 2093 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x60, VCLK80_350, 2094 0x37, 0x00, 0x20, 1152, 864},/* 43 1152x864x60Hz */ 2095 {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x75, VCLK107_385, 2096 0x37, 0x00, 0x20, 1152, 864},/* 44 1152x864x75Hz */ 2097 {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x75, 2098 VCLK125_999, 0x3A, 0x88, 0x7b, 1280, 960},/* 45 1280x960x75Hz */ 2099 {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x85, 2100 VCLK148_5, 0x0A, 0x88, 0x7b, 1280, 960},/* 46 1280x960x85Hz */ 2101 {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x120, 2102 VCLK217_325, 0x3A, 0x88, 0x7b, 1280, 960},/* 47 1280x960x120Hz */ 2103 {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x160, VCLK139_054, 2104 0x30, 0x47, 0x37, 1024, 768},/* 48 1024x768x160Hz */ 2105 }; 2106 2107 static const unsigned char XGI330_ScreenOffset[] = { 2108 0x14, 0x19, 0x20, 0x28, 0x32, 0x40, 2109 0x50, 0x64, 0x78, 0x80, 0x2d, 0x35, 2110 0x57, 0x48 2111 }; 2112 2113 static const struct SiS_ModeResInfo_S XGI330_ModeResInfo[] = { 2114 { 320, 200, 8, 8}, 2115 { 320, 240, 8, 8}, 2116 { 320, 400, 8, 8}, 2117 { 400, 300, 8, 8}, 2118 { 512, 384, 8, 8}, 2119 { 640, 400, 8, 16}, 2120 { 640, 480, 8, 16}, 2121 { 800, 600, 8, 16}, 2122 {1024, 768, 8, 16}, 2123 {1280, 1024, 8, 16}, 2124 {1600, 1200, 8, 16}, 2125 {1920, 1440, 8, 16}, 2126 {2048, 1536, 8, 16}, 2127 { 720, 480, 8, 16}, 2128 { 720, 576, 8, 16}, 2129 {1280, 960, 8, 16}, 2130 { 800, 480, 8, 16}, 2131 {1024, 576, 8, 16}, 2132 {1280, 720, 8, 16}, 2133 { 856, 480, 8, 16}, 2134 {1280, 768, 8, 16}, 2135 {1400, 1050, 8, 16}, 2136 {1152, 864, 8, 16} 2137 }; 2138 2139 const struct SiS_VCLKData XGI_VCLKData[] = { 2140 /* SR2B,SR2C,SR2D */ 2141 {0x1B, 0xE1, 25}, /* 00 (25.175MHz) */ 2142 {0x4E, 0xE4, 28}, /* 01 (28.322MHz) */ 2143 {0x57, 0xE4, 31}, /* 02 (31.500MHz) */ 2144 {0xC3, 0xC8, 36}, /* 03 (36.000MHz) */ 2145 {0x42, 0xE2, 40}, /* 04 (40.000MHz) */ 2146 {0xFE, 0xCD, 43}, /* 05 (43.163MHz) */ 2147 {0x5D, 0xC4, 44}, /* 06 (44.900MHz) */ 2148 {0x52, 0xE2, 49}, /* 07 (49.500MHz) */ 2149 {0x53, 0xE2, 50}, /* 08 (50.000MHz) */ 2150 {0x74, 0x67, 52}, /* 09 (52.406MHz) */ 2151 {0x6D, 0x66, 56}, /* 0A (56.250MHz) */ 2152 {0x6C, 0xC3, 65}, /* 0B (65.000MHz) */ 2153 {0x46, 0x44, 67}, /* 0C (67.765MHz) */ 2154 {0xB1, 0x46, 68}, /* 0D (68.179MHz) */ 2155 {0xD3, 0x4A, 72}, /* 0E (72.852MHz) */ 2156 {0x29, 0x61, 75}, /* 0F (75.000MHz) */ 2157 {0x6E, 0x46, 76}, /* 10 (75.800MHz) */ 2158 {0x2B, 0x61, 78}, /* 11 (78.750MHz) */ 2159 {0x31, 0x42, 79}, /* 12 (79.411MHz) */ 2160 {0xAB, 0x44, 83}, /* 13 (83.950MHz) */ 2161 {0x46, 0x25, 84}, /* 14 (84.800MHz) */ 2162 {0x78, 0x29, 86}, /* 15 (86.600MHz) */ 2163 {0x62, 0x44, 94}, /* 16 (94.500MHz) */ 2164 {0x2B, 0x41, 104}, /* 17 (104.998MHz) */ 2165 {0x3A, 0x23, 105}, /* 18 (105.882MHz) */ 2166 {0x70, 0x44, 108}, /* 19 (107.862MHz) */ 2167 {0x3C, 0x23, 109}, /* 1A (109.175MHz) */ 2168 {0x5E, 0x43, 113}, /* 1B (113.309MHz) */ 2169 {0xBC, 0x44, 116}, /* 1C (116.406MHz) */ 2170 {0xE0, 0x46, 132}, /* 1D (132.258MHz) */ 2171 {0x54, 0x42, 135}, /* 1E (135.500MHz) */ 2172 {0x9C, 0x22, 139}, /* 1F (139.275MHz) */ 2173 {0x41, 0x22, 157}, /* 20 (157.500MHz) */ 2174 {0x70, 0x24, 162}, /* 21 (161.793MHz) */ 2175 {0x30, 0x21, 175}, /* 22 (175.000MHz) */ 2176 {0x4E, 0x22, 189}, /* 23 (188.520MHz) */ 2177 {0xDE, 0x26, 194}, /* 24 (194.400MHz) */ 2178 {0x62, 0x06, 202}, /* 25 (202.500MHz) */ 2179 {0x3F, 0x03, 229}, /* 26 (229.500MHz) */ 2180 {0xB8, 0x06, 234}, /* 27 (233.178MHz) */ 2181 {0x34, 0x02, 253}, /* 28 (252.699MHz) */ 2182 {0x58, 0x04, 255}, /* 29 (254.817MHz) */ 2183 {0x24, 0x01, 265}, /* 2A (265.728MHz) */ 2184 {0x9B, 0x02, 267}, /* 2B (266.952MHz) */ 2185 {0x70, 0x05, 270}, /* 2C (269.65567MHz) */ 2186 {0x25, 0x01, 272}, /* 2D (272.04199MHz) */ 2187 {0x9C, 0x02, 277}, /* 2E (277.015MHz) */ 2188 {0x27, 0x01, 286}, /* 2F (286.359985MHz) */ 2189 {0xB3, 0x04, 291}, /* 30 (291.13266MHz) */ 2190 {0xBC, 0x05, 292}, /* 31 (291.766MHz) */ 2191 {0xF6, 0x0A, 310}, /* 32 (309.789459MHz) */ 2192 {0x95, 0x01, 315}, /* 33 (315.195MHz) */ 2193 {0xF0, 0x09, 324}, /* 34 (323.586792MHz) */ 2194 {0xFE, 0x0A, 331}, /* 35 (330.615631MHz) */ 2195 {0xF3, 0x09, 332}, /* 36 (332.177612MHz) */ 2196 {0x5E, 0x03, 340}, /* 37 (340.477MHz) */ 2197 {0xE8, 0x07, 376}, /* 38 (375.847504MHz) */ 2198 {0xDE, 0x06, 389}, /* 39 (388.631439MHz) */ 2199 {0x52, 0x2A, 54}, /* 3A (54.000MHz) */ 2200 {0x52, 0x6A, 27}, /* 3B (27.000MHz) */ 2201 {0x62, 0x24, 70}, /* 3C (70.874991MHz) */ 2202 {0x62, 0x64, 70}, /* 3D (70.1048912MHz) */ 2203 {0xA8, 0x4C, 30}, /* 3E (30.1048912MHz) */ 2204 {0x20, 0x26, 33}, /* 3F (33.7499957MHz) */ 2205 {0x31, 0xc2, 39}, /* 40 (39.77MHz) */ 2206 {0x11, 0x21, 30}, /* 41 (30MHz) }// NTSC 1024X768 */ 2207 {0x2E, 0x48, 25}, /* 42 (25.175MHz) }// ScaleLCD */ 2208 {0x24, 0x46, 25}, /* 43 (25.175MHz) */ 2209 {0x26, 0x64, 28}, /* 44 (28.322MHz) */ 2210 {0x37, 0x64, 40}, /* 45 (40.000MHz) */ 2211 {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */ 2212 {0x37, 0x61, 100}, /* 47 (100.00MHz) */ 2213 {0x78, 0x27, 108}, /* 48 (108.200MHz) */ 2214 {0xBF, 0xC8, 35}, /* 49 (35.2MHz) */ 2215 {0x66, 0x43, 123}, /* 4A (122.61Mhz) */ 2216 {0x2C, 0x61, 80}, /* 4B (80.350Mhz) */ 2217 {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */ 2218 {0x69, 0x61, 191}, /* 4D (190.96MHz ) */ 2219 {0x4F, 0x22, 192}, /* 4E (192.069MHz) */ 2220 {0x28, 0x26, 322}, /* 4F (322.273MHz) */ 2221 {0x5C, 0x6B, 27}, /* 50 (27.74HMz) */ 2222 {0x57, 0x24, 126}, /* 51 (125.999MHz) */ 2223 {0x5C, 0x42, 148}, /* 52 (148.5MHz) */ 2224 {0x42, 0x61, 120}, /* 53 (120.839MHz) */ 2225 {0x62, 0x61, 178}, /* 54 (178.992MHz) */ 2226 {0x59, 0x22, 217}, /* 55 (217.325MHz) */ 2227 {0x29, 0x01, 300}, /* 56 (299.505Mhz) */ 2228 {0x52, 0x63, 74}, /* 57 (74.25MHz) */ 2229 {0xFF, 0x00, 0} /* End mark */ 2230 }; 2231 2232 static const struct SiS_VBVCLKData XGI_VBVCLKData[] = { 2233 {0x1B, 0xE1, 25}, /* 00 (25.175MHz) */ 2234 {0x4E, 0xE4, 28}, /* 01 (28.322MHz) */ 2235 {0x57, 0xE4, 31}, /* 02 (31.500MHz) */ 2236 {0xC3, 0xC8, 36}, /* 03 (36.000MHz) */ 2237 {0x42, 0x47, 40}, /* 04 (40.000MHz) */ 2238 {0xFE, 0xCD, 43}, /* 05 (43.163MHz) */ 2239 {0x5D, 0xC4, 44}, /* 06 (44.900MHz) */ 2240 {0x52, 0x47, 49}, /* 07 (49.500MHz) */ 2241 {0x53, 0x47, 50}, /* 08 (50.000MHz) */ 2242 {0x74, 0x67, 52}, /* 09 (52.406MHz) */ 2243 {0x6D, 0x66, 56}, /* 0A (56.250MHz) */ 2244 {0x35, 0x62, 65}, /* 0B (65.000MHz) */ 2245 {0x46, 0x44, 67}, /* 0C (67.765MHz) */ 2246 {0xB1, 0x46, 68}, /* 0D (68.179MHz) */ 2247 {0xD3, 0x4A, 72}, /* 0E (72.852MHz) */ 2248 {0x29, 0x61, 75}, /* 0F (75.000MHz) */ 2249 {0x6D, 0x46, 75}, /* 10 (75.800MHz) */ 2250 {0x41, 0x43, 78}, /* 11 (78.750MHz) */ 2251 {0x31, 0x42, 79}, /* 12 (79.411MHz) */ 2252 {0xAB, 0x44, 83}, /* 13 (83.950MHz) */ 2253 {0x46, 0x25, 84}, /* 14 (84.800MHz) */ 2254 {0x78, 0x29, 86}, /* 15 (86.600MHz) */ 2255 {0x62, 0x44, 94}, /* 16 (94.500MHz) */ 2256 {0x2B, 0x22, 104}, /* 17 (104.998MHz) */ 2257 {0x49, 0x24, 105}, /* 18 (105.882MHz) */ 2258 {0xF8, 0x2F, 108}, /* 19 (108.279MHz) */ 2259 {0x3C, 0x23, 109}, /* 1A (109.175MHz) */ 2260 {0x5E, 0x43, 113}, /* 1B (113.309MHz) */ 2261 {0xBC, 0x44, 116}, /* 1C (116.406MHz) */ 2262 {0xE0, 0x46, 132}, /* 1D (132.258MHz) */ 2263 {0xD4, 0x28, 135}, /* 1E (135.220MHz) */ 2264 {0xEA, 0x2A, 139}, /* 1F (139.275MHz) */ 2265 {0x41, 0x22, 157}, /* 20 (157.500MHz) */ 2266 {0x70, 0x24, 162}, /* 21 (161.793MHz) */ 2267 {0x30, 0x21, 175}, /* 22 (175.000MHz) */ 2268 {0x4E, 0x22, 189}, /* 23 (188.520MHz) */ 2269 {0xDE, 0x26, 194}, /* 24 (194.400MHz) */ 2270 {0x70, 0x07, 202}, /* 25 (202.500MHz) */ 2271 {0x3F, 0x03, 229}, /* 26 (229.500MHz) */ 2272 {0xB8, 0x06, 234}, /* 27 (233.178MHz) */ 2273 {0x34, 0x02, 253}, /* 28 (252.699997 MHz) */ 2274 {0x58, 0x04, 255}, /* 29 (254.817MHz) */ 2275 {0x24, 0x01, 265}, /* 2A (265.728MHz) */ 2276 {0x9B, 0x02, 267}, /* 2B (266.952MHz) */ 2277 {0x70, 0x05, 270}, /* 2C (269.65567 MHz) */ 2278 {0x25, 0x01, 272}, /* 2D (272.041992 MHz) */ 2279 {0x9C, 0x02, 277}, /* 2E (277.015MHz) */ 2280 {0x27, 0x01, 286}, /* 2F (286.359985 MHz) */ 2281 {0x3C, 0x02, 291}, /* 30 (291.132660 MHz) */ 2282 {0xEF, 0x0A, 292}, /* 31 (291.766MHz) */ 2283 {0xF6, 0x0A, 310}, /* 32 (309.789459 MHz) */ 2284 {0x95, 0x01, 315}, /* 33 (315.195MHz) */ 2285 {0xF0, 0x09, 324}, /* 34 (323.586792 MHz) */ 2286 {0xFE, 0x0A, 331}, /* 35 (330.615631 MHz) */ 2287 {0xF3, 0x09, 332}, /* 36 (332.177612 MHz) */ 2288 {0xEA, 0x08, 340}, /* 37 (340.477MHz) */ 2289 {0xE8, 0x07, 376}, /* 38 (375.847504 MHz) */ 2290 {0xDE, 0x06, 389}, /* 39 (388.631439 MHz) */ 2291 {0x52, 0x2A, 54}, /* 3A (54.000MHz) */ 2292 {0x52, 0x6A, 27}, /* 3B (27.000MHz) */ 2293 {0x62, 0x24, 70}, /* 3C (70.874991MHz) */ 2294 {0x62, 0x64, 70}, /* 3D (70.1048912MHz) */ 2295 {0xA8, 0x4C, 30}, /* 3E (30.1048912MHz) */ 2296 {0x20, 0x26, 33}, /* 3F (33.7499957MHz) */ 2297 {0x31, 0xc2, 39}, /* 40 (39.77MHz) */ 2298 {0x11, 0x21, 30}, /* 41 (30MHz) }// NTSC 1024X768 */ 2299 {0x2E, 0x48, 25}, /* 42 (25.175MHz) }// ScaleLCD */ 2300 {0x24, 0x46, 25}, /* 43 (25.175MHz) */ 2301 {0x26, 0x64, 28}, /* 44 (28.322MHz) */ 2302 {0x37, 0x64, 40}, /* 45 (40.000MHz) */ 2303 {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */ 2304 {0x37, 0x61, 100}, /* 47 (100.00MHz) */ 2305 {0x78, 0x27, 108}, /* 48 (108.200MHz) */ 2306 {0xBF, 0xC8, 35 }, /* 49 (35.2MHz) */ 2307 {0x66, 0x43, 123}, /* 4A (122.61Mhz) */ 2308 {0x2C, 0x61, 80 }, /* 4B (80.350Mhz) */ 2309 {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */ 2310 {0x69, 0x61, 191}, /* 4D (190.96MHz ) */ 2311 {0x4F, 0x22, 192}, /* 4E (192.069MHz) */ 2312 {0x28, 0x26, 322}, /* 4F (322.273MHz) */ 2313 {0x5C, 0x6B, 27}, /* 50 (27.74HMz) */ 2314 {0x57, 0x24, 126}, /* 51 (125.999MHz) */ 2315 {0x5C, 0x42, 148}, /* 52 (148.5MHz) */ 2316 {0x42, 0x61, 120}, /* 53 (120.839MHz) */ 2317 {0x62, 0x61, 178}, /* 54 (178.992MHz) */ 2318 {0x59, 0x22, 217}, /* 55 (217.325MHz) */ 2319 {0x29, 0x01, 300}, /* 56 (299.505Mhz) */ 2320 {0x52, 0x63, 74}, /* 57 (74.25MHz) */ 2321 {0xFF, 0x00, 0} /* End mark */ 2322 }; 2323 2324 #define XGI301TVDelay 0x22 2325 #define XGI301LCDDelay 0x12 2326 2327 static const unsigned char TVAntiFlickList[] = {/* NTSCAntiFlicker */ 2328 0x04, /* ; 0 Adaptive */ 2329 0x00, /* ; 1 new anti-flicker ? */ 2330 2331 0x04, /* ; 0 Adaptive */ 2332 0x08, /* ; 1 new anti-flicker ? */ 2333 2334 0x04, /* ; 0 ? */ 2335 0x00 /* ; 1 new anti-flicker ? */ 2336 }; 2337 2338 static const unsigned char TVEdgeList[] = { 2339 0x00, /* ; 0 NTSC No Edge enhance */ 2340 0x04, /* ; 1 NTSC Adaptive Edge enhance */ 2341 0x00, /* ; 0 PAL No Edge enhance */ 2342 0x04, /* ; 1 PAL Adaptive Edge enhance */ 2343 0x00, /* ; 0 HiTV */ 2344 0x00 /* ; 1 HiTV */ 2345 }; 2346 2347 static const unsigned long TVPhaseList[] = { 2348 0x08BAED21, /* ; 0 NTSC phase */ 2349 0x00E3052A, /* ; 1 PAL phase */ 2350 0x9B2EE421, /* ; 2 PAL-M phase */ 2351 0xBA3EF421, /* ; 3 PAL-N phase */ 2352 0xA7A28B1E, /* ; 4 NTSC 1024x768 */ 2353 0xE00A831E, /* ; 5 PAL-M 1024x768 */ 2354 0x00000000, /* ; 6 reserved */ 2355 0x00000000, /* ; 7 reserved */ 2356 0xD67BF021, /* ; 8 NTSC phase */ 2357 0xE986092A, /* ; 9 PAL phase */ 2358 0xA4EFE621, /* ; A PAL-M phase */ 2359 0x4694F621, /* ; B PAL-N phase */ 2360 0x8BDE711C, /* ; C NTSC 1024x768 */ 2361 0xE00A831E /* ; D PAL-M 1024x768 */ 2362 }; 2363 2364 static const unsigned char NTSCYFilter1[] = { 2365 0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */ 2366 0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */ 2367 0xEB, 0x04, 0x25, 0x18, /* 2 : 640x text mode */ 2368 0xF1, 0x04, 0x1F, 0x18, /* 3 : 720x text mode */ 2369 0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */ 2370 0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */ 2371 0xEB, 0x15, 0x25, 0xF6 /* 6 : 800x gra. mode */ 2372 }; 2373 2374 static const unsigned char PALYFilter1[] = { 2375 0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */ 2376 0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */ 2377 0xF1, 0xF7, 0x1F, 0x32, /* 2 : 640x text mode */ 2378 0xF3, 0x00, 0x1D, 0x20, /* 3 : 720x text mode */ 2379 0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */ 2380 0xF1, 0xF7, 0x1F, 0x32, /* 5 : 640x gra. mode */ 2381 0xFC, 0xFB, 0x14, 0x2A /* 6 : 800x gra. mode */ 2382 }; 2383 2384 static const unsigned char xgifb_palmn_yfilter1[] = { 2385 0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */ 2386 0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */ 2387 0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */ 2388 0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */ 2389 0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */ 2390 0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */ 2391 0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */ 2392 0xFF, 0xFF, 0xFF, 0xFF /* End of Table */ 2393 }; 2394 2395 static const unsigned char xgifb_yfilter2[] = { 2396 0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */ 2397 0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */ 2398 0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */ 2399 0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */ 2400 0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */ 2401 0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */ 2402 0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */ 2403 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28 /* 7 : 1024xgra. mode */ 2404 }; 2405 2406 static const unsigned char XGI_NTSC1024AdjTime[] = { 2407 0xa7, 0x07, 0xf2, 0x6e, 0x17, 0x8b, 0x73, 0x53, 2408 0x13, 0x40, 0x34, 0xF4, 0x63, 0xBB, 0xCC, 0x7A, 2409 0x58, 0xe4, 0x73, 0xd0, 0x13 2410 }; 2411 2412 static const struct XGI301C_Tap4TimingStruct xgifb_tap4_timing[] = { 2413 {0, { 2414 0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */ 2415 0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */ 2416 0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */ 2417 0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */ 2418 0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */ 2419 0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */ 2420 0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */ 2421 0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E /* ; F8-FF */ 2422 } 2423 } 2424 }; 2425 2426 static const struct XGI301C_Tap4TimingStruct PALTap4Timing[] = { 2427 {600, { 2428 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */ 2429 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */ 2430 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */ 2431 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */ 2432 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */ 2433 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */ 2434 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */ 2435 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* ; F8-FF */ 2436 } 2437 }, 2438 {768, { 2439 0x08, 0x12, 0x08, 0x7E, 0x07, 0x12, 0x09, 0x7E, /* ; C0-C7 */ 2440 0x06, 0x12, 0x0A, 0x7E, 0x05, 0x11, 0x0B, 0x7F, /* ; C8-CF */ 2441 0x04, 0x11, 0x0C, 0x7F, 0x03, 0x11, 0x0C, 0x00, /* ; D0-D7 */ 2442 0x03, 0x10, 0x0D, 0x00, 0x02, 0x0F, 0x0E, 0x01, /* ; D8-DF */ 2443 0x01, 0x0F, 0x0F, 0x01, 0x01, 0x0E, 0x0F, 0x02, /* ; E0-E7 */ 2444 0x00, 0x0D, 0x10, 0x03, 0x7F, 0x0C, 0x11, 0x04, /* ; EA-EF */ 2445 0x7F, 0x0C, 0x11, 0x04, 0x7F, 0x0B, 0x11, 0x05, /* ; F0-F7 */ 2446 0x7E, 0x0A, 0x12, 0x06, 0x7E, 0x09, 0x12, 0x07 /* ; F8-FF */ 2447 } 2448 }, 2449 {0xFFFF, { 2450 0x04, 0x1A, 0x04, 0x7E, 0x02, 0x1B, 0x05, 0x7E, /* ; C0-C7 */ 2451 0x01, 0x1A, 0x07, 0x7E, 0x00, 0x1A, 0x09, 0x7D, /* ; C8-CF */ 2452 0x7F, 0x19, 0x0B, 0x7D, 0x7E, 0x18, 0x0D, 0x7D, /* ; D0-D7 */ 2453 0x7D, 0x17, 0x10, 0x7C, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */ 2454 0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */ 2455 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0D, 0x18, 0x7F, /* ; EA-EF */ 2456 0x7D, 0x0B, 0x19, 0x7F, 0x7D, 0x09, 0x1A, 0x00, /* ; F0-F7 */ 2457 0x7D, 0x07, 0x1A, 0x02, 0x7E, 0x05, 0x1B, 0x02 /* ; F8-FF */ 2458 } 2459 } 2460 }; 2461 2462 static const struct XGI301C_Tap4TimingStruct xgifb_ntsc_525_tap4_timing[] = { 2463 {480, { 2464 0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */ 2465 0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */ 2466 0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */ 2467 0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */ 2468 0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */ 2469 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */ 2470 0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */ 2471 0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02 /* ; F8-FF */ 2472 } 2473 }, 2474 {600, { 2475 0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */ 2476 0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */ 2477 0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */ 2478 0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */ 2479 0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */ 2480 0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */ 2481 0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */ 2482 0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06 /* ; F8-FF */ 2483 } 2484 }, 2485 {0xFFFF, { 2486 0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */ 2487 0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */ 2488 0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */ 2489 0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */ 2490 0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */ 2491 0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */ 2492 0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */ 2493 0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08 /* ; F8-FF */ 2494 } 2495 } 2496 }; 2497 2498 static const struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] = { 2499 {0xFFFF, { 2500 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */ 2501 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */ 2502 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */ 2503 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */ 2504 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */ 2505 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */ 2506 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */ 2507 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* F8-FF */ 2508 } 2509 } 2510 }; 2511 #endif 2512