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