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