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