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