1 /* yilin modify for xgi20 */
2 static struct XGI_MCLKDataStruct XGI340New_MCLKData[] = {
3 	{0x16, 0x01, 0x01, 166},
4 	{0x19, 0x02, 0x01, 124},
5 	{0x7C, 0x08, 0x01, 200},
6 	{0x79, 0x06, 0x01, 250},
7 	{0x29, 0x01, 0x81, 301},
8 	{0x5c, 0x23, 0x01, 166},
9 	{0x5c, 0x23, 0x01, 166},
10 	{0x5c, 0x23, 0x01, 166}
11 };
12 
13 static struct XGI_MCLKDataStruct XGI27New_MCLKData[] = {
14 	{0x5c, 0x23, 0x01, 166},
15 	{0x19, 0x02, 0x01, 124},
16 	{0x7C, 0x08, 0x80, 200},
17 	{0x79, 0x06, 0x80, 250},
18 	{0x29, 0x01, 0x81, 300},
19 	{0x5c, 0x23, 0x01, 166},
20 	{0x5c, 0x23, 0x01, 166},
21 	{0x5c, 0x23, 0x01, 166}
22 };
23 
24 /* yilin modify for xgi20 */
25 static struct XGI_ECLKDataStruct XGI340_ECLKData[] = {
26 	{0x5c, 0x23, 0x01, 166},
27 	{0x55, 0x84, 0x01, 123},
28 	{0x7C, 0x08, 0x01, 200},
29 	{0x79, 0x06, 0x01, 250},
30 	{0x29, 0x01, 0x81, 301},
31 	{0x5c, 0x23, 0x01, 166},
32 	{0x5c, 0x23, 0x01, 166},
33 	{0x5c, 0x23, 0x01, 166}
34 };
35 
36 static unsigned char XGI340_SR13[4][8] = {
37 	{0x35, 0x45, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR13 */
38 	{0x41, 0x51, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR14 */
39 	{0x31, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR18 */
40 	{0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}  /* SR1B */
41 };
42 
43 static unsigned char XGI340_cr41[24][8] = {
44 	{0x20, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 0 CR41 */
45 	{0xc4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 1 CR8A */
46 	{0xc4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 2 CR8B */
47 	{0xb5, 0xa4, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00},
48 	{0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00},
49 	{0x90, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 5 CR68 */
50 	{0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 6 CR69 */
51 	{0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 7 CR6A */
52 	{0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 8 CR6D */
53 	{0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 9 CR80 */
54 	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 10 CR81 */
55 	{0x88, 0xa8, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 11 CR82 */
56 	{0x44, 0x44, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 12 CR85 */
57 	{0x48, 0x48, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 13 CR86 */
58 	{0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 14 CR90 */
59 	{0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 15 CR91 */
60 	{0x0a, 0x0a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 16 CR92 */
61 	{0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 17 CR93 */
62 	{0x10, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 18 CR94 */
63 	{0x11, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 19 CR95 */
64 	{0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 20 CR96 */
65 	{0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 21 CRC3 */
66 	{0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 22 CRC4 */
67 	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}  /* 23 CRC5 */
68 };
69 
70 static unsigned char XGI27_cr41[24][8] = {
71 	{0x20, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 0 CR41 */
72 	{0xC4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 1 CR8A */
73 	{0xC4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 2 CR8B */
74 	{0xB5, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 3 CR40[7],
75 							       CR99[2:0],
76 							       CR45[3:0]*/
77 	{0xf0, 0xf5, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 4 CR59 */
78 	{0x90, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 5 CR68 */
79 	{0x77, 0x67, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 6 CR69 */
80 	{0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 7 CR6A */
81 	{0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 8 CR6D */
82 	{0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 9 CR80 */
83 	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 10 CR81 */
84 	{0x88, 0xcc, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 11 CR82 */
85 	{0x44, 0x88, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 12 CR85 */
86 	{0x48, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 13 CR86 */
87 	{0x54, 0x32, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 14 CR90 */
88 	{0x54, 0x33, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 15 CR91 */
89 	{0x0a, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 16 CR92 */
90 	{0x44, 0x63, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 17 CR93 */
91 	{0x10, 0x14, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 18 CR94 */
92 	{0x11, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 19 CR95 */
93 	{0x05, 0x22, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 20 CR96 */
94 	{0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 21 CRC3 */
95 	{0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 22 CRC4 */
96 	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}  /* 23 CRC5 */
97 };
98 
99 static unsigned char XGI340_CR6B[8][4] = {
100 	{0xaa, 0xaa, 0xaa, 0xaa},
101 	{0xaa, 0xaa, 0xaa, 0xaa},
102 	{0xaa, 0xaa, 0xaa, 0xaa},
103 	{0x00, 0x00, 0x00, 0x00},
104 	{0x00, 0x00, 0x00, 0x00},
105 	{0x00, 0x00, 0x00, 0x00},
106 	{0x00, 0x00, 0x00, 0x00},
107 	{0x00, 0x00, 0x00, 0x00}
108 };
109 
110 static unsigned char XGI340_CR6E[8][4];
111 
112 static unsigned char XGI340_CR6F[8][32];
113 
114 static unsigned char XGI340_CR89[8][2];
115 
116 /* CR47,CR48,CR49,CR4A,CR4B,CR4C,CR70,CR71,CR74,CR75,CR76,CR77 */
117 static unsigned char XGI340_AGPReg[12] = {
118 	0x28, 0x23, 0x00, 0x20, 0x00, 0x20,
119 	0x00, 0x05, 0xd0, 0x10, 0x10, 0x00
120 };
121 
122 static unsigned char XGI340_SR16[4] = {0x03, 0x83, 0x03, 0x83};
123 
124 static unsigned char XGI330_sr25[2];
125 static unsigned char XGI330_sr31 = 0xc0;
126 static unsigned char XGI330_sr32 = 0x11;
127 static unsigned char XGI330_SR33;
128 static unsigned char XG40_CRCF = 0x13;
129 static unsigned char XG40_DRAMTypeDefinition = 0xFF ;
130 
131 static struct XGI_StStruct XGI330_SModeIDTable[] = {
132 	{0x01, 0x9208, 0x01, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00},
133 	{0x01, 0x1210, 0x14, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00},
134 	{0x01, 0x1010, 0x17, 0x02, 0x11, 0x00, 0x00, 0x01, 0x01},
135 	{0x03, 0x8208, 0x03, 0x00, 0x14, 0x00, 0x00, 0x01, 0x02},
136 	{0x03, 0x0210, 0x16, 0x01, 0x04, 0x01, 0x00, 0x01, 0x02},
137 	{0x03, 0x0010, 0x18, 0x02, 0x15, 0x00, 0x00, 0x01, 0x03},
138 	{0x05, 0x9209, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04},
139 	{0x06, 0x8209, 0x06, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05},
140 	{0x07, 0x0000, 0x07, 0x03, 0x05, 0x03, 0x00, 0x01, 0x03},
141 	{0x07, 0x0000, 0x19, 0x02, 0x15, 0x02, 0x00, 0x01, 0x03},
142 	{0x0d, 0x920a, 0x0d, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04},
143 	{0x0e, 0x820a, 0x0e, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05},
144 	{0x0f, 0x0202, 0x11, 0x01, 0x04, 0x01, 0x00, 0x00, 0x05},
145 	{0x10, 0x0212, 0x12, 0x01, 0x04, 0x01, 0x00, 0x00, 0x05},
146 	{0x11, 0x0212, 0x1a, 0x04, 0x24, 0x04, 0x00, 0x00, 0x05},
147 	{0x12, 0x0212, 0x1b, 0x04, 0x24, 0x04, 0x00, 0x00, 0x05},
148 	{0x13, 0x021b, 0x1c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04},
149 	{0x12, 0x0010, 0x18, 0x02, 0x24, 0x02, 0x00, 0x00, 0x05},/* St_CRT2CRTC2
150 								    not sure */
151 	{0x12, 0x0210, 0x18, 0x01, 0x24, 0x01, 0x00, 0x00, 0x05},/* St_CRT2CRTC2
152 								    not sure */
153 	{0xff, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
154 };
155 
156 
157 static struct XGI_ExtStruct XGI330_EModeIDTable[] = {
158 	{0x6a, 0x2212, 0x0407, 0x3a81, 0x0102, 0x08,
159 		0x07, 0x00, 0x00, 0x07, 0x0e},
160 	{0x2e, 0x0a1b, 0x0306, 0x3a57, 0x0101, 0x08,
161 		0x06, 0x00, 0x00, 0x05, 0x06},
162 	{0x2f, 0x0a1b, 0x0305, 0x3a50, 0x0100, 0x08,
163 		0x05, 0x00, 0x00, 0x05, 0x05},
164 	{0x30, 0x2a1b, 0x0407, 0x3a81, 0x0103, 0x08,
165 		0x07, 0x00, 0x00, 0x07, 0x0e},
166 	{0x31, 0x0a1b, 0x030d, 0x3b85, 0x0000, 0x08,
167 		0x0d, 0x00, 0x00, 0x06, 0x3d},
168 	{0x32, 0x0a1b, 0x0a0e, 0x3b8c, 0x0000, 0x08,
169 		0x0e, 0x00, 0x00, 0x06, 0x3e},
170 	{0x33, 0x0a1d, 0x0a0d, 0x3b85, 0x0000, 0x08,
171 		0x0d, 0x00, 0x00, 0x06, 0x3d},
172 	{0x34, 0x2a1d, 0x0a0e, 0x3b8c, 0x0000, 0x08,
173 		0x0e, 0x00, 0x00, 0x06, 0x3e},
174 	{0x35, 0x0a1f, 0x0a0d, 0x3b85, 0x0000, 0x08,
175 		0x0d, 0x00, 0x00, 0x06, 0x3d},
176 	{0x36, 0x2a1f, 0x0a0e, 0x3b8c, 0x0000, 0x08,
177 		0x0e, 0x00, 0x00, 0x06, 0x3e},
178 	{0x37, 0x0212, 0x0508, 0x3aab, 0x0104, 0x08,
179 		0x08, 0x00, 0x00, 0x00, 0x16},
180 	{0x38, 0x0a1b, 0x0508, 0x3aab, 0x0105, 0x08,
181 		0x08, 0x00, 0x00, 0x00, 0x16},
182 	{0x3a, 0x0e3b, 0x0609, 0x3adc, 0x0107, 0x08,
183 		0x09, 0x00, 0x00, 0x00, 0x1e},
184 	{0x3c, 0x0e3b, 0x070a, 0x3af2, 0x0130, 0x08,
185 		0x0a, 0x00, 0x00, 0x00, 0x22},	/* mode 1600x1200
186 						   add CRT2MODE [2003/10/07] */
187 	{0x3d, 0x0e7d, 0x070a, 0x3af2, 0x0131, 0x08,
188 		0x0a, 0x00, 0x00, 0x00, 0x22},	/* mode 1600x1200
189 						   add CRT2MODE */
190 	{0x40, 0x9a1c, 0x0000, 0x3a34, 0x010d, 0x08,
191 		0x00, 0x00, 0x00, 0x04, 0x00},
192 	{0x41, 0x9a1d, 0x0000, 0x3a34, 0x010e, 0x08,
193 		0x00, 0x00, 0x00, 0x04, 0x00},	/* ModeIdIndex = 0x10 */
194 	{0x43, 0x0a1c, 0x0306, 0x3a57, 0x0110, 0x08,
195 		0x06, 0x00, 0x00, 0x05, 0x06},
196 	{0x44, 0x0a1d, 0x0306, 0x3a57, 0x0111, 0x08,
197 		0x06, 0x00, 0x00, 0x05, 0x06},
198 	{0x46, 0x2a1c, 0x0407, 0x3a81, 0x0113, 0x08,
199 		0x07, 0x00, 0x00, 0x07, 0x0e},
200 	{0x47, 0x2a1d, 0x0407, 0x3a81, 0x0114, 0x08,
201 		0x07, 0x00, 0x00, 0x07, 0x0e},
202 	{0x49, 0x0a3c, 0x0508, 0x3aab, 0x0116, 0x08,
203 		0x08, 0x00, 0x00, 0x00, 0x16},
204 	{0x4a, 0x0a3d, 0x0508, 0x3aab, 0x0117, 0x08,
205 		0x08, 0x00, 0x00, 0x00, 0x16},
206 	{0x4c, 0x0e7c, 0x0609, 0x3adc, 0x0119, 0x08,
207 		0x09, 0x00, 0x00, 0x00, 0x1e},
208 	{0x4d, 0x0e7d, 0x0609, 0x3adc, 0x011a, 0x08,
209 		0x09, 0x00, 0x00, 0x00, 0x1e},
210 	{0x50, 0x9a1b, 0x0001, 0x3a3b, 0x0132, 0x08,
211 		0x01, 0x00, 0x00, 0x04, 0x02},
212 	{0x51, 0xba1b, 0x0103, 0x3a42, 0x0133, 0x08,
213 		0x03, 0x00, 0x00, 0x07, 0x03},
214 	{0x52, 0x9a1b, 0x0204, 0x3a49, 0x0134, 0x08,
215 		0x04, 0x00, 0x00, 0x00, 0x04},
216 	{0x56, 0x9a1d, 0x0001, 0x3a3b, 0x0135, 0x08,
217 		0x01, 0x00, 0x00, 0x04, 0x02},
218 	{0x57, 0xba1d, 0x0103, 0x3a42, 0x0136, 0x08,
219 		0x03, 0x00, 0x00, 0x07, 0x03},
220 	{0x58, 0x9a1d, 0x0204, 0x3a49, 0x0137, 0x08,
221 		0x04, 0x00, 0x00, 0x00, 0x04},
222 	{0x59, 0x9a1b, 0x0000, 0x3a34, 0x0138, 0x08,
223 		0x00, 0x00, 0x00, 0x04, 0x00},
224 	{0x5A, 0x021b, 0x0014, 0x3b83, 0x0138, 0x08,
225 		0x01, 0x00, 0x00, 0x04, 0x3f},	/* ModeIdIndex = 0x20 */
226 	{0x5B, 0x0a1d, 0x0014, 0x3b83, 0x0135, 0x08,
227 		0x01, 0x00, 0x00, 0x04, 0x3f},
228 	{0x5d, 0x0a1d, 0x0305, 0x3a50, 0x0139, 0x08,
229 		0x05, 0x00, 0x00, 0x07, 0x05},
230 	{0x62, 0x0a3f, 0x0306, 0x3a57, 0x013a, 0x08,
231 		0x06, 0x00, 0x00, 0x05, 0x06},
232 	{0x63, 0x2a3f, 0x0407, 0x3a81, 0x013b, 0x08,
233 		0x07, 0x00, 0x00, 0x07, 0x0e},
234 	{0x64, 0x0a7f, 0x0508, 0x3aab, 0x013c, 0x08,
235 		0x08, 0x00, 0x00, 0x00, 0x16},
236 	{0x65, 0x0eff, 0x0609, 0x3adc, 0x013d, 0x08,
237 		0x09, 0x00, 0x00, 0x00, 0x1e},
238 	{0x66, 0x0eff, 0x070a, 0x3af2, 0x013e, 0x08,
239 		0x0a, 0x00, 0x00, 0x00, 0x22},	/* mode 1600x1200
240 						   add CRT2MODE */
241 	{0x68, 0x067b, 0x080b, 0x3b17, 0x013f, 0x08,
242 		0x0b, 0x00, 0x00, 0x00, 0x29},
243 	{0x69, 0x06fd, 0x080b, 0x3b17, 0x0140, 0x08,
244 		0x0b, 0x00, 0x00, 0x00, 0x29},
245 	{0x6b, 0x07ff, 0x080b, 0x3b17, 0x0141, 0x10,
246 		0x0b, 0x00, 0x00, 0x00, 0x29},
247 	{0x6c, 0x067b, 0x090c, 0x3b37, 0x0000, 0x08,
248 		0x0c, 0x00, 0x00, 0x00, 0x2f},
249 	{0x6d, 0x06fd, 0x090c, 0x3b37, 0x0000, 0x10,
250 		0x0c, 0x00, 0x00, 0x00, 0x2f},
251 	{0x6e, 0x07ff, 0x090c, 0x3b37, 0x0000, 0x10,
252 		0x0c, 0x00, 0x00, 0x00, 0x2f},
253 	{0x70, 0x2a1b, 0x0410, 0x3b52, 0x0000, 0x08,
254 		0x10, 0x00, 0x00, 0x07, 0x34},
255 	{0x71, 0x0a1b, 0x0511, 0x3b63, 0x0000, 0x08,
256 		0x11, 0x00, 0x00, 0x00, 0x37},
257 	{0x74, 0x0a1d, 0x0511, 0x3b63, 0x0000, 0x08,
258 		0x11, 0x00, 0x00, 0x00, 0x37},	/* ModeIdIndex = 0x30 */
259 	{0x75, 0x0a3d, 0x0612, 0x3b74, 0x0000, 0x08,
260 		0x12, 0x00, 0x00, 0x00, 0x3a},
261 	{0x76, 0x2a1f, 0x0410, 0x3b52, 0x0000, 0x08,
262 		0x10, 0x00, 0x00, 0x07, 0x34},
263 	{0x77, 0x0a1f, 0x0511, 0x3b63, 0x0000, 0x08,
264 		0x11, 0x00, 0x00, 0x00, 0x37},
265 	{0x78, 0x0a3f, 0x0612, 0x3b74, 0x0000, 0x08,
266 		0x12, 0x00, 0x00, 0x00, 0x3a},
267 	{0x79, 0x0a3b, 0x0612, 0x3b74, 0x0000, 0x08,
268 		0x12, 0x00, 0x00, 0x00, 0x3a},
269 	{0x7a, 0x2a1d, 0x0410, 0x3b52, 0x0000, 0x08,
270 		0x10, 0x00, 0x00, 0x07, 0x34},
271 	{0x7b, 0x0e3b, 0x060f, 0x3ad0, 0x0000, 0x08,
272 		0x0f, 0x00, 0x00, 0x00, 0x1d},
273 	{0x7c, 0x0e7d, 0x060f, 0x3ad0, 0x0000, 0x08,
274 		0x0f, 0x00, 0x00, 0x00, 0x1d},
275 	{0x7d, 0x0eff, 0x060f, 0x3ad0, 0x0000, 0x08,
276 		0x0f, 0x00, 0x00, 0x00, 0x1d},
277 	{0x20, 0x0e3b, 0x0D16, 0x49e0, 0x0000, 0x08,
278 		0x16, 0x00, 0x00, 0x00, 0x43},
279 	{0x21, 0x0e7d, 0x0D16, 0x49e0, 0x0000, 0x08,
280 		0x16, 0x00, 0x00, 0x00, 0x43},
281 	{0x22, 0x0eff, 0x0D16, 0x49e0, 0x0000, 0x08,
282 		0x16, 0x00, 0x00, 0x00, 0x43},
283 	{0x23, 0x0e3b, 0x0614, 0x49d5, 0x0000, 0x08,
284 		0x14, 0x00, 0x00, 0x00, 0x41},
285 	{0x24, 0x0e7d, 0x0614, 0x49d5, 0x0000, 0x08,
286 		0x14, 0x00, 0x00, 0x00, 0x41},
287 	{0x25, 0x0eff, 0x0614, 0x49d5, 0x0000, 0x08,
288 		0x14, 0x00, 0x00, 0x00, 0x41},
289 	{0x26, 0x063b, 0x0c15, 0x49dc, 0x0000, 0x08,
290 		0x15, 0x00, 0x00, 0x00, 0x42},	/* ModeIdIndex = 0x40 */
291 	{0x27, 0x067d, 0x0c15, 0x49dc, 0x0000, 0x08,
292 		0x15, 0x00, 0x00, 0x00, 0x42},
293 	{0x28, 0x06ff, 0x0c15, 0x49dc, 0x0000, 0x08,
294 		0x15, 0x00, 0x00, 0x00, 0x42},
295 	{0xff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00,
296 		0x00, 0x00, 0x00, 0x00, 0x00}
297 };
298 
299 static struct XGI_StandTableStruct XGI330_StandTable[] = {
300 /* MD_0_200 */
301 	{
302 		0x28, 0x18, 0x08, 0x0800,
303 		{0x09, 0x03, 0x00, 0x02},
304 		0x63,
305 		{0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
306 		 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
307 		 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
308 		 0xff},
309 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
310 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
311 		 0x08, 0x00, 0x0f, 0x00},
312 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
313 		 0xff}
314 	},
315 /* MD_1_200 */
316 	{
317 		0x28, 0x18, 0x08, 0x0800,
318 		{0x09, 0x03, 0x00, 0x02},
319 		0x63,
320 		{0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
321 		 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
322 		 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
323 		 0xff},
324 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
325 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
326 		 0x08, 0x00, 0x0f, 0x00},
327 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
328 		 0xff}
329 	},
330 /* MD_2_200 */
331 	{
332 		0x50, 0x18, 0x08, 0x1000,
333 		{0x01, 0x03, 0x00, 0x02},
334 		 0x63,
335 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
336 		 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
337 		 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
338 		 0xff},
339 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
340 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
341 		 0x08, 0x00, 0x0f, 0x00},
342 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
343 		 0xff}
344 	},
345 /* MD_3_200 */
346 	{
347 		0x50, 0x18, 0x08, 0x1000,
348 		{0x01, 0x03, 0x00, 0x02},
349 		 0x63,
350 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
351 		 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
352 		 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
353 		 0xff},
354 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
355 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
356 		 0x08, 0x00, 0x0f, 0x00},
357 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
358 		 0xff}
359 	},
360 /* MD_4 */
361 	{
362 		0x28, 0x18, 0x08, 0x4000,
363 		{0x09, 0x03, 0x00, 0x02},
364 		 0x63,
365 		{0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
366 		 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367 		 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
368 		 0xff},
369 		{0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
370 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
371 		 0x01, 0x00, 0x03, 0x00},
372 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00,
373 		 0xff}
374 	},
375 /* MD_5 */
376 	{
377 		0x28, 0x18, 0x08, 0x4000,
378 		{0x09, 0x03, 0x00, 0x02},
379 		 0x63,
380 		{0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
381 		 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 		 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
383 		 0xff},
384 		{0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
385 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
386 		 0x01, 0x00, 0x03, 0x00},
387 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00,
388 		 0xff}
389 	},
390 /* MD_6 */
391 	{
392 		0x50, 0x18, 0x08, 0x4000,
393 		{0x01, 0x01, 0x00, 0x06},
394 		 0x63,
395 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
396 		 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397 		 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
398 		 0xff},
399 		{0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
400 		 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
401 		 0x01, 0x00, 0x01, 0x00},
402 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00,
403 		 0xff}
404 	},
405 /* MD_7 */
406 	{
407 		0x50, 0x18, 0x0e, 0x1000,
408 		{0x00, 0x03, 0x00, 0x03},
409 		 0xa6,
410 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
411 		 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
412 		 0x83, 0x85, 0x5d, 0x28, 0x0d, 0x63, 0xba, 0xa3,
413 		 0xff},
414 		{0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
415 		 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
416 		 0x0e, 0x00, 0x0f, 0x08},
417 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00,
418 		 0xff}
419 	},
420 /* MDA_DAC */
421 	{
422 		0x00, 0x00, 0x00, 0x0000,
423 		{0x00, 0x00, 0x00, 0x15},
424 		 0x15,
425 		{0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
426 		 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x3f, 0x3f,
427 		 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00,
428 		 0x00},
429 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15,
430 		 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
431 		 0x15, 0x15, 0x15, 0x15},
432 		{0x15, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
433 		 0x3f}
434 	},
435 /* CGA_DAC */
436 	{
437 		0x00, 0x10, 0x04, 0x0114,
438 		{0x11, 0x09, 0x15, 0x00},
439 		 0x10,
440 		{0x04, 0x14, 0x01, 0x11, 0x09, 0x15, 0x2a, 0x3a,
441 		 0x2e, 0x3e, 0x2b, 0x3b, 0x2f, 0x3f, 0x2a, 0x3a,
442 		 0x2e, 0x3e, 0x2b, 0x3b, 0x2f, 0x3f, 0x00, 0x10,
443 		 0x04},
444 		{0x14, 0x01, 0x11, 0x09, 0x15, 0x00, 0x10, 0x04,
445 		 0x14, 0x01, 0x11, 0x09, 0x15, 0x2a, 0x3a, 0x2e,
446 		 0x3e, 0x2b, 0x3b, 0x2f},
447 		{0x3f, 0x2a, 0x3a, 0x2e, 0x3e, 0x2b, 0x3b, 0x2f,
448 		 0x3f}
449 	},
450 /* EGA_DAC */
451 	{
452 		0x00, 0x10, 0x04, 0x0114,
453 		{0x11, 0x05, 0x15, 0x20},
454 		 0x30,
455 		{0x24, 0x34, 0x21, 0x31, 0x25, 0x35, 0x08, 0x18,
456 		 0x0c, 0x1c, 0x09, 0x19, 0x0d, 0x1d, 0x28, 0x38,
457 		 0x2c, 0x3c, 0x29, 0x39, 0x2d, 0x3d, 0x02, 0x12,
458 		 0x06},
459 		{0x16, 0x03, 0x13, 0x07, 0x17, 0x22, 0x32, 0x26,
460 		 0x36, 0x23, 0x33, 0x27, 0x37, 0x0a, 0x1a, 0x0e,
461 		 0x1e, 0x0b, 0x1b, 0x0f},
462 		{0x1f, 0x2a, 0x3a, 0x2e, 0x3e, 0x2b, 0x3b, 0x2f,
463 		 0x3f}
464 	},
465 /* VGA_DAC */
466 	{
467 		0x00, 0x10, 0x04, 0x0114,
468 		{0x11, 0x09, 0x15, 0x2a},
469 		 0x3a,
470 		{0x2e, 0x3e, 0x2b, 0x3b, 0x2f, 0x3f, 0x00, 0x05,
471 		 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x18, 0x1c, 0x20,
472 		 0x24, 0x28, 0x2d, 0x32, 0x38, 0x3f, 0x00, 0x10,
473 		 0x1f},
474 		{0x2f, 0x3f, 0x1f, 0x27, 0x2f, 0x37, 0x3f, 0x2d,
475 		 0x31, 0x36, 0x3a, 0x3f, 0x00, 0x07, 0x0e, 0x15,
476 		 0x1c, 0x0e, 0x11, 0x15},
477 		{0x18, 0x1c, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x00,
478 		 0x04}
479 	},
480 	{
481 		0x08, 0x0c, 0x10, 0x0a08,
482 		{0x0c, 0x0e, 0x10, 0x0b},
483 		 0x0c,
484 		{0x0d, 0x0f, 0x10, 0x10, 0x01, 0x08, 0x00, 0x00,
485 		 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x01, 0x00,
486 		 0x04, 0x04, 0x01, 0x00, 0x05, 0x02, 0x05, 0x00,
487 		 0x06},
488 		{0x01, 0x06, 0x05, 0x06, 0x00, 0x08, 0x01, 0x08,
489 		 0x00, 0x07, 0x02, 0x07, 0x06, 0x07, 0x00, 0x00,
490 		 0x00, 0x00, 0x00, 0x00},
491 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
492 		 0x00}
493 	},
494 /* MD_D */
495 	{
496 		0x28, 0x18, 0x08, 0x2000,
497 		{0x09, 0x0f, 0x00, 0x06},
498 		 0x63,
499 		{0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
500 		 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
501 		 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
502 		 0xff},
503 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
504 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
505 		 0x01, 0x00, 0x0f, 0x00},
506 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
507 		 0xff}
508 	},
509 /* MD_E */
510 	{
511 		0x50, 0x18, 0x08, 0x4000,
512 		{0x01, 0x0f, 0x00, 0x06},
513 		 0x63,
514 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
515 		 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
516 		 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
517 		 0xff},
518 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
519 		 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
520 		 0x01, 0x00, 0x0f, 0x00},
521 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
522 		 0xff}
523 	},
524 /* ExtVGATable */
525 	{
526 		0x00, 0x00, 0x00, 0x0000,
527 		{0x01, 0x0f, 0x00, 0x0e},
528 		 0x23,
529 		{0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
530 		 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
531 		 0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3,
532 		 0xff},
533 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
534 		 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
535 		 0x01, 0x00, 0x00, 0x00},
536 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
537 		 0xff}
538 	},
539 /* ROM_SAVEPTR */
540 	{
541 		0x9f, 0x3b, 0x00, 0x00c0,
542 		{0x00, 0x00, 0x00, 0x00},
543 		 0x00,
544 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x3f,
545 		 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
546 		 0x00, 0x00, 0x1a, 0x00, 0xac, 0x3e, 0x00, 0xc0,
547 		 0x00},
548 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
549 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
550 		 0x00, 0x00, 0x00, 0x00},
551 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
552 		 0x00}
553 	},
554 /* MD_F */
555 	{
556 		0x50, 0x18, 0x0e, 0x8000,
557 		{0x01, 0x0f, 0x00, 0x06},
558 		 0xa2,
559 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
560 		 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
561 		 0x82, 0x84, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
562 		 0xff},
563 		{0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
564 		 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
565 		 0x0b, 0x00, 0x05, 0x00},
566 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05,
567 		 0xff}
568 	},
569 /* MD_10 */
570 	{
571 		0x50, 0x18, 0x0e, 0x8000,
572 		{0x01, 0x0f, 0x00, 0x06},
573 		 0xa3,
574 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
575 		 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
576 		 0x82, 0x84, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
577 		 0xff},
578 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
579 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
580 		 0x01, 0x00, 0x0f, 0x00},
581 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
582 		 0xff}
583 	},
584 /* MD_0_350 */
585 	{
586 		0x28, 0x18, 0x0e, 0x0800,
587 		{0x09, 0x03, 0x00, 0x02},
588 		 0xa3,
589 		{0x2d, 0x27, 0x28, 0x90, 0x2b, 0xb1, 0xbf, 0x1f,
590 		 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
591 		 0x83, 0x85, 0x5d, 0x14, 0x1f, 0x63, 0xba, 0xa3,
592 		 0xff},
593 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
594 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
595 		 0x08, 0x00, 0x0f, 0x00},
596 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
597 		 0xff}
598 	},
599 /* MD_1_350 */
600 	{
601 		0x28, 0x18, 0x0e, 0x0800,
602 		{0x09, 0x03, 0x00, 0x02},
603 		 0xa3,
604 		{0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
605 		 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
606 		 0x83, 0x85, 0x5d, 0x14, 0x1f, 0x63, 0xba, 0xa3,
607 		 0xff},
608 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
609 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
610 		 0x08, 0x00, 0x0f, 0x00},
611 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
612 		 0xff}
613 	},
614 /* MD_2_350 */
615 	{
616 		0x50, 0x18, 0x0e, 0x1000,
617 		{0x01, 0x03, 0x00, 0x02},
618 		 0xa3,
619 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
620 		 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
621 		 0x83, 0x85, 0x5d, 0x28, 0x1f, 0x63, 0xba, 0xa3,
622 		 0xff},
623 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
624 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
625 		 0x08, 0x00, 0x0f, 0x00},
626 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
627 		 0xff}
628 	},
629 /* MD_3_350 */
630 	{
631 		0x50, 0x18, 0x0e, 0x1000,
632 		{0x01, 0x03, 0x00, 0x02},
633 		 0xa3,
634 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
635 		 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
636 		 0x83, 0x85, 0x5d, 0x28, 0x1f, 0x63, 0xba, 0xa3,
637 		 0xff},
638 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
639 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
640 		 0x08, 0x00, 0x0f, 0x00},
641 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
642 		 0xff}
643 	},
644 /* MD_0_1_400 */
645 	{
646 		0x28, 0x18, 0x10, 0x0800,
647 		{0x08, 0x03, 0x00, 0x02},
648 		 0x67,
649 		{0x2d, 0x27, 0x28, 0x90, 0x2b, 0xb1, 0xbf, 0x1f,
650 		 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
651 		 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
652 		 0xff},
653 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
654 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
655 		 0x0c, 0x00, 0x0f, 0x08},
656 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
657 		 0xff}
658 	},
659 /* MD_2_3_400 */
660 	{
661 		0x50, 0x18, 0x10, 0x1000,
662 		{0x00, 0x03, 0x00, 0x02},
663 		 0x67,
664 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
665 		 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
666 		 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
667 		 0xff},
668 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
669 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
670 		 0x0c, 0x00, 0x0f, 0x08},
671 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
672 		 0xff}
673 	},
674 /* MD_7_400 */
675 	{
676 		0x50, 0x18, 0x10, 0x1000,
677 		{0x00, 0x03, 0x00, 0x02},
678 		 0x66,
679 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
680 		 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
681 		 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
682 		 0xff},
683 		{0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
684 		 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
685 		 0x0e, 0x00, 0x0f, 0x08},
686 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00,
687 		 0xff}
688 	},
689 /* MD_11 */
690 	{
691 		0x50, 0x1d, 0x10, 0xa000,
692 		{0x01, 0x0f, 0x00, 0x06},
693 		 0xe3,
694 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0x0b, 0x3e,
695 		 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
696 		 0xe9, 0x8b, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xc3,
697 		 0xff},
698 		{0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
699 		 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
700 		 0x01, 0x00, 0x0f, 0x00},
701 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
702 		 0xff}
703 	},
704 /* ExtEGATable */
705 	{
706 		0x50, 0x1d, 0x10, 0xa000,
707 		{0x01, 0x0f, 0x00, 0x06},
708 		 0xe3,
709 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0x0b, 0x3e,
710 		 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
711 		 0xe9, 0x8b, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
712 		 0xff},
713 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
714 		 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
715 		 0x01, 0x00, 0x0f, 0x00},
716 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
717 		 0xff}
718 	},
719 /* MD_13 */
720 	{
721 		0x28, 0x18, 0x08, 0x2000,
722 		{0x01, 0x0f, 0x00, 0x0e},
723 		 0x63,
724 		{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
725 		 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
726 		 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
727 		 0xff},
728 		{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
729 		 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
730 		 0x41, 0x00, 0x0f, 0x00},
731 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
732 		 0xff}
733 	}
734 };
735 
736 static struct XGI_TimingHStruct XGI_TimingH[1];
737 
738 static struct XGI_TimingVStruct XGI_TimingV[1];
739 
740 static struct XGI_XG21CRT1Struct XGI_UpdateCRT1Table[] = {
741 	{0x01, 0x27, 0x91, 0x8f, 0xc0},	/* 00 */
742 	{0x03, 0x4f, 0x83, 0x8f, 0xc0},	/* 01 */
743 	{0x05, 0x27, 0x91, 0x8f, 0xc0},	/* 02 */
744 	{0x06, 0x4f, 0x83, 0x8f, 0xc0},	/* 03 */
745 	{0x07, 0x4f, 0x83, 0x8f, 0xc0},	/* 04 */
746 	{0x0d, 0x27, 0x91, 0x8f, 0xc0},	/* 05 */
747 	{0x0e, 0x4f, 0x83, 0x8f, 0xc0},	/* 06 */
748 	{0x0f, 0x4f, 0x83, 0x5d, 0xc0},	/* 07 */
749 	{0x10, 0x4f, 0x83, 0x5d, 0xc0},	/* 08 */
750 	{0x11, 0x4f, 0x83, 0xdf, 0x0c},	/* 09 */
751 	{0x12, 0x4f, 0x83, 0xdf, 0x0c},	/* 10 */
752 	{0x13, 0x4f, 0x83, 0x8f, 0xc0},	/* 11 */
753 	{0x2e, 0x4f, 0x83, 0xdf, 0x0c},	/* 12 */
754 	{0x2e, 0x4f, 0x87, 0xdf, 0xc0},	/* 13 */
755 	{0x2f, 0x4f, 0x83, 0x8f, 0xc0},	/* 14 */
756 	{0x50, 0x27, 0x91, 0xdf, 0x0c},	/* 15 */
757 	{0x59, 0x27, 0x91, 0x8f, 0xc0}	/* 16 */
758 };
759 
760 static struct XGI_CRT1TableStruct XGI_CRT1Table[] = {
761 	{ {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
762 	  0xbf, 0x1f, 0x9c, 0x8e, 0x96, 0xb9, 0x30} }, /* 0x0 */
763 	{ {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
764 	  0x0b, 0x3e, 0xe9, 0x8b, 0xe7, 0x04, 0x00} }, /* 0x1 */
765 	{ {0x3D, 0x31, 0x81, 0x37, 0x1F, 0x00, 0x05, 0x00,
766 	  0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} }, /* 0x2 */
767 	{ {0x4F, 0x3F, 0x93, 0x45, 0x0D, 0x00, 0x01, 0x00,
768 	  0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x3 */
769 	{ {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
770 	  0xBF, 0x1F, 0x9C, 0x8E, 0x96, 0xB9, 0x30} }, /* 0x4 */
771 	{ {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
772 	  0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x5 */
773 	{ {0x63, 0x50, 0x86, 0x56, 0x9B, 0x00, 0x01, 0x00,
774 	  0x06, 0x3E, 0xE8, 0x8B, 0xE7, 0xFF, 0x10} }, /* 0x6 */
775 	{ {0x64, 0x4F, 0x88, 0x55, 0x9D, 0x00, 0x01, 0x00,
776 	  0xF2, 0x1F, 0xE0, 0x83, 0xDF, 0xF3, 0x10} }, /* 0x7 */
777 	{ {0x63, 0x4F, 0x87, 0x5A, 0x81, 0x00, 0x05, 0x00,
778 	  0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x10} }, /* 0x8 */
779 	{ {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
780 	  0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x80} }, /* 0x9 */
781 	{ {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
782 	  0x01, 0x3E, 0xE0, 0x83, 0xDF, 0x02, 0x80} }, /* 0xa */
783 	{ {0x67, 0x4F, 0x8B, 0x58, 0x81, 0x00, 0x05, 0x60,
784 	  0x0D, 0x3E, 0xE0, 0x83, 0xDF, 0x0E, 0x90} }, /* 0xb */
785 	{ {0x65, 0x4F, 0x89, 0x57, 0x9F, 0x00, 0x01, 0x00,
786 	  0xFB, 0x1F, 0xE6, 0x8A, 0xDF, 0xFC, 0x10} }, /* 0xc */
787 	{ {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00, /* ;
788 						0D (800x600,56Hz) */
789 	  0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} },     /* ;
790 						(VCLK 36.0MHz) */
791 	{ {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00, /* ;
792 						0E (800x600,60Hz) */
793 	  0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} },     /* ;
794 						(VCLK 40.0MHz) */
795 	{ {0x7D, 0x63, 0x81, 0x6E, 0x1D, 0x00, 0x06, 0x00, /* ;
796 						0F (800x600,72Hz) */
797 	  0x98, 0xF0, 0x7C, 0x82, 0x57, 0x99, 0x80} },     /* ;
798 						(VCLK 50.0MHz) */
799 	{ {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00, /* ;
800 						10 (800x600,75Hz) */
801 	  0x6F, 0xF0, 0x58, 0x8B, 0x57, 0x70, 0xA0} },     /* ;
802 						(VCLK 49.5MHz) */
803 	{ {0x7E, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00, /* ;
804 						11 (800x600,85Hz) */
805 	  0x75, 0xF0, 0x58, 0x8B, 0x57, 0x76, 0xA0} },     /* ;
806 						(VCLK 56.25MHz) */
807 	{ {0x81, 0x63, 0x85, 0x6D, 0x18, 0x00, 0x06, 0x60, /* ;
808 						12 (800x600,100Hz) */
809 	  0x7A, 0xF0, 0x58, 0x8B, 0x57, 0x7B, 0xA0} },     /* ;
810 						(VCLK 75.8MHz) */
811 	{ {0x83, 0x63, 0x87, 0x6E, 0x19, 0x00, 0x06, 0x60, /* ;
812 						13 (800x600,120Hz) */
813 	  0x81, 0xF0, 0x58, 0x8B, 0x57, 0x82, 0xA0} },     /* ;
814 						(VCLK 79.411MHz) */
815 	{ {0x85, 0x63, 0x89, 0x6F, 0x1A, 0x00, 0x06, 0x60, /* ;
816 						14 (800x600,160Hz) */
817 	  0x91, 0xF0, 0x58, 0x8B, 0x57, 0x92, 0xA0} },     /* ;
818 						(VCLK 105.822MHz) */
819 	{ {0x99, 0x7F, 0x9D, 0x84, 0x1A, 0x00, 0x02, 0x00,
820 	  0x96, 0x1F, 0x7F, 0x83, 0x7F, 0x97, 0x10} }, /* 0x15 */
821 	{ {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
822 	  0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x16 */
823 	{ {0xA1, 0x7F, 0x85, 0x86, 0x97, 0x00, 0x02, 0x00,
824 	  0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x17 */
825 	{ {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
826 	  0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} }, /* 0x18 */
827 	{ {0xA7, 0x7F, 0x8B, 0x89, 0x95, 0x00, 0x02, 0x00,
828 	  0x26, 0xF5, 0x00, 0x83, 0xFF, 0x27, 0x90} }, /* 0x19 */
829 	{ {0xA9, 0x7F, 0x8D, 0x8C, 0x9A, 0x00, 0x02, 0x62,
830 	  0x2C, 0xF5, 0x00, 0x83, 0xFF, 0x2D, 0x14} }, /* 0x1a */
831 	{ {0xAB, 0x7F, 0x8F, 0x8D, 0x9B, 0x00, 0x02, 0x62,
832 	  0x35, 0xF5, 0x00, 0x83, 0xFF, 0x36, 0x14} }, /* 0x1b */
833 	{ {0xCF, 0x9F, 0x93, 0xB2, 0x01, 0x00, 0x03, 0x00,
834 	  0x14, 0xBA, 0x00, 0x83, 0xFF, 0x15, 0x00} }, /* 0x1c */
835 	{ {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
836 	  0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1d */
837 	{ {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
838 	  0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1e */
839 	{ {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
840 	  0x2E, 0x5A, 0x00, 0x83, 0xFF, 0x2F, 0x89} }, /* 0x1f */
841 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
842 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x20 */
843 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
844 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x21 */
845 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
846 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x22 */
847 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
848 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x23 */
849 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
850 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x24 */
851 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
852 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x25 */
853 	{ {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
854 	  0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x26 */
855 	{ {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
856 	  0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x27 */
857 	{ {0x43, 0xEF, 0x87, 0x06, 0x00, 0x41, 0x05, 0x62,
858 	  0xD4, 0x1F, 0xA0, 0x83, 0x9F, 0xD5, 0x9F} }, /* 0x28 */
859 	{ {0x45, 0xEF, 0x89, 0x07, 0x01, 0x41, 0x05, 0x62,
860 	  0xD9, 0x1F, 0xA0, 0x83, 0x9F, 0xDA, 0x9F} }, /* 0x29 */
861 	{ {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
862 	  0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2a */
863 	{ {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
864 	  0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2b */
865 	{ {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
866 	  0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2c */
867 	{ {0x59, 0xFF, 0x9D, 0x17, 0x13, 0x41, 0x05, 0x44,
868 	  0x33, 0xBA, 0x00, 0x83, 0xFF, 0x34, 0x0F} }, /* 0x2d */
869 	{ {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
870 	  0x38, 0xBA, 0x00, 0x83, 0xFF, 0x39, 0x0F} }, /* 0x2e */
871 	{ {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
872 	  0x3D, 0xBA, 0x00, 0x83, 0xFF, 0x3E, 0x0F} }, /* 0x2f */
873 	{ {0x5D, 0xFF, 0x81, 0x19, 0x95, 0x41, 0x05, 0x44,
874 	  0x41, 0xBA, 0x00, 0x84, 0xFF, 0x42, 0x0F} }, /* 0x30 */
875 	{ {0x55, 0xFF, 0x99, 0x0D, 0x0C, 0x41, 0x05, 0x00,
876 	  0x3E, 0xBA, 0x00, 0x84, 0xFF, 0x3F, 0x0F} }, /* 0x31 */
877 	{ {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00,
878 	  0x72, 0xBA, 0x27, 0x8B, 0xDF, 0x73, 0x80} }, /* 0x32 */
879 	{ {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00,
880 	  0x6F, 0xBA, 0x26, 0x89, 0xDF, 0x6F, 0x80} }, /* 0x33 */
881 	{ {0x7F, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00,
882 	  0x75, 0xBA, 0x29, 0x8C, 0xDF, 0x75, 0x80} }, /* 0x34 */
883 	{ {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
884 	  0x24, 0xF1, 0xAF, 0x85, 0x3F, 0x25, 0xB0} }, /* 0x35 */
885 	{ {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
886 	  0x1E, 0xF1, 0xAD, 0x81, 0x3F, 0x1F, 0xB0} }, /* 0x36 */
887 	{ {0xA7, 0x7F, 0x88, 0x89, 0x15, 0x00, 0x02, 0x00,
888 	  0x26, 0xF1, 0xB1, 0x85, 0x3F, 0x27, 0xB0} }, /* 0x37 */
889 	{ {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
890 	  0x28, 0xC4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x38 */
891 	{ {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
892 	  0x28, 0xD4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x39 */
893 	{ {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
894 	  0x2E, 0xD4, 0x7D, 0x81, 0xCF, 0x2F, 0xA1} }, /* 0x3a */
895 	{ {0xDC, 0x9F, 0x00, 0xAB, 0x19, 0x00, 0x07, 0x00,
896 	  0xE6, 0xEF, 0xC0, 0xC3, 0xBF, 0xE7, 0x90} }, /* 0x3b */
897 	{ {0x6B, 0x59, 0x8F, 0x5E, 0x8C, 0x00, 0x05, 0x00,
898 	  0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x3c */
899 	{ {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00,
900 	  0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} }, /* 0x3d */
901 	{ {0x86, 0x6A, 0x8a, 0x74, 0x06, 0x00, 0x02, 0x00,
902 	  0x8c, 0x15, 0x4f, 0x83, 0xef, 0x8d, 0x30} }, /* 0x3e */
903 	{ {0x81, 0x6A, 0x85, 0x70, 0x00, 0x00, 0x02, 0x00,
904 	  0x0f, 0x3e, 0xeb, 0x8e, 0xdf, 0x10, 0x00} }, /* 0x3f */
905 	{ {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
906 	  0x20, 0xF5, 0x03, 0x88, 0xFF, 0x21, 0x90} }, /* 0x40 */
907 	{ {0xE6, 0xAE, 0x8A, 0xBD, 0x90, 0x00, 0x03, 0x00,
908 	  0x3D, 0x10, 0x1A, 0x8D, 0x19, 0x3E, 0x2F} }, /* 0x41 */
909 	{ {0xB9, 0x8F, 0x9D, 0x9B, 0x8A, 0x00, 0x06, 0x00,
910 	  0x7D, 0xFF, 0x60, 0x83, 0x5F, 0x7E, 0x90} }, /* 0x42 */
911 	{ {0xC3, 0x8F, 0x87, 0x9B, 0x0B, 0x00, 0x07, 0x00,
912 	  0x82, 0xFF, 0x60, 0x83, 0x5F, 0x83, 0x90} },  /* 0x43 */
913 	{ {0xAD, 0x7F, 0x91, 0x8E, 0x9C, 0x00, 0x02, 0x82,
914 	  0x49, 0xF5, 0x00, 0x83, 0xFF, 0x4A, 0x90} },  /* 0x44 */
915 	{ {0xCD, 0x9F, 0x91, 0xA7, 0x19, 0x00, 0x07, 0x60,
916 	  0xE6, 0xFF, 0xC0, 0x83, 0xBF, 0xE7, 0x90} },  /* 0x45 */
917 	{ {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x60,
918 	  0xF1, 0xFF, 0xC0, 0x83, 0xBF, 0xF2, 0x90} },  /* 0x46 */
919 	{ {0xD7, 0x9F, 0x9B, 0xAC, 0x1E, 0x00, 0x07, 0x00,
920 	  0x03, 0xDE, 0xC0, 0x84, 0xBF, 0x04, 0x90} }  /* 0x47 */
921 };
922 
923 static unsigned char XGI_CH7017LV1024x768[] = {
924 	0x60, 0x02, 0x00, 0x07, 0x40, 0xED,
925 	0xA3, 0xC8, 0xC7, 0xAC, 0xE0, 0x02};
926 static unsigned char XGI_CH7017LV1400x1050[] = {
927 	0x60, 0x03, 0x11, 0x00, 0x40, 0xE3,
928 	0xAD, 0xDB, 0xF6, 0xAC, 0xE0, 0x02};
929 
930 /*add for new UNIVGABIOS*/
931 static struct XGI330_LCDDataStruct  XGI_StLCD1024x768Data[] = {
932 	{62,  25, 800,  546, 1344, 806},
933 	{32,  15, 930,  546, 1344, 806},
934 	{62,  25, 800,  546, 1344, 806}, /*chiawenfordot9->dot8*/
935 	{104, 45, 945,  496, 1344, 806},
936 	{62,  25, 800,  546, 1344, 806},
937 	{31,  18, 1008, 624, 1344, 806},
938 	{1,   1,  1344, 806, 1344, 806}
939 };
940 
941 static struct XGI330_LCDDataStruct  XGI_ExtLCD1024x768Data[] = {
942 	/* { 12, 5, 896, 512,1344, 806}, // alan 09/12/2003 */
943 	{42, 25, 1536, 419, 1344, 806},
944 	/* { 12, 5, 896, 510,1344, 806}, // alan 09/12/2003 */
945 	{48, 25, 1536, 369, 1344, 806},
946 	/* { 32, 15,1008, 505,1344, 806}, // alan 09/12/2003 */
947 	{42, 25, 1536, 419, 1344, 806},
948 	/* { 32, 15,1008, 514,1344, 806}, // alan 09/12/2003 */
949 	{48, 25, 1536, 369, 1344, 806},
950 	{12, 5,  896,  500, 1344, 806},
951 	{42, 25, 1024, 625, 1344, 806},
952 	{1,  1,  1344, 806, 1344, 806},
953 	{12, 5,  896,  500, 1344, 806},
954 	{42, 25, 1024, 625, 1344, 806},
955 	{1,  1,  1344, 806, 1344, 806},
956 	{12, 5,  896,  500, 1344, 806},
957 	{42, 25, 1024, 625, 1344, 806},
958 	{1,  1,  1344, 806, 1344, 806}
959 };
960 
961 static struct XGI330_LCDDataStruct  XGI_CetLCD1024x768Data[] = {
962 	{1, 1, 1344, 806, 1344, 806}, /* ; 00 (320x200,320x400,
963 					       640x200,640x400) */
964 	{1, 1, 1344, 806, 1344, 806}, /* 01 (320x350,640x350) */
965 	{1, 1, 1344, 806, 1344, 806}, /* 02 (360x400,720x400) */
966 	{1, 1, 1344, 806, 1344, 806}, /* 03 (720x350) */
967 	{1, 1, 1344, 806, 1344, 806}, /* 04 (640x480x60Hz) */
968 	{1, 1, 1344, 806, 1344, 806}, /* 05 (800x600x60Hz) */
969 	{1, 1, 1344, 806, 1344, 806}  /* 06 (1024x768x60Hz) */
970 };
971 
972 static struct XGI330_LCDDataStruct  XGI_StLCD1280x1024Data[] = {
973 	{22,  5,  800,  510,  1650, 1088},
974 	{22,  5,  800,  510,  1650, 1088},
975 	{176, 45, 900,  510,  1650, 1088},
976 	{176, 45, 900,  510,  1650, 1088},
977 	{22,  5,  800,  510,  1650, 1088},
978 	{13,  5,  1024, 675,  1560, 1152},
979 	{16,  9,  1266, 804,  1688, 1072},
980 	{1,   1,  1688, 1066, 1688, 1066}
981 };
982 
983 static struct XGI330_LCDDataStruct  XGI_ExtLCD1280x1024Data[] = {
984 	{211, 60,  1024, 501,  1688, 1066},
985 	{211, 60,  1024, 508,  1688, 1066},
986 	{211, 60,  1024, 501,  1688, 1066},
987 	{211, 60,  1024, 508,  1688, 1066},
988 	{211, 60,  1024, 500,  1688, 1066},
989 	{211, 75,  1024, 625,  1688, 1066},
990 	{211, 120, 1280, 798,  1688, 1066},
991 	{1,   1,   1688, 1066, 1688, 1066}
992 };
993 
994 static struct XGI330_LCDDataStruct  XGI_CetLCD1280x1024Data[] = {
995 	{1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400,
996 					       640x200,640x400) */
997 	{1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */
998 	{1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */
999 	{1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */
1000 	{1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */
1001 	{1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */
1002 	{1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */
1003 	{1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1004 	{1, 1, 1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1005 };
1006 
1007 static struct XGI330_LCDDataStruct xgifb_lcd_1400x1050[] = {
1008 	{211, 100, 2100, 408,  1688, 1066}, /* 00 (320x200,320x400,
1009 						   640x200,640x400) */
1010 	{211, 64,  1536, 358,  1688, 1066}, /* 01 (320x350,640x350) */
1011 	{211, 100, 2100, 408,  1688, 1066}, /* 02 (360x400,720x400) */
1012 	{211, 64,  1536, 358,  1688, 1066}, /* 03 (720x350) */
1013 	{211, 48,  840,  488,  1688, 1066}, /* 04 (640x480x60Hz) */
1014 	{211, 72,  1008, 609,  1688, 1066}, /* 05 (800x600x60Hz) */
1015 	{211, 128, 1400, 776,  1688, 1066}, /* 06 (1024x768x60Hz) */
1016 	{1,   1,   1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz
1017 						  w/o Scaling) */
1018 	{1,   1,   1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1019 };
1020 
1021 static struct XGI330_LCDDataStruct  XGI_ExtLCD1600x1200Data[] = {
1022 	{4,  1,  1620, 420,  2160, 1250}, /* { 3,1,2160,425,2160,1250 },
1023 					  // 00 (320x200,320x400,
1024 					  //	 640x200,640x400)
1025 					  //	 // alan 10/14/2003 */
1026 	{27, 7,  1920, 375,  2160, 1250}, /* 01 (320x350,640x350) */
1027 	{4,  1,  1620, 420,  2160, 1250}, /* { 3,1,2160,425,2160,1250 },
1028 					  // 02 (360x400,720x400)
1029 					  // // alan 10/14/2003 */
1030 	{27, 7,  1920, 375,  2160, 1250}, /* 03 (720x350) */
1031 	{27, 4,  800,  500,  2160, 1250}, /* 04 (640x480x60Hz) */
1032 	{4,  1,  1080, 625,  2160, 1250}, /* 05 (800x600x60Hz) */
1033 	{5,  2,  1350, 800,  2160, 1250}, /* 06 (1024x768x60Hz) */
1034 	{27, 16, 1500, 1064, 2160, 1250}, /* 07 (1280x1024x60Hz) */
1035 	{9,  7,  1920, 1106, 2160, 1250}, /* 08 (1400x1050x60Hz) */
1036 	{1,  1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200x60Hz) ;302lv */
1037 };
1038 
1039 static struct XGI330_LCDDataStruct  XGI_StLCD1600x1200Data[] = {
1040 	{27,  4,  800,  500,  2160, 1250}, /* 00 (320x200,320x400,
1041 						  640x200,640x400) */
1042 	{27,  4,  800,  500,  2160, 1250}, /* 01 (320x350,640x350) */
1043 	{27,  4,  800,  500,  2160, 1250}, /* 02 (360x400,720x400) */
1044 	{27,  4,  800,  500,  2160, 1250}, /* 03 (720x350) */
1045 	{27,  4,  800,  500,  2160, 1250}, /* 04 (320x240,640x480) */
1046 	{4,   1,  1080, 625,  2160, 1250}, /* 05 (400x300,800x600) */
1047 	{5,   2,  1350, 800,  2160, 1250}, /* 06 (512x384,1024x768) */
1048 	{135, 88, 1600, 1100, 2160, 1250}, /* 07 (1280x1024) */
1049 	{1,   1,  1800, 1500, 2160, 1250}, /* 08 (1400x1050) */
1050 	{1,   1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200) */
1051 };
1052 
1053 static struct XGI330_LCDDataStruct  XGI_CetLCD1400x1050Data[] = {
1054 	{1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400,
1055 					       640x200,640x400) */
1056 	{1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */
1057 	{1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */
1058 	{1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */
1059 	{1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */
1060 	{1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */
1061 	{1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */
1062 	{1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1063 	{1, 1, 1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1064 };
1065 
1066 static struct XGI330_LCDDataStruct  XGI_NoScalingData[] = {
1067 	{1, 1, 800,  449,  800,  449},
1068 	{1, 1, 800,  449,  800,  449},
1069 	{1, 1, 900,  449,  900,  449},
1070 	{1, 1, 900,  449,  900,  449},
1071 	{1, 1, 800,  525,  800,  525},
1072 	{1, 1, 1056, 628,  1056, 628},
1073 	{1, 1, 1344, 806,  1344, 806},
1074 	{1, 1, 1688, 1066, 1688, 1066}
1075 };
1076 
1077 static struct XGI330_LCDDataStruct  XGI_ExtLCD1024x768x75Data[] = {
1078 	{42, 25, 1536, 419, 1344, 806}, /* ; 00 (320x200,320x400,
1079 						 640x200,640x400) */
1080 	{48, 25, 1536, 369, 1344, 806}, /* ; 01 (320x350,640x350) */
1081 	{42, 25, 1536, 419, 1344, 806}, /* ; 02 (360x400,720x400) */
1082 	{48, 25, 1536, 369, 1344, 806}, /* ; 03 (720x350) */
1083 	{8,  5,  1312, 500, 1312, 800}, /* ; 04 (640x480x75Hz) */
1084 	{41, 25, 1024, 625, 1312, 800}, /* ; 05 (800x600x75Hz) */
1085 	{1,  1,  1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
1086 };
1087 
1088 static struct XGI330_LCDDataStruct  XGI_CetLCD1024x768x75Data[] = {
1089 	{1, 1, 1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,
1090 					       640x200,640x400) */
1091 	{1, 1, 1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
1092 	{1, 1, 1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
1093 	{1, 1, 1312, 800, 1312, 800}, /* ; 03 (720x350) */
1094 	{1, 1, 1312, 800, 1312, 800}, /* ; 04 (640x480x75Hz) */
1095 	{1, 1, 1312, 800, 1312, 800}, /* ; 05 (800x600x75Hz) */
1096 	{1, 1, 1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
1097 };
1098 
1099 static struct XGI330_LCDDataStruct xgifb_lcd_1280x1024x75[] = {
1100 	{211, 60,  1024, 501,  1688, 1066}, /* ; 00 (320x200,320x400,
1101 						     640x200,640x400) */
1102 	{211, 60,  1024, 508,  1688, 1066}, /* ; 01 (320x350,640x350) */
1103 	{211, 60,  1024, 501,  1688, 1066}, /* ; 02 (360x400,720x400) */
1104 	{211, 60,  1024, 508,  1688, 1066}, /* ; 03 (720x350) */
1105 	{211, 45,  768,  498,  1688, 1066}, /* ; 04 (640x480x75Hz) */
1106 	{211, 75,  1024, 625,  1688, 1066}, /* ; 05 (800x600x75Hz) */
1107 	{211, 120, 1280, 798,  1688, 1066}, /* ; 06 (1024x768x75Hz) */
1108 	{1,   1,   1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
1109 };
1110 
1111 static struct XGI330_LCDDataStruct  XGI_CetLCD1280x1024x75Data[] = {
1112 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 00 (320x200,320x400,
1113 						 640x200,640x400) */
1114 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 01 (320x350,640x350) */
1115 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 02 (360x400,720x400) */
1116 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 03 (720x350) */
1117 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 04 (640x480x75Hz) */
1118 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 05 (800x600x75Hz) */
1119 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 06 (1024x768x75Hz) */
1120 	{1, 1, 1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
1121 };
1122 
1123 static struct XGI330_LCDDataStruct  XGI_NoScalingDatax75[] = {
1124 	{1, 1, 800,  449,  800,  449},  /* ; 00 (320x200, 320x400,
1125 						 640x200, 640x400) */
1126 	{1, 1, 800,  449,  800,  449},  /* ; 01 (320x350, 640x350) */
1127 	{1, 1, 900,  449,  900,  449},  /* ; 02 (360x400, 720x400) */
1128 	{1, 1, 900,  449,  900,  449},  /* ; 03 (720x350) */
1129 	{1, 1, 840,  500,  840,  500},  /* ; 04 (640x480x75Hz) */
1130 	{1, 1, 1056, 625,  1056, 625},  /* ; 05 (800x600x75Hz) */
1131 	{1, 1, 1312, 800,  1312, 800},  /* ; 06 (1024x768x75Hz) */
1132 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
1133 	{1, 1, 1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
1134 					   ;;[ycchen] 12/19/02 */
1135 	{1, 1, 2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
1136 	{1, 1, 1688, 806,  1688, 806}   /* ; 0A (1280x768x75Hz) */
1137 };
1138 
1139 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1024x768Data[] = {
1140 	{9, 1057, 0,   771}, /* ; 00 (320x200,320x400,640x200,640x400) */
1141 	{9, 1057, 0,   771}, /* ; 01 (320x350,640x350) */
1142 	{9, 1057, 0,   771}, /* ; 02 (360x400,720x400) */
1143 	{9, 1057, 0,   771}, /* ; 03 (720x350) */
1144 	{9, 1057, 0,   771}, /* ; 04 (640x480x60Hz) */
1145 	{9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
1146 	{9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
1147 };
1148 
1149 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1024x768Data[] = {
1150 	{9, 1057, 737, 703}, /* ; 00 (320x200,320x400,640x200,640x400) */
1151 	{9, 1057, 686, 651}, /* ; 01 (320x350,640x350) */
1152 	{9, 1057, 737, 703}, /* ; 02 (360x400,720x400) */
1153 	{9, 1057, 686, 651}, /* ; 03 (720x350) */
1154 	{9, 1057, 776, 741}, /* ; 04 (640x480x60Hz) */
1155 	{9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
1156 	{9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
1157 };
1158 
1159 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1024x768Data[] = {
1160 	{1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1161 	{1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
1162 	{1152, 856,  622, 587}, /* ; 02 (360x400,720x400) */
1163 	{1152, 856,  597, 562}, /* ; 03 (720x350) */
1164 	{1152, 856,  662, 627}, /* ; 04 (640x480x60Hz) */
1165 	{1232, 936,  722, 687}, /* ; 05 (800x600x60Hz) */
1166 	{0,    1048, 805, 770}  /* ; 06 (1024x768x60Hz) */
1167 };
1168 
1169 static struct XGI330_LCDDataDesStruct XGI_ExtLCDDLDes1280x1024Data[] = {
1170 	{18, 1346, 981,  940},  /* 00 (320x200,320x400,640x200,640x400) */
1171 	{18, 1346, 926,  865},  /* 01 (320x350,640x350) */
1172 	{18, 1346, 981,  940},  /* 02 (360x400,720x400) */
1173 	{18, 1346, 926,  865},  /* 03 (720x350) */
1174 	{18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
1175 	{18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
1176 	{18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
1177 	{18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1178 };
1179 
1180 static struct XGI330_LCDDataDesStruct XGI_StLCDDLDes1280x1024Data[] = {
1181 	{18, 1346, 970,  907},  /* 00 (320x200,320x400,640x200,640x400) */
1182 	{18, 1346, 917,  854},  /* 01 (320x350,640x350) */
1183 	{18, 1346, 970,  907},  /* 02 (360x400,720x400) */
1184 	{18, 1346, 917,  854},  /* 03 (720x350) */
1185 	{18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
1186 	{18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
1187 	{18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
1188 	{18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1189 };
1190 
1191 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDLDes1280x1024Data[] = {
1192 	{1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
1193 	{1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
1194 	{1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
1195 	{1368, 1008, 729,  688}, /* 03 (720x350) */
1196 	{1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
1197 	{1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
1198 	{1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
1199 	{18,   1346, 1065, 1024} /* 07 (1280x1024x60Hz) */
1200 };
1201 
1202 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1280x1024Data[] = {
1203 	{9, 1337, 981,  940},  /* ; 00 (320x200,320x400,640x200,640x400) */
1204 	{9, 1337, 926,  884},  /* ; 01 (320x350,640x350) alan, 2003/09/30 */
1205 	{9, 1337, 981,  940},  /* ; 02 (360x400,720x400) */
1206 	{9, 1337, 926,  884},  /* ; 03 (720x350) alan, 2003/09/30 */
1207 	{9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
1208 	{9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
1209 	{9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
1210 	{9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
1211 };
1212 
1213 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1280x1024Data[] = {
1214 	{9, 1337, 970,  907},  /* ; 00 (320x200,320x400,640x200,640x400) */
1215 	{9, 1337, 917,  854},  /* ; 01 (320x350,640x350) */
1216 	{9, 1337, 970,  907},  /* ; 02 (360x400,720x400) */
1217 	{9, 1337, 917,  854},  /* ; 03 (720x350) */
1218 	{9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
1219 	{9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
1220 	{9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
1221 	{9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
1222 };
1223 
1224 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1280x1024Data[] = {
1225 	{1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
1226 	{1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
1227 	{1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
1228 	{1368, 1008, 729,  688}, /* 03 (720x350) */
1229 	{1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
1230 	{1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
1231 	{1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
1232 	{9,    1337, 1065, 1024} /* 07 (1280x1024x60Hz) */
1233 };
1234 
1235 static struct XGI330_LCDDataDesStruct xgifb_lcddldes_1400x1050[] = {
1236 	{18,   1464, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
1237 	{18,   1464, 0,    1051}, /* 01 (320x350,640x350) */
1238 	{18,   1464, 0,    1051}, /* 02 (360x400,720x400) */
1239 	{18,   1464, 0,    1051}, /* 03 (720x350) */
1240 	{18,   1464, 0,    1051}, /* 04 (640x480x60Hz) */
1241 	{18,   1464, 0,    1051}, /* 05 (800x600x60Hz) */
1242 	{18,   1464, 0,    1051}, /* 06 (1024x768x60Hz) */
1243 	{1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1244 	{18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
1245 };
1246 
1247 static struct XGI330_LCDDataDesStruct xgifb_lcddes_1400x1050[] = {
1248 	{9,    1455, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
1249 	{9,    1455, 0,    1051}, /* 01 (320x350,640x350) */
1250 	{9,    1455, 0,    1051}, /* 02 (360x400,720x400) */
1251 	{9,    1455, 0,    1051}, /* 03 (720x350) */
1252 	{9,    1455, 0,    1051}, /* 04 (640x480x60Hz) */
1253 	{9,    1455, 0,    1051}, /* 05 (800x600x60Hz) */
1254 	{9,    1455, 0,    1051}, /* 06 (1024x768x60Hz) */
1255 	{1637, 1397, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1256 	{9,    1455, 0,    1051}  /* 08 (1400x1050x60Hz) */
1257 };
1258 
1259 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1400x1050Data[] = {
1260 	{1308, 1068, 781,  766},  /* 00 (320x200,320x400,640x200,640x400) */
1261 	{1308, 1068, 781,  766},  /* 01 (320x350,640x350) */
1262 	{1308, 1068, 781,  766},  /* 02 (360x400,720x400) */
1263 	{1308, 1068, 781,  766},  /* 03 (720x350) */
1264 	{1308, 1068, 781,  766},  /* 04 (640x480x60Hz) */
1265 	{1388, 1148, 841,  826},  /* 05 (800x600x60Hz) */
1266 	{1490, 1250, 925,  910},  /* 06 (1024x768x60Hz) */
1267 	{1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1268 	{18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
1269 };
1270 
1271 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1400x1050Data2[] = {
1272 	{0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
1273 	{0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
1274 	{0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
1275 	{0, 1448, 0, 1051}, /* 03 (720x350) */
1276 	{0, 1448, 0, 1051}  /* 04 (640x480x60Hz) */
1277 };
1278 
1279 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1600x1200Data[] = {
1280 	{18, 1682, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1281 	{18, 1682, 0, 1201}, /* 01 (320x350,640x350) */
1282 	{18, 1682, 0, 1201}, /* 02 (360x400,720x400) */
1283 	{18, 1682, 0, 1201}, /* 03 (720x350) */
1284 	{18, 1682, 0, 1201}, /* 04 (640x480x60Hz) */
1285 	{18, 1682, 0, 1201}, /* 05 (800x600x60Hz) */
1286 	{18, 1682, 0, 1201}, /* 06 (1024x768x60Hz) */
1287 	{18, 1682, 0, 1201}, /* 07 (1280x1024x60Hz) */
1288 	{18, 1682, 0, 1201}, /* 08 (1400x1050x60Hz) */
1289 	{18, 1682, 0, 1201}  /* 09 (1600x1200x60Hz) */
1290 };
1291 
1292 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1600x1200Data[] = {
1293 	{18, 1682, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
1294 	{18, 1682, 1083, 1034}, /* 01 (320x350,640x350) */
1295 	{18, 1682, 1150, 1101}, /* 02 (360x400,720x400) */
1296 	{18, 1682, 1083, 1034}, /* 03 (720x350) */
1297 	{18, 1682, 0,    1201}, /* 04 (640x480x60Hz) */
1298 	{18, 1682, 0,    1201}, /* 05 (800x600x60Hz) */
1299 	{18, 1682, 0,    1201}, /* 06 (1024x768x60Hz) */
1300 	{18, 1682, 1232, 1183}, /* 07 (1280x1024x60Hz) */
1301 	{18, 1682, 0,    1201}, /* 08 (1400x1050x60Hz) */
1302 	{18, 1682, 0,    1201} /* 09 (1600x1200x60Hz) */
1303 };
1304 
1305 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1600x1200Data[] = {
1306 	{9, 1673, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1307 	{9, 1673, 0, 1201}, /* 01 (320x350,640x350) */
1308 	{9, 1673, 0, 1201}, /* 02 (360x400,720x400) */
1309 	{9, 1673, 0, 1201}, /* 03 (720x350) */
1310 	{9, 1673, 0, 1201}, /* 04 (640x480x60Hz) */
1311 	{9, 1673, 0, 1201}, /* 05 (800x600x60Hz) */
1312 	{9, 1673, 0, 1201}, /* 06 (1024x768x60Hz) */
1313 	{9, 1673, 0, 1201}, /* 07 (1280x1024x60Hz) */
1314 	{9, 1673, 0, 1201}, /* 08 (1400x1050x60Hz) */
1315 	{9, 1673, 0, 1201}  /* 09 (1600x1200x60Hz) */
1316 };
1317 
1318 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1600x1200Data[] = {
1319 	{9, 1673, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
1320 	{9, 1673, 1083, 1034}, /* 01 (320x350,640x350) */
1321 	{9, 1673, 1150, 1101}, /* 02 (360x400,720x400) */
1322 	{9, 1673, 1083, 1034}, /* 03 (720x350) */
1323 	{9, 1673, 0,    1201}, /* 04 (640x480x60Hz) */
1324 	{9, 1673, 0,    1201}, /* 05 (800x600x60Hz) */
1325 	{9, 1673, 0,    1201}, /* 06 (1024x768x60Hz) */
1326 	{9, 1673, 1232, 1183}, /* 07 (1280x1024x60Hz) */
1327 	{9, 1673, 0,    1201}, /* 08 (1400x1050x60Hz) */
1328 	{9, 1673, 0,    1201}  /* 09 (1600x1200x60Hz) */
1329 };
1330 
1331 static struct XGI330_LCDDataDesStruct2  XGI_NoScalingDesData[] = {
1332 	{9, 657,  448, 405,  96,   2}, /* 00 (320x200,320x400,
1333 					      640x200,640x400) */
1334 	{9, 657,  448, 355,  96,   2}, /* 01 (320x350,640x350) */
1335 	{9, 657,  448, 405,  96,   2}, /* 02 (360x400,720x400) */
1336 	{9, 657,  448, 355,  96,   2}, /* 03 (720x350) */
1337 	{9, 657,  1,   483,  96,   2}, /* 04 (640x480x60Hz) */
1338 	{9, 849,  627, 600,  128,  4}, /* 05 (800x600x60Hz) */
1339 	{9, 1057, 805, 770,  0136, 6}, /* 06 (1024x768x60Hz) */
1340 	{9, 1337, 0,   1025, 112,  3}, /* 07 (1280x1024x60Hz) */
1341 	{9, 1457, 0,   1051, 112,  3}, /* 08 (1400x1050x60Hz) },
1342 					//;[ycchen] 12/19/02 */
1343 	{9, 1673, 0,   1201, 192,  3}, /* 09 (1600x1200x60Hz) */
1344 	{9, 1337, 0,   771,  112,  6}  /* 0A (1280x768x60Hz) */
1345 };
1346 
1347 /* ;;1024x768x75Hz */
1348 static struct XGI330_LCDDataDesStruct xgifb_lcddes_1024x768x75[] = {
1349 	{9, 1049, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1350 	{9, 1049, 0, 769}, /* ; 01 (320x350,640x350) */
1351 	{9, 1049, 0, 769}, /* ; 02 (360x400,720x400) */
1352 	{9, 1049, 0, 769}, /* ; 03 (720x350) */
1353 	{9, 1049, 0, 769}, /* ; 04 (640x480x75Hz) */
1354 	{9, 1049, 0, 769}, /* ; 05 (800x600x75Hz) */
1355 	{9, 1049, 0, 769}  /* ; 06 (1024x768x75Hz) */
1356 };
1357 
1358 /* ;;1024x768x75Hz */
1359 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1024x768x75Data[] = {
1360 	{1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1361 	{1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
1362 	{1192, 896,  622, 587}, /* ; 02 (360x400,720x400) */
1363 	{1192, 896,  597, 562}, /* ; 03 (720x350) */
1364 	{1129, 857,  656, 625}, /* ; 04 (640x480x75Hz) */
1365 	{1209, 937,  716, 685}, /* ; 05 (800x600x75Hz) */
1366 	{9,    1049, 0,   769}	/* ; 06 (1024x768x75Hz) */
1367 };
1368 
1369 /* ;;1280x1024x75Hz */
1370 static struct XGI330_LCDDataDesStruct xgifb_lcddldes_1280x1024x75[] = {
1371 	{18, 1314, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1372 	{18, 1314, 0, 1025}, /* ; 01 (320x350,640x350) */
1373 	{18, 1314, 0, 1025}, /* ; 02 (360x400,720x400) */
1374 	{18, 1314, 0, 1025}, /* ; 03 (720x350) */
1375 	{18, 1314, 0, 1025}, /* ; 04 (640x480x60Hz) */
1376 	{18, 1314, 0, 1025}, /* ; 05 (800x600x60Hz) */
1377 	{18, 1314, 0, 1025}, /* ; 06 (1024x768x60Hz) */
1378 	{18, 1314, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
1379 };
1380 
1381 /* 1280x1024x75Hz */
1382 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDLDes1280x1024x75Data[] = {
1383 	{1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1384 	{1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
1385 	{1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
1386 	{1408, 1048, 729, 688}, /* ; 03 (720x350) */
1387 	{1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
1388 	{1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
1389 	{1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
1390 	{18,   1314, 0,   1025} /* ; 07 (1280x1024x75Hz) */
1391 };
1392 
1393 /* ;;1280x1024x75Hz */
1394 static struct XGI330_LCDDataDesStruct xgifb_lcddes_1280x1024x75[] = {
1395 	{9, 1305, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1396 	{9, 1305, 0, 1025}, /* ; 01 (320x350,640x350) */
1397 	{9, 1305, 0, 1025}, /* ; 02 (360x400,720x400) */
1398 	{9, 1305, 0, 1025}, /* ; 03 (720x350) */
1399 	{9, 1305, 0, 1025}, /* ; 04 (640x480x60Hz) */
1400 	{9, 1305, 0, 1025}, /* ; 05 (800x600x60Hz) */
1401 	{9, 1305, 0, 1025}, /* ; 06 (1024x768x60Hz) */
1402 	{9, 1305, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
1403 };
1404 
1405 /* 1280x1024x75Hz */
1406 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1280x1024x75Data[] = {
1407 	{1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1408 	{1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
1409 	{1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
1410 	{1408, 1048, 729, 688}, /* ; 03 (720x350) */
1411 	{1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
1412 	{1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
1413 	{1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
1414 	{9,    1305, 0,   1025} /* ; 07 (1280x1024x75Hz) */
1415 };
1416 
1417 /* Scaling LCD 75Hz */
1418 static struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesDatax75[] =  {
1419 	{9, 657,  448, 405,  96,  2}, /* ; 00 (320x200,320x400,
1420 					       640x200,640x400) */
1421 	{9, 657,  448, 355,  96,  2}, /* ; 01 (320x350,640x350) */
1422 	{9, 738,  448, 405,  108, 2}, /* ; 02 (360x400,720x400) */
1423 	{9, 738,  448, 355,  108, 2}, /* ; 03 (720x350) */
1424 	{9, 665,  0,   481,  64,  3}, /* ; 04 (640x480x75Hz) */
1425 	{9, 825,  0,   601,  80,  3}, /* ; 05 (800x600x75Hz) */
1426 	{9, 1049, 0,   769,  96,  3}, /* ; 06 (1024x768x75Hz) */
1427 	{9, 1305, 0,   1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
1428 	{9, 1457, 0,   1051, 112, 3}, /* ; 08 (1400x1050x60Hz)
1429 					 ;;[ycchen] 12/19/02 */
1430 	{9, 1673, 0,   1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
1431 	{9, 1337, 0,   771,  112, 6}  /* ; 0A (1280x768x60Hz) */
1432 };
1433 
1434 static struct XGI330_TVDataStruct  XGI_StPALData[] = {
1435 	{1, 1, 864, 525, 1270, 400, 100, 0, 760},
1436 	{1, 1, 864, 525, 1270, 350, 100, 0, 760},
1437 	{1, 1, 864, 525, 1270, 400,   0, 0, 720},
1438 	{1, 1, 864, 525, 1270, 350,   0, 0, 720},
1439 	{1, 1, 864, 525, 1270, 480,  50, 0, 760},
1440 	{1, 1, 864, 525, 1270, 600,  50, 0,   0}
1441 };
1442 
1443 static struct XGI330_TVDataStruct  XGI_ExtPALData[] = {
1444 	{2,  1, 1080, 463, 1270, 500,  50, 0,  50},
1445 	{15, 7, 1152, 413, 1270, 500,  50, 0,  50},
1446 	{2,  1, 1080, 463, 1270, 500,  50, 0,  50},
1447 	{15, 7, 1152, 413, 1270, 500,  50, 0,  50},
1448 	{2,  1,  900, 543, 1270, 500,   0, 0,  50},
1449 	{4,  3, 1080, 663, 1270, 500, 438, 0, 438},
1450 	{1,  1, 1125, 831, 1270, 500, 686, 0, 686}, /*301b*/
1451 	{3,  2, 1080, 619, 1270, 540, 438, 0, 438}
1452 };
1453 
1454 static struct XGI330_TVDataStruct  XGI_StNTSCData[] = {
1455 	{1, 1, 858, 525, 1270, 400, 50, 0, 760},
1456 	{1, 1, 858, 525, 1270, 350, 50, 0, 640},
1457 	{1, 1, 858, 525, 1270, 400,  0, 0, 720},
1458 	{1, 1, 858, 525, 1270, 350,  0, 0, 720},
1459 	{1, 1, 858, 525, 1270, 480,  0, 0, 760}
1460 };
1461 
1462 static struct XGI330_TVDataStruct  XGI_ExtNTSCData[] = {
1463 	{9,     5, 1001, 453, 1270, 420, 171, 0, 171},
1464 	{12,    5,  858, 403, 1270, 420, 171, 0, 171},
1465 	{9,     5, 1001, 453, 1270, 420, 171, 0, 171},
1466 	{12,    5,  858, 403, 1270, 420, 171, 0, 171},
1467 	{143,  80,  836, 523, 1270, 420, 224, 0,   0},
1468 	{143, 120, 1008, 643, 1270, 420,   0, 1,   0},
1469 	{1,     1, 1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
1470 	{2,     1,  858, 503, 1584, 480,   0, 1,   0},
1471 	{3,     2, 1001, 533, 1270, 420,   0, 0,   0}
1472 };
1473 
1474 static struct XGI330_TVDataStruct  XGI_St1HiTVData[] = {
1475 	{1, 1, 892,  563, 690,  800, 0,     0, 0}, /* 00 (320x200,320x400,
1476 							  640x200,640x400) */
1477 	{1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
1478 	{1, 1, 1000, 563, 785,  800, 0,     0, 0}, /* 02 (360x400,720x400) */
1479 	{1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
1480 	{1, 1, 892,  563, 690,  960, 0,     0, 0}, /* 04 (320x240,640x480) */
1481 	{8, 5, 1050, 683, 1648, 960, 0x150, 1, 0}  /* 05 (400x300,800x600) */
1482 };
1483 
1484 static struct XGI330_TVDataStruct  XGI_St2HiTVData[] = {
1485 	{3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 00 (320x200,320x400,
1486 							  640x200,640x400) */
1487 	{1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
1488 	{3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 02 (360x400,720x400) */
1489 	{1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
1490 	{5, 2, 840,  563, 1648, 960, 0x08D, 1, 0}, /* 04 (320x240,640x480) */
1491 	{8, 5, 1050, 683, 1648, 960, 0x17C, 1, 0}  /* 05 (400x300,800x600) */
1492 };
1493 
1494 static struct XGI330_TVDataStruct  XGI_ExtHiTVData[] = {
1495 	{6,  1,  840,  563,  1632, 960, 0,     0, 0}, /* 00 (320x200,320x400,
1496 							     640x200,640x400) */
1497 	{3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 01 (320x350,640x350) */
1498 	{3,  1,  840,  483,  1632, 960, 0,     0, 0}, /* 02 (360x400,720x400) */
1499 	{3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 03 (720x350) */
1500 	{5,  1,  840,  563,  1648, 960, 0x166, 1, 0}, /* 04 (320x240,640x480) */
1501 	{16, 5,  1050, 683,  1648, 960, 0x143, 1, 0}, /* 05 (400x300,800x600) */
1502 	{25, 12, 1260, 851,  1648, 960, 0x032, 0, 0}, /* 06 (512x384,1024x768)*/
1503 	{5,  4,  1575, 1124, 1648, 960, 0x128, 0, 0}, /* 07 (1280x1024) */
1504 	{4,  1,  1050, 563,  1548, 960, 0x143, 1, 0}, /* 08 (800x480) */
1505 	{5,  2,  1400, 659,  1648, 960, 0x032, 0, 0}, /* 09 (1024x576) */
1506 	{8,  5,  1750, 803,  1648, 960, 0x128, 0, 0}  /* 0A (1280x720) */
1507 };
1508 
1509 static struct XGI330_TVDataStruct  XGI_ExtYPbPr525iData[] = {
1510 	{  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
1511 	{ 12,  5,   858, 403, 1270, 420, 171,   0, 171},
1512 	{  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
1513 	{ 12,  5,   858, 403, 1270, 420, 171,   0, 171},
1514 	{143,  80,  836, 523, 1250, 420, 224,   0,   0},
1515 	{143, 120, 1008, 643, 1250, 420,   0,   1,   0},
1516 	{ 1,    1, 1120, 821, 1516, 420,   0,   1,   0}, /*301b*/
1517 	{  2,   1,  858, 503, 1584, 480,   0,   1,   0},
1518 	{  3,   2, 1001, 533, 1250, 420,   0,   0,   0}
1519 };
1520 
1521 static struct XGI330_TVDataStruct  XGI_StYPbPr525iData[] = {
1522 	{1, 1, 858, 525, 1270, 400, 50, 0, 760},
1523 	{1, 1, 858, 525, 1270, 350, 50, 0, 640},
1524 	{1, 1, 858, 525, 1270, 400,  0, 0, 720},
1525 	{1, 1, 858, 525, 1270, 350,  0, 0, 720},
1526 	{1, 1, 858, 525, 1270, 480,  0, 0, 760},
1527 };
1528 
1529 static struct XGI330_TVDataStruct  XGI_ExtYPbPr525pData[] = {
1530 	{  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
1531 	{ 12,   5,   858, 403, 1270, 420, 171, 0, 171},
1532 	{  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
1533 	{ 12,   5,   858, 403, 1270, 420, 171, 0, 171},
1534 	{143,  80,   836, 523, 1270, 420, 224, 0,   0},
1535 	{143, 120,  1008, 643, 1270, 420,   0, 1,   0},
1536 	{ 1,    1,  1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
1537 	{  2,   1,   858, 503, 1584, 480,   0, 1,   0},
1538 	{  3,   2,  1001, 533, 1270, 420,   0, 0,   0}
1539 };
1540 
1541 static struct XGI330_TVDataStruct  XGI_StYPbPr525pData[] = {
1542 	{1, 1, 1716, 525, 1270, 400, 50, 0, 760},
1543 	{1, 1, 1716, 525, 1270, 350, 50, 0, 640},
1544 	{1, 1, 1716, 525, 1270, 400,  0, 0, 720},
1545 	{1, 1, 1716, 525, 1270, 350,  0, 0, 720},
1546 	{1, 1, 1716, 525, 1270, 480,  0, 0, 760},
1547 };
1548 
1549 static struct XGI330_TVDataStruct  XGI_ExtYPbPr750pData[] = {
1550 	{ 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 00 (320x200,320x400,
1551 							 640x200,640x400) */
1552 	{24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 01 (320x350,640x350) */
1553 	{ 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 02 (360x400,720x400) */
1554 	{24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 03 (720x350) */
1555 	{ 2, 1, 1100, 590, 1130, 640,  50, 0, 0}, /* 04 (320x240,640x480) */
1556 	{ 3, 2, 1210, 690, 1130, 660,  50, 0, 0}, /* 05 (400x300,800x600) */
1557 	{ 1, 1, 1375, 878, 1130, 640, 638, 0, 0}, /* 06 (1024x768) */
1558 	{ 2, 1,  858, 503, 1130, 480,   0, 1, 0}, /* 07 (720x480) */
1559 	{ 5, 4, 1815, 570, 1130, 660,  50, 0, 0},
1560 	{ 5, 3, 1100, 686, 1130, 640,  50, 1, 0},
1561 	{10, 9, 1320, 830, 1130, 640,  50, 0, 0}
1562 };
1563 
1564 static struct XGI330_TVDataStruct  XGI_StYPbPr750pData[] = {
1565 	{1, 1, 1650, 750, 1280, 400, 50, 0, 760},
1566 	{1, 1, 1650, 750, 1280, 350, 50, 0, 640},
1567 	{1, 1, 1650, 750, 1280, 400,  0, 0, 720},
1568 	{1, 1, 1650, 750, 1280, 350,  0, 0, 720},
1569 	{1, 1, 1650, 750, 1280, 480,  0, 0, 760},
1570 };
1571 
1572 static unsigned char XGI330_NTSCTiming[] = {
1573 	0x17, 0x1d, 0x03, 0x09, 0x05, 0x06, 0x0c, 0x0c,
1574 	0x94, 0x49, 0x01, 0x0a, 0x06, 0x0d, 0x04, 0x0a,
1575 	0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x1b,
1576 	0x0c, 0x50, 0x00, 0x97, 0x00, 0xda, 0x4a, 0x17,
1577 	0x7d, 0x05, 0x4b, 0x00, 0x00, 0xe2, 0x00, 0x02,
1578 	0x03, 0x0a, 0x65, 0x9d, 0x08, 0x92, 0x8f, 0x40,
1579 	0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x50,
1580 	0x00, 0x40, 0x44, 0x00, 0xdb, 0x02, 0x3b, 0x00
1581 };
1582 
1583 static unsigned char XGI330_PALTiming[] = {
1584 	0x21, 0x5A, 0x35, 0x6e, 0x04, 0x38, 0x3d, 0x70,
1585 	0x94, 0x49, 0x01, 0x12, 0x06, 0x3e, 0x35, 0x6d,
1586 	0x06, 0x14, 0x3e, 0x35, 0x6d, 0x00, 0x45, 0x2b,
1587 	0x70, 0x50, 0x00, 0x9b, 0x00, 0xd9, 0x5d, 0x17,
1588 	0x7d, 0x05, 0x45, 0x00, 0x00, 0xe8, 0x00, 0x02,
1589 	0x0d, 0x00, 0x68, 0xb0, 0x0b, 0x92, 0x8f, 0x40,
1590 	0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x63,
1591 	0x00, 0x40, 0x3e, 0x00, 0xe1, 0x02, 0x28, 0x00
1592 };
1593 
1594 static unsigned char XGI330_HiTVExtTiming[] = {
1595 	0x2D, 0x60, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1596 	0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1597 	0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1598 	0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1599 	0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1600 	0x8E, 0x8E, 0x82, 0x07, 0x0B,
1601 	0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1602 	0x60, 0x14, 0x3D, 0x63, 0x4F,
1603 	0x27, 0x00, 0xfc, 0xff, 0x6a, 0x00
1604 };
1605 
1606 static unsigned char XGI330_HiTVSt1Timing[] = {
1607 	0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1608 	0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1609 	0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1610 	0x65, 0x90, 0x7B, 0xA8, 0x03, 0xF0, 0x87, 0x03,
1611 	0x11, 0x15, 0x11, 0xCF, 0x10, 0x11, 0xCF, 0x10,
1612 	0x35, 0x35, 0x3B, 0x69, 0x1D,
1613 	0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1614 	0x60, 0x04, 0x86, 0xAF, 0x5D,
1615 	0x0E, 0x00, 0xfc, 0xff, 0x2d, 0x00
1616 };
1617 
1618 static unsigned char XGI330_HiTVSt2Timing[] = {
1619 	0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1620 	0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1621 	0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1622 	0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1623 	0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1624 	0x8E, 0x8E, 0x82, 0x07, 0x0B,
1625 	0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1626 	0x60, 0x14, 0x3D, 0x63, 0x4F,
1627 	0x27, 0x00, 0xFC, 0xff, 0x6a, 0x00
1628 };
1629 
1630 static unsigned char XGI330_HiTVTextTiming[] = {
1631 	0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1632 	0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1633 	0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1634 	0x65, 0x90, 0xE7, 0xBC, 0x03, 0x0C, 0x97, 0x03,
1635 	0x14, 0x78, 0x14, 0x08, 0x20, 0x14, 0x08, 0x20,
1636 	0xC8, 0xC8, 0x3B, 0xD2, 0x26,
1637 	0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1638 	0x60, 0x04, 0x96, 0x72, 0x5C,
1639 	0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1640 };
1641 
1642 static unsigned char XGI330_YPbPr750pTiming[] = {
1643 	0x30, 0x1d, 0xe8, 0x09, 0x09, 0xed, 0x0c, 0x0c,
1644 	0x98, 0x0a, 0x01, 0x0c, 0x06, 0x0d, 0x04, 0x0a,
1645 	0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1646 	0xed, 0x50, 0x70, 0x9f, 0x16, 0x59, 0x60, 0x13,
1647 	0x27, 0x0b, 0x27, 0xfc, 0x30, 0x27, 0x1c, 0xb0,
1648 	0x4b, 0x4b, 0x6f, 0x2f, 0x63,
1649 	0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1650 	0x60, 0x14, 0x73, 0x00, 0x40,
1651 	0x11, 0x00, 0xfc, 0xff, 0x32, 0x00
1652 };
1653 
1654 static unsigned char XGI330_YPbPr525pTiming[] = {
1655 	0x3E, 0x11, 0x06, 0x09, 0x0b, 0x0c, 0x0c, 0x0c,
1656 	0x98, 0x0a, 0x01, 0x0d, 0x06, 0x0d, 0x04, 0x0a,
1657 	0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1658 	0x0c, 0x50, 0xb2, 0x9f, 0x16, 0x59, 0x4f, 0x13,
1659 	0xad, 0x11, 0xad, 0x1d, 0x40, 0x8a, 0x3d, 0xb8,
1660 	0x51, 0x5e, 0x60, 0x49, 0x7d,
1661 	0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1662 	0x60, 0x14, 0x4B, 0x43, 0x41,
1663 	0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1664 };
1665 
1666 static unsigned char XGI330_YPbPr525iTiming[] = {
1667 	0x1B, 0x21, 0x03, 0x09, 0x05, 0x06, 0x0C, 0x0C,
1668 	0x94, 0x49, 0x01, 0x0A, 0x06, 0x0D, 0x04, 0x0A,
1669 	0x06, 0x14, 0x0D, 0x04, 0x0A, 0x00, 0x85, 0x1B,
1670 	0x0C, 0x50, 0x00, 0x97, 0x00, 0xDA, 0x4A, 0x17,
1671 	0x7D, 0x05, 0x4B, 0x00, 0x00, 0xE2, 0x00, 0x02,
1672 	0x03, 0x0A, 0x65, 0x9D, 0x08,
1673 	0x92, 0x8F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1674 	0x60, 0x14, 0x4B, 0x00, 0x40,
1675 	0x44, 0x00, 0xDB, 0x02, 0x3B, 0x00
1676 };
1677 
1678 static unsigned char XGI330_HiTVGroup3Data[] = {
1679 	0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x5F,
1680 	0x05, 0x21, 0xB2, 0xB2, 0x55, 0x77, 0x2A, 0xA6,
1681 	0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1682 	0x8C, 0x6E, 0x60, 0x2E, 0x58, 0x48, 0x72, 0x44,
1683 	0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1684 	0x4F, 0x7F, 0x03, 0xA8, 0x7D, 0x20, 0x1A, 0xA9,
1685 	0x14, 0x05, 0x03, 0x7E, 0x64, 0x31, 0x14, 0x75,
1686 	0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1687 };
1688 
1689 static unsigned char XGI330_HiTVGroup3Simu[] = {
1690 	0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x95,
1691 	0xDB, 0x20, 0xB8, 0xB8, 0x55, 0x47, 0x2A, 0xA6,
1692 	0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1693 	0x8C, 0x6E, 0x60, 0x15, 0x26, 0xD3, 0xE4, 0x11,
1694 	0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1695 	0x67, 0x36, 0x01, 0x47, 0x0E, 0x10, 0xBE, 0xB4,
1696 	0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
1697 	0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1698 };
1699 
1700 static unsigned char XGI330_HiTVGroup3Text[] = {
1701 	0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0xA7,
1702 	0xF5, 0x20, 0xCE, 0xCE, 0x55, 0x47, 0x2A, 0xA6,
1703 	0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1704 	0x8C, 0x6E, 0x60, 0x18, 0x2C, 0x0C, 0x20, 0x22,
1705 	0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1706 	0x93, 0x3C, 0x01, 0x50, 0x2F, 0x10, 0xF4, 0xCA,
1707 	0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
1708 	0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1709 };
1710 
1711 static unsigned char XGI330_Ren525pGroup3[] = {
1712 	0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
1713 	0xB1, 0x41, 0x62, 0x62, 0xFF, 0xF4, 0x45, 0xa6,
1714 	0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
1715 	0xAC, 0xDA, 0x60, 0xFe, 0x6A, 0x9A, 0x06, 0x10,
1716 	0xd1, 0x04, 0x18, 0x0a, 0xFF, 0x80, 0x00, 0x80,
1717 	0x3c, 0x77, 0x00, 0xEF, 0xE0, 0x10, 0xB0, 0xE0,
1718 	0x10, 0x4F, 0x0F, 0x0F, 0x05, 0x0F, 0x08, 0x6E,
1719 	0x1a, 0x1F, 0x25, 0x2a, 0x4C, 0xAA, 0x01
1720 };
1721 
1722 static unsigned char XGI330_Ren750pGroup3[] = {
1723 	0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
1724 	0x54, 0x41, 0xE7, 0xE7, 0xFF, 0xF4, 0x45, 0xa6,
1725 	0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
1726 	0xAC, 0x6A, 0x60, 0x2b, 0x52, 0xCD, 0x61, 0x10,
1727 	0x51, 0x04, 0x18, 0x0a, 0x1F, 0x80, 0x00, 0x80,
1728 	0xFF, 0xA4, 0x04, 0x2B, 0x94, 0x21, 0x72, 0x94,
1729 	0x26, 0x05, 0x01, 0x0F, 0xed, 0x0F, 0x0A, 0x64,
1730 	0x18, 0x1D, 0x23, 0x28, 0x4C, 0xAA, 0x01
1731 };
1732 
1733 static struct XGI330_LVDSDataStruct  XGI_LVDS1024x768Data_1[] = {
1734 	{ 960, 438, 1344, 806},	/* 00 (320x200,320x400,640x200,640x400) */
1735 	{ 960, 388, 1344, 806},	/* 01 (320x350,640x350) */
1736 	{1040, 438, 1344, 806},	/* 02 (360x400,720x400) */
1737 	{1040, 388, 1344, 806},	/* 03 (720x350) */
1738 	{ 960, 518, 1344, 806},	/* 04 (320x240,640x480) */
1739 	{1120, 638, 1344, 806},	/* 05 (400x300,800x600) */
1740 	{1344, 806, 1344, 806}	/* 06 (512x384,1024x768) */
1741 };
1742 
1743 
1744 static struct XGI330_LVDSDataStruct  XGI_LVDS1024x768Data_2[] = {
1745 	{1344, 806, 1344, 806},
1746 	{1344, 806, 1344, 806},
1747 	{1344, 806, 1344, 806},
1748 	{1344, 806, 1344, 806},
1749 	{1344, 806, 1344, 806},
1750 	{1344, 806, 1344, 806},
1751 	{1344, 806, 1344, 806},
1752 	{800,  449, 1280, 801},
1753 	{800,  525, 1280, 813}
1754 };
1755 
1756 static struct XGI330_LVDSDataStruct  XGI_LVDS1280x1024Data_1[] = {
1757 	{1048, 442,  1688, 1066},
1758 	{1048, 392,  1688, 1066},
1759 	{1048, 442,  1688, 1066},
1760 	{1048, 392,  1688, 1066},
1761 	{1048, 522,  1688, 1066},
1762 	{1208, 642,  1688, 1066},
1763 	{1432, 810,  1688, 1066},
1764 	{1688, 1066, 1688, 1066}
1765 };
1766 
1767 static struct XGI330_LVDSDataStruct  XGI_LVDS1280x1024Data_2[] = {
1768 	{1344, 806, 1344, 806},
1769 	{1344, 806, 1344, 806},
1770 	{1344, 806, 1344, 806},
1771 	{1344, 806, 1344, 806},
1772 	{1344, 806, 1344, 806},
1773 	{1344, 806, 1344, 806},
1774 	{1344, 806, 1344, 806},
1775 	{800,  449, 1280, 801},
1776 	{800,  525, 1280, 813}
1777 };
1778 
1779 static struct XGI330_LVDSDataStruct  XGI_LVDS1400x1050Data_1[] = {
1780 	{928,   416, 1688, 1066},
1781 	{928,   366, 1688, 1066},
1782 	{928,   416, 1688, 1066},
1783 	{928,   366, 1688, 1066},
1784 	{928,   496, 1688, 1066},
1785 	{1088,  616, 1688, 1066},
1786 	{1312,  784, 1688, 1066},
1787 	{1568, 1040, 1688, 1066},
1788 	{1688, 1066, 1688, 1066}
1789 };
1790 
1791 static struct XGI330_LVDSDataStruct  XGI_LVDS1400x1050Data_2[] = {
1792 	{1688, 1066, 1688, 1066},
1793 	{1688, 1066, 1688, 1066},
1794 	{1688, 1066, 1688, 1066},
1795 	{1688, 1066, 1688, 1066},
1796 	{1688, 1066, 1688, 1066},
1797 	{1688, 1066, 1688, 1066},
1798 	{1688, 1066, 1688, 1066},
1799 	{1688, 1066, 1688, 1066},
1800 	{1688, 1066, 1688, 1066}
1801 };
1802 
1803 /* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */
1804 static struct XGI330_LVDSDataStruct XGI_LVDS1600x1200Data_1[] = {
1805 	{1088, 520,  2048, 1320}, /* 00 (320x200,320x400,640x200,640x400) */
1806 	{1088, 470,  2048, 1320}, /* 01 (320x350,640x350) */
1807 	{1088, 520,  2048, 1320}, /* 02 (360x400,720x400) */
1808 	{1088, 470,  2048, 1320}, /* 03 (720x350) */
1809 	{1088, 600,  2048, 1320}, /* 04 (320x240,640x480) */
1810 	{1248, 720,  2048, 1320}, /* 05 (400x300,800x600) */
1811 	{1472, 888,  2048, 1320}, /* 06 (512x384,1024x768) */
1812 	{1728, 1144, 2048, 1320}, /* 07 (640x512,1280x1024) */
1813 	{1848, 1170, 2048, 1320}, /* 08 (1400x1050) */
1814 	{2048, 1320, 2048, 1320}  /* 09 (1600x1200) */
1815 };
1816 
1817 static struct XGI330_LVDSDataStruct XGI_LVDSNoScalingData[] = {
1818 	{ 800,  449,  800,  449}, /* 00 (320x200,320x400,640x200,640x400) */
1819 	{ 800,  449,  800,  449}, /* 01 (320x350,640x350) */
1820 	{ 800,  449,  800,  449}, /* 02 (360x400,720x400) */
1821 	{ 800,  449,  800,  449}, /* 03 (720x350) */
1822 	{ 800,  525,  800,  525}, /* 04 (640x480x60Hz) */
1823 	{1056,  628, 1056,  628}, /* 05 (800x600x60Hz) */
1824 	{1344,  806, 1344,  806}, /* 06 (1024x768x60Hz) */
1825 	{1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1826 	{1688, 1066, 1688, 1066}, /* 08 (1400x1050x60Hz) ;;[ycchen] 12/19/02 */
1827 	{2160, 1250, 2160, 1250}, /* 09 (1600x1200x60Hz) */
1828 	{1688,  806, 1688,  806}  /* 0A (1280x768x60Hz) */
1829 };
1830 
1831 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Data_1x75[] = {
1832 	{ 960, 438, 1312, 800}, /* 00 (320x200,320x400,640x200,640x400) */
1833 	{ 960, 388, 1312, 800}, /* 01 (320x350,640x350) */
1834 	{1040, 438, 1312, 800}, /* 02 (360x400,720x400) */
1835 	{1040, 388, 1312, 800}, /* 03 (720x350) */
1836 	{ 928, 512, 1312, 800}, /* 04 (320x240,640x480) */
1837 	{1088, 632, 1312, 800}, /* 05 (400x300,800x600) */
1838 	{1312, 800, 1312, 800}, /* 06 (512x384,1024x768) */
1839 };
1840 
1841 
1842 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Data_2x75[] = {
1843 	{1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,640x200,640x400) */
1844 	{1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
1845 	{1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
1846 	{1312, 800, 1312, 800}, /* ; 03 (720x350) */
1847 	{1312, 800, 1312, 800}, /* ; 04 (320x240,640x480) */
1848 	{1312, 800, 1312, 800}, /* ; 05 (400x300,800x600) */
1849 	{1312, 800, 1312, 800}, /* ; 06 (512x384,1024x768) */
1850 };
1851 
1852 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Data_1x75[] = {
1853 	{1048,  442, 1688, 1066  }, /* ; 00 (320x200,320x400,640x200,640x400) */
1854 	{1048,  392, 1688, 1066  }, /* ; 01 (320x350,640x350) */
1855 	{1128,  442, 1688, 1066  }, /* ; 02 (360x400,720x400) */
1856 	{1128,  392, 1688, 1066  }, /* ; 03 (720x350) */
1857 	{1048,  522, 1688, 1066  }, /* ; 04 (320x240,640x480) */
1858 	{1208,  642, 1688, 1066  }, /* ; 05 (400x300,800x600) */
1859 	{1432,  810, 1688, 1066  }, /* ; 06 (512x384,1024x768) */
1860 	{1688, 1066, 1688, 1066 },  /* ; 06; 07 (640x512,1280x1024) */
1861 };
1862 
1863 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Data_2x75[] = {
1864 	{1688, 1066, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1865 	{1688, 1066, 1688, 1066 }, /* ; 01 (320x350,640x350) */
1866 	{1688, 1066, 1688, 1066 }, /* ; 02 (360x400,720x400) */
1867 	{1688, 1066, 1688, 1066 }, /* ; 03 (720x350) */
1868 	{1688, 1066, 1688, 1066 }, /* ; 04 (320x240,640x480) */
1869 	{1688, 1066, 1688, 1066 }, /* ; 05 (400x300,800x600) */
1870 	{1688, 1066, 1688, 1066 }, /* ; 06 (512x384,1024x768) */
1871 	{1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */
1872 };
1873 
1874 static struct XGI330_LVDSDataStruct XGI_LVDSNoScalingDatax75[] = {
1875 	{ 800,  449,  800, 449},  /* ; 00 (320x200,320x400,640x200,640x400) */
1876 	{ 800,  449,  800, 449},  /* ; 01 (320x350,640x350) */
1877 	{ 900,  449,  900, 449},  /* ; 02 (360x400,720x400) */
1878 	{ 900,  449,  900, 449},  /* ; 03 (720x350) */
1879 	{ 800,  500,  800, 500},  /* ; 04 (640x480x75Hz) */
1880 	{1056,  625, 1056, 625},  /* ; 05 (800x600x75Hz) */
1881 	{1312,  800, 1312, 800},  /* ; 06 (1024x768x75Hz) */
1882 	{1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
1883 	{1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
1884 				     ;;[ycchen] 12/19/02 */
1885 	{2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
1886 	{1688,  806, 1688, 806},  /* ; 0A (1280x768x75Hz) */
1887 };
1888 
1889 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_1[] = {
1890 	{0, 1048,   0, 771}, /* 00 (320x200,320x400,640x200,640x400) */
1891 	{0, 1048,   0, 771}, /* 01 (320x350,640x350) */
1892 	{0, 1048,   0, 771}, /* 02 (360x400,720x400) */
1893 	{0, 1048,   0, 771}, /* 03 (720x350) */
1894 	{0, 1048,   0, 771}, /* 04 (640x480x60Hz) */
1895 	{0, 1048,   0, 771}, /* 05 (800x600x60Hz) */
1896 	{0, 1048, 805, 770}  /* 06 (1024x768x60Hz) */
1897 } ;
1898 
1899 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_2[] = {
1900 	{1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1901 	{1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1902 	{1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1903 	{1142,  856, 597, 562}, /* 03 (720x350) */
1904 	{1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1905 	{1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1906 	{   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1907 };
1908 
1909 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_3[] = {
1910 	{320, 24, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1911 	{320, 24, 597, 562}, /* 01 (320x350,640x350) */
1912 	{320, 24, 622, 587}, /* 02 (360x400,720x400) */
1913 	{320, 24, 597, 562}, /* 03 (720x350) */
1914 	{320, 24, 722, 687}  /* 04 (640x480x60Hz) */
1915 };
1916 
1917 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_1[] = {
1918 	{0, 1328,    0, 1025}, /* 00 (320x200,320x400,640x200,640x400) */
1919 	{0, 1328,    0, 1025}, /* 01 (320x350,640x350) */
1920 	{0, 1328,    0, 1025}, /* 02 (360x400,720x400) */
1921 	{0, 1328,    0, 1025}, /* 03 (720x350) */
1922 	{0, 1328,    0, 1025}, /* 04 (640x480x60Hz) */
1923 	{0, 1328,    0, 1025}, /* 05 (800x600x60Hz) */
1924 	{0, 1328,    0, 1025}, /* 06 (1024x768x60Hz) */
1925 	{0, 1328, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1926 };
1927 
1928  /* The Display setting for DE Mode Panel */
1929 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_2[] = {
1930 	{1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */
1931 	{1368, 1008, 729, 688}, /* 01 (320x350,640x350) */
1932 	{1408, 1048, 752, 711}, /* 02 (360x400,720x400) */
1933 	{1408, 1048, 729, 688}, /* 03 (720x350) */
1934 	{1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */
1935 	{1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */
1936 	{1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */
1937 	{0000, 1328,   0, 1025} /* 07 (1280x1024x60Hz) */
1938 };
1939 
1940 static struct XGI330_LVDSDataStruct XGI_LVDS1400x1050Des_1[] = {
1941 	{0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
1942 	{0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
1943 	{0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
1944 	{0, 1448, 0, 1051}, /* 03 (720x350) */
1945 	{0, 1448, 0, 1051}, /* 04 (640x480x60Hz) */
1946 	{0, 1448, 0, 1051}, /* 05 (800x600x60Hz) */
1947 	{0, 1448, 0, 1051}, /* 06 (1024x768x60Hz) */
1948 	{0, 1448, 0, 1051}, /* 07 (1280x1024x60Hz) */
1949 	{0, 1448, 0, 1051}  /* 08 (1400x1050x60Hz) */
1950 };
1951 
1952 static struct XGI330_LVDSDataStruct XGI_LVDS1400x1050Des_2[] = {
1953 	{1308, 1068,  781,  766}, /* 00 (320x200,320x400,640x200,640x400) */
1954 	{1308, 1068,  781,  766}, /* 01 (320x350,640x350) */
1955 	{1308, 1068,  781,  766}, /* 02 (360x400,720x400) */
1956 	{1308, 1068,  781,  766}, /* 03 (720x350) */
1957 	{1308, 1068,  781,  766}, /* 04 (640x480x60Hz) */
1958 	{1388, 1148,  841,  826}, /* 05 (800x600x60Hz) */
1959 	{1490, 1250,  925,  910}, /* 06 (1024x768x60Hz) */
1960 	{1608, 1368, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1961 	{   0, 1448,    0, 1051}  /* 08 (1400x1050x60Hz) */
1962 };
1963 
1964 static struct XGI330_LVDSDataStruct XGI_LVDS1600x1200Des_1[] = {
1965 	{0, 1664, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1966 	{0, 1664, 0, 1201}, /* 01 (320x350,640x350) */
1967 	{0, 1664, 0, 1201}, /* 02 (360x400,720x400) */
1968 	{0, 1664, 0, 1201}, /* 03 (720x350) */
1969 	{0, 1664, 0, 1201}, /* 04 (640x480x60Hz) */
1970 	{0, 1664, 0, 1201}, /* 05 (800x600x60Hz) */
1971 	{0, 1664, 0, 1201}, /* 06 (1024x768x60Hz) */
1972 	{0, 1664, 0, 1201}, /* 07 (1280x1024x60Hz) */
1973 	{0, 1664, 0, 1201}, /* 08 (1400x1050x60Hz) */
1974 	{0, 1664, 0, 1201}  /* 09 (1600x1200x60Hz) */
1975 };
1976 
1977 static struct XGI330_LCDDataDesStruct2  XGI_LVDSNoScalingDesData[] = {
1978 	{0,  648,  448,  405,  96, 2}, /* 00 (320x200,320x400,
1979 					      640x200,640x400) */
1980 	{0,  648,  448,  355,  96, 2}, /* 01 (320x350,640x350) */
1981 	{0,  648,  448,  405,  96, 2}, /* 02 (360x400,720x400) */
1982 	{0,  648,  448,  355,  96, 2}, /* 03 (720x350) */
1983 	{0,  648,    1,  483,  96, 2}, /* 04 (640x480x60Hz) */
1984 	{0,  840,  627,  600, 128, 4}, /* 05 (800x600x60Hz) */
1985 	{0, 1048,  805,  770, 136, 6}, /* 06 (1024x768x60Hz) */
1986 	{0, 1328,    0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */
1987 	{0, 1438,    0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)
1988 					;;[ycchen] 12/19/02 */
1989 	{0, 1664,    0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */
1990 	{0, 1328,    0, 0771, 112, 6}  /* 0A (1280x768x60Hz) */
1991 };
1992 
1993 /* ; 1024x768 Full-screen */
1994 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_1x75[] = {
1995 	{0, 1040, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1996 	{0, 1040, 0, 769}, /* ; 01 (320x350,640x350) */
1997 	{0, 1040, 0, 769}, /* ; 02 (360x400,720x400) */
1998 	{0, 1040, 0, 769}, /* ; 03 (720x350) */
1999 	{0, 1040, 0, 769}, /* ; 04 (640x480x75Hz) */
2000 	{0, 1040, 0, 769}, /* ; 05 (800x600x75Hz) */
2001 	{0, 1040, 0, 769}  /* ; 06 (1024x768x75Hz) */
2002 };
2003 
2004 /* ; 1024x768 center-screen (Enh. Mode) */
2005 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_2x75[] = {
2006 	{1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
2007 	{1142,  856, 597, 562}, /* 01 (320x350,640x350) */
2008 	{1142,  856, 622, 587}, /* 02 (360x400,720x400) */
2009 	{1142,  856, 597, 562}, /* 03 (720x350) */
2010 	{1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
2011 	{1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
2012 	{   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
2013 };
2014 
2015 /* ; 1024x768 center-screen (St.Mode) */
2016 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_3x75[] =  {
2017 	{320, 24, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
2018 	{320, 24, 597, 562}, /* ; 01 (320x350,640x350) */
2019 	{320, 24, 622, 587}, /* ; 02 (360x400,720x400) */
2020 	{320, 24, 597, 562}, /* ; 03 (720x350) */
2021 	{320, 24, 722, 687}  /* ; 04 (640x480x60Hz) */
2022 };
2023 
2024 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_1x75[] = {
2025 	{0, 1296, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
2026 	{0, 1296, 0, 1025}, /* ; 01 (320x350,640x350) */
2027 	{0, 1296, 0, 1025}, /* ; 02 (360x400,720x400) */
2028 	{0, 1296, 0, 1025}, /* ; 03 (720x350) */
2029 	{0, 1296, 0, 1025}, /* ; 04 (640x480x75Hz) */
2030 	{0, 1296, 0, 1025}, /* ; 05 (800x600x75Hz) */
2031 	{0, 1296, 0, 1025}, /* ; 06 (1024x768x75Hz) */
2032 	{0, 1296, 0, 1025}  /* ; 07 (1280x1024x75Hz) */
2033 };
2034 
2035 /* The Display setting for DE Mode Panel */
2036 /* [ycchen] 02/18/03 Set DE as default */
2037 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_2x75[] = {
2038 	{1368,  976, 752,  711}, /* ; 00 (320x200,320x400,640x200,640x400) */
2039 	{1368,  976, 729,  688}, /* ; 01 (320x350,640x350) */
2040 	{1408,  976, 752,  711}, /* ; 02 (360x400,720x400) */
2041 	{1408,  976, 729,  688}, /* ; 03 (720x350) */
2042 	{1368,  976, 794,  753}, /* ; 04 (640x480x75Hz) */
2043 	{1448, 1036, 854,  813}, /* ; 05 (800x600x75Hz) */
2044 	{1560, 1168, 938,  897}, /* ; 06 (1024x768x75Hz) */
2045 	{   0, 1296,   0, 1025}  /* ; 07 (1280x1024x75Hz) */
2046 };
2047 
2048 /* Scaling LCD 75Hz */
2049 static struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] = {
2050 	{0,  648, 448,  405,  96, 2}, /* ; 00 (320x200,320x400,
2051 					       640x200,640x400) */
2052 	{0,  648, 448,  355,  96, 2}, /* ; 01 (320x350,640x350) */
2053 	{0,  729, 448,  405, 108, 2}, /* ; 02 (360x400,720x400) */
2054 	{0,  729, 448,  355, 108, 2}, /* ; 03 (720x350) */
2055 	{0,  656,   0,  481,  64, 3}, /* ; 04 (640x480x75Hz) */
2056 	{0,  816,   0,  601,  80, 3}, /* ; 05 (800x600x75Hz) */
2057 	{0, 1040,   0,  769,  96, 3}, /* ; 06 (1024x768x75Hz) */
2058 	{0, 1296,   0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
2059 	{0, 1448,   0, 1051, 112, 3}, /* ; 08 (1400x1050x75Hz)
2060 					 ;;[ycchen] 12/19/02 */
2061 	{0, 1664,   0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
2062 	{0, 1328,   0,  771, 112, 6}  /* ; 0A (1280x768x75Hz) */
2063 };
2064 
2065 static struct XGI330_CHTVDataStruct  XGI_CHTVUNTSCData[] = {
2066 	{ 840, 600,  840, 600},
2067 	{ 840, 600,  840, 600},
2068 	{ 840, 600,  840, 600},
2069 	{ 840, 600,  840, 600},
2070 	{ 784, 600,  784, 600},
2071 	{1064, 750, 1064, 750}
2072 };
2073 
2074 static struct XGI330_CHTVDataStruct  XGI_CHTVONTSCData[] = {
2075 	{ 840, 525,  840, 525},
2076 	{ 840, 525,  840, 525},
2077 	{ 840, 525,  840, 525},
2078 	{ 840, 525,  840, 525},
2079 	{ 784, 525,  784, 525},
2080 	{1040, 700, 1040, 700}
2081 };
2082 
2083 static struct XGI330_CHTVDataStruct  XGI_CHTVUPALData[] = {
2084 	{1008, 625, 1008, 625},
2085 	{1008, 625, 1008, 625},
2086 	{1008, 625, 1008, 625},
2087 	{1008, 625, 1008, 625},
2088 	{ 840, 750,  840, 750},
2089 	{ 936, 836,  936, 836}
2090 };
2091 
2092 static struct XGI330_CHTVDataStruct  XGI_CHTVOPALData[] = {
2093 	{1008, 625, 1008, 625},
2094 	{1008, 625, 1008, 625},
2095 	{1008, 625, 1008, 625},
2096 	{1008, 625, 1008, 625},
2097 	{840,  625,  840, 625},
2098 	{960,  750,  960, 750}
2099 };
2100 
2101 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2102 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_1_H[] = {
2103 	{ {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} }, /* 00 (320x) */
2104 	{ {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} }, /* 01 (360x) */
2105 	{ {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} }, /* 02 (400x) */
2106 	{ {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2107 	{ {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 04 (640x) */
2108 	{ {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 05 (720x) */
2109 	{ {0x87, 0x63, 0x8B, 0x69, 0x1A, 0x00, 0x26, 0x00} }, /* 06 (800x) */
2110 	{ {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
2111 };
2112 
2113 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2114 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_1_H[] = {
2115 	{ {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 00 (320x) */
2116 	{ {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 01 (360x) */
2117 	{ {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00 } }, /* 02 (400x) */
2118 	{ {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00 } }, /* 03 (512x) */
2119 	{ {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 04 (640x) */
2120 	{ {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 05 (720x) */
2121 	{ {0x92, 0x63, 0x96, 0x6C, 0x1A, 0x00, 0x06, 0x00 } }, /* 06 (800x) */
2122 	{ {0xAE, 0x7F, 0x92, 0x88, 0x96, 0x00, 0x02, 0x00 } }, /* 07 (1024x) */
2123 	{ {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00 } }  /* 08 (1280x) */
2124 };
2125 
2126 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2127 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_2_H[] = {
2128 	{ {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 00 (320x) */
2129 	{ {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 01 (360x) */
2130 	{ {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2131 	{ {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2132 	{ {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 04 (640x) */
2133 	{ {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 05 (720x) */
2134 	{ {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} }, /* 06 (800x) */
2135 	{ {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
2136 };
2137 
2138 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2139 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_2_H[] = {
2140 	{ {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 00 (320x) */
2141 	{ {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 01 (360x) */
2142 	{ {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2143 	{ {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2144 	{ {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
2145 	{ {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
2146 	{ {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} }, /* 06 (800x) */
2147 	{ {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
2148 	{ {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} }  /* 08 (1280x) */
2149 };
2150 
2151 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2152 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] = {
2153 	{ {0x47, 0x27, 0x8B, 0x2C, 0x1A, 0x00, 0x05, 0x00} }, /* 00 (320x) */
2154 	{ {0x47, 0x27, 0x8B, 0x30, 0x1E, 0x00, 0x05, 0x00} }, /* 01 (360x) */
2155 	{ {0x51, 0x31, 0x95, 0x36, 0x04, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2156 	{ {0x5F, 0x3F, 0x83, 0x44, 0x92, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2157 	{ {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 04 (640x) */
2158 	{ {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 05 (720x) */
2159 	{ {0x83, 0x63, 0x87, 0x68, 0x16, 0x00, 0x06, 0x00} }, /* 06 (800x) */
2160 	{ {0x9F, 0x7F, 0x83, 0x84, 0x92, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
2161 	{ {0xBF, 0x9F, 0x83, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
2162 	{ {0xCE, 0xAE, 0x92, 0xB3, 0x01, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
2163 };
2164 
2165 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2166 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] = {
2167 	{ {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 00 (320x) */
2168 	{ {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 01 (360x) */
2169 	{ {0x76, 0x31, 0x9A, 0x48, 0x9F, 0x00, 0x41, 0x00} }, /* 02 (400x) */
2170 	{ {0x76, 0x3F, 0x9A, 0x4F, 0x96, 0x00, 0x41, 0x00} }, /* 03 (512x) */
2171 	{ {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
2172 	{ {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
2173 	{ {0xCE, 0x63, 0x92, 0x96, 0x04, 0x00, 0x07, 0x00} }, /* 06 (800x) */
2174 	{ {0xCE, 0x7F, 0x92, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
2175 	{ {0xCE, 0x9F, 0x92, 0xB4, 0x02, 0x00, 0x03, 0x00} }, /* 08 (1280x) */
2176 	{ {0xCE, 0xAE, 0x92, 0xBC, 0x0A, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
2177 };
2178 
2179 /* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */
2180 /* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2181 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] = {
2182 	{ {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 00 (320x) */
2183 	{ {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 01 (360x) */
2184 	{ {0x65, 0x31, 0x89, 0x3C, 0x94, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2185 	{ {0x73, 0x3F, 0x97, 0x4A, 0x82, 0x00, 0x05, 0x00} }, /* 03 (512x) */
2186 	{ {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 04 (640x) */
2187 	{ {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 05 (720x) */
2188 	{ {0x97, 0x63, 0x9B, 0x65, 0x1D, 0x00, 0x06, 0xF0} }, /* 06 (800x) */
2189 	{ {0xB3, 0x7F, 0x97, 0x81, 0x99, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
2190 	{ {0xD3, 0x9F, 0x97, 0xA1, 0x19, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
2191 	{ {0xE2, 0xAE, 0x86, 0xB9, 0x91, 0x00, 0x03, 0x00} }, /* 09 (1400x) */
2192 	{ {0xFB, 0xC7, 0x9F, 0xC9, 0x81, 0x00, 0x07, 0x00} }  /* 0A (1600x) */
2193 };
2194 
2195 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2196 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] = {
2197 	{ {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} }, /* 00 (x350) */
2198 	{ {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} }, /* 01 (x400) */
2199 	{ {0x04, 0x3E, 0xE2, 0x89, 0xDF, 0x05, 0x00} }, /* 02 (x480) */
2200 	{ {0x7C, 0xF0, 0x5A, 0x8F, 0x57, 0x7D, 0xA0} }, /* 03 (x600) */
2201 	{ {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
2202 };
2203 
2204 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2205 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] = {
2206 	{ {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} }, /* 00 (x350) */
2207 	{ {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} }, /* 01 (x400) */
2208 	{ {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} }, /* 02 (x480) */
2209 	{ {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} }, /* 03 (x600) */
2210 	{ {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
2211 };
2212 
2213 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2214 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] = {
2215 	{ {0x86, 0x1F, 0x5E, 0x82, 0x5D, 0x87, 0x00} }, /* 00 (x350) */
2216 	{ {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} }, /* 01 (x400) */
2217 	{ {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} }, /* 02 (x480) */
2218 	{ {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} }, /* 03 (x600) */
2219 	{ {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} }, /* 04 (x768) */
2220 	{ {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
2221 };
2222 
2223 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2224 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] = {
2225 	{ {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} }, /* 00 (x350) */
2226 	{ {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} }, /* 01 (x400) */
2227 	{ {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} }, /* 02 (x480) */
2228 	{ {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} }, /* 03 (x600) */
2229 	{ {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} }, /* 04 (x768) */
2230 	{ {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
2231 };
2232 
2233 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2234 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] = {
2235 	{ {0x6C, 0x1F, 0x60, 0x84, 0x5D, 0x6D, 0x10} }, /* 00 (x350) */
2236 	{ {0x9E, 0x1F, 0x93, 0x86, 0x8F, 0x9F, 0x30} }, /* 01 (x400) */
2237 	{ {0xEE, 0x1F, 0xE2, 0x86, 0xDF, 0xEF, 0x10} }, /* 02 (x480) */
2238 	{ {0x66, 0xF0, 0x5A, 0x8e, 0x57, 0x67, 0xA0} }, /* 03 (x600) */
2239 	{ {0x0E, 0xF5, 0x02, 0x86, 0xFF, 0x0F, 0x90} }, /* 04 (x768) */
2240 	{ {0x0E, 0x5A, 0x02, 0x86, 0xFF, 0x0F, 0x89} }, /* 05 (x1024) */
2241 	{ {0x28, 0x10, 0x1A, 0x80, 0x19, 0x29, 0x0F} }  /* 06 (x1050) */
2242 };
2243 
2244 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2245 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] = {
2246 	{ {0x28, 0x92, 0xB6, 0x83, 0xB5, 0xCF, 0x81} }, /* 00 (x350) */
2247 	{ {0x28, 0x92, 0xD5, 0x82, 0xD4, 0xEE, 0x81} }, /* 01 (x400) */
2248 	{ {0x28, 0x92, 0xFD, 0x8A, 0xFC, 0x16, 0xB1} }, /* 02 (x480) */
2249 	{ {0x28, 0xD4, 0x39, 0x86, 0x57, 0x29, 0x81} }, /* 03 (x600) */
2250 	{ {0x28, 0xD4, 0x8D, 0x9A, 0xFF, 0x29, 0xA1} }, /* 04 (x768) */
2251 	{ {0x28, 0x5A, 0x0D, 0x9A, 0xFF, 0x29, 0xA9} }, /* 05 (x1024) */
2252 	{ {0x28, 0x10, 0x1A, 0x87, 0x19, 0x29, 0x8F} }  /* 06 (x1050) */
2253 };
2254 
2255 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2256 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] = {
2257 	{ {0xd4, 0x1F, 0x81, 0x84, 0x5D, 0xd5, 0x10} }, /* 00 (x350) */
2258 	{ {0x06, 0x3e, 0xb3, 0x86, 0x8F, 0x07, 0x20} }, /* 01 (x400) */
2259 	{ {0x56, 0xba, 0x03, 0x86, 0xDF, 0x57, 0x00} }, /* 02 (x480) */
2260 	{ {0xce, 0xF0, 0x7b, 0x8e, 0x57, 0xcf, 0xa0} }, /* 03 (x600) */
2261 	{ {0x76, 0xF5, 0x23, 0x86, 0xFF, 0x77, 0x90} }, /* 04 (x768) */
2262 	{ {0x76, 0x5A, 0x23, 0x86, 0xFF, 0x77, 0x89} }, /* 05 (x1024) */
2263 	{ {0x90, 0x10, 0x1A, 0x8E, 0x19, 0x91, 0x2F} }, /* 06 (x1050) */
2264 	{ {0x26, 0x11, 0xd3, 0x86, 0xaF, 0x27, 0x3f} }  /* 07 (x1200) */
2265 };
2266 
2267 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2268 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] = {
2269 	{ {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} },/* ; 00 (320x) */
2270 	{ {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} },/* ; 01 (360x) */
2271 	{ {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} },/* ; 02 (400x) */
2272 	{ {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2273 	{ {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 04 (640x) */
2274 	{ {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 05 (720x) */
2275 	{ {0x83, 0x63, 0x87, 0x68, 0x14, 0x00, 0x26, 0x00} },/* ; 06 (800x) */
2276 	{ {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
2277 };
2278 
2279 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2280 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] = {
2281 	{ {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} },/* ; 00 (x350) */
2282 	{ {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} },/* ; 01 (x400) */
2283 	{ {0xFE, 0x1F, 0xE0, 0x84, 0xDF, 0xFF, 0x10} },/* ; 02 (x480) */
2284 	{ {0x76, 0xF0, 0x58, 0x8C, 0x57, 0x77, 0xA0} },/* ; 03 (x600) */
2285 	{ {0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} } /* ; 04 (x768) */
2286 };
2287 
2288 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2289 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] = {
2290 	{ {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
2291 	{ {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
2292 	{ {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
2293 	{ {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2294 	{ {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
2295 	{ {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
2296 	{ {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
2297 	{ {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
2298 };
2299 
2300 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2301 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] = {
2302 	{ {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} },/* ; 00 (x350) */
2303 	{ {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} },/* ; 01 (x400) */
2304 	{ {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} },/* ; 02 (x480) */
2305 	{ {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} },/* ; 03 (x600) */
2306 	{ {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* ; 04 (x768) */
2307 };
2308 
2309 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2310 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] = {
2311 	{ {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 00 (320x) */
2312 	{ {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 01 (360x) */
2313 	{ {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
2314 	{ {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2315 	{ {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
2316 	{ {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
2317 	{ {0x92, 0x63, 0x96, 0x68, 0x1A, 0x00, 0x06, 0x00} },/* ; 06 (800x) */
2318 	{ {0xAE, 0x7F, 0x92, 0x84, 0x96, 0x00, 0x02, 0x00} },/* ; 07 (1024x) */
2319 	{ {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
2320 };
2321 
2322 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2323 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] = {
2324 	{ {0x86, 0xD1, 0xBC, 0x80, 0xBB, 0xE5, 0x00} },/* ; 00 (x350) */
2325 	{ {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} },/* ; 01 (x400) */
2326 	{ {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} },/* ; 02 (x480) */
2327 	{ {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} },/* ; 03 (x600) */
2328 	{ {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} },/* ; 04 (x768) */
2329 	{ {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
2330 };
2331 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2332 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] = {
2333 	{ {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
2334 	{ {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
2335 	{ {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
2336 	{ {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2337 	{ {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 04 (640x) */
2338 	{ {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 05 (720x) */
2339 	{ {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
2340 	{ {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} },/* ; 07 (1024x) */
2341 	{ {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
2342 };
2343 
2344 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2345 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = {
2346 	{ {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} },/* ; 00 (x350) */
2347 	{ {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} },/* ; 01 (x400) */
2348 	{ {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} },/* ; 02 (x480) */
2349 	{ {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} },/* ; 03 (x600) */
2350 	{ {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} },/* ; 04 (x768) */
2351 	{ {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
2352 };
2353 
2354 /*add for new UNIVGABIOS*/
2355 static struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = {
2356 	{Panel1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCD1024x768Data */
2357 	{Panel1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCD1024x768Data */
2358 	{Panel1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCD1024x768Data */
2359 	{Panel1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCD1280x1024Data */
2360 	{Panel1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCD1280x1024Data */
2361 	{Panel1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCD1280x1024Data */
2362 	{Panel1400x1050, 0x0019, 0x0001, 6}, /* XGI_ExtLCD1400x1050Data */
2363 	{Panel1400x1050, 0x0019, 0x0000, 7}, /* XGI_StLCD1400x1050Data */
2364 	{Panel1400x1050, 0x0018, 0x0010, 8}, /* XGI_CetLCD1400x1050Data */
2365 	{Panel1600x1200, 0x0019, 0x0001, 9}, /* XGI_ExtLCD1600x1200Data */
2366 	{Panel1600x1200, 0x0019, 0x0000, 10}, /* XGI_StLCD1600x1200Data */
2367 	{PanelRef60Hz, 0x0008, 0x0008, 11}, /* XGI_NoScalingData */
2368 	{Panel1024x768x75, 0x0019, 0x0001, 12}, /* XGI_ExtLCD1024x768x75Data */
2369 	{Panel1024x768x75, 0x0019, 0x0000, 13}, /* XGI_StLCD1024x768x75Data */
2370 	{Panel1024x768x75, 0x0018, 0x0010, 14}, /* XGI_CetLCD1024x768x75Data */
2371 	{Panel1280x1024x75, 0x0019, 0x0001, 15}, /* XGI_ExtLCD1280x1024x75Data*/
2372 	{Panel1280x1024x75, 0x0019, 0x0000, 16}, /* XGI_StLCD1280x1024x75Data */
2373 	{Panel1280x1024x75, 0x0018, 0x0010, 17}, /* XGI_CetLCD1280x1024x75Data*/
2374 	{PanelRef75Hz, 0x0008, 0x0008, 18}, /* XGI_NoScalingDatax75 */
2375 	{0xFF, 0x0000, 0x0000, 0} /* End of table */
2376 };
2377 
2378 static struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = {
2379 	{Panel1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCDDes1024x768Data */
2380 	{Panel1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCDDes1024x768Data */
2381 	{Panel1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCDDes1024x768Data */
2382 	{Panel1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCDDes1280x1024Data */
2383 	{Panel1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCDDes1280x1024Data */
2384 	{Panel1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCDDes1280x1024Data */
2385 	{Panel1400x1050, 0x0019, 0x0001, 6}, /* XGI_ExtLCDDes1400x1050Data */
2386 	{Panel1400x1050, 0x0019, 0x0000, 7}, /* XGI_StLCDDes1400x1050Data */
2387 	{Panel1400x1050, 0x0418, 0x0010, 8}, /* XGI_CetLCDDes1400x1050Data */
2388 	{Panel1400x1050, 0x0418, 0x0410, 9}, /* XGI_CetLCDDes1400x1050Data2 */
2389 	{Panel1600x1200, 0x0019, 0x0001, 10}, /* XGI_ExtLCDDes1600x1200Data */
2390 	{Panel1600x1200, 0x0019, 0x0000, 11}, /* XGI_StLCDDes1600x1200Data */
2391 	{PanelRef60Hz, 0x0008, 0x0008, 12}, /* XGI_NoScalingDesData */
2392 	{Panel1024x768x75, 0x0019, 0x0001, 13}, /*XGI_ExtLCDDes1024x768x75Data*/
2393 	{Panel1024x768x75, 0x0019, 0x0000, 14}, /* XGI_StLCDDes1024x768x75Data*/
2394 	{Panel1024x768x75, 0x0018, 0x0010, 15}, /*XGI_CetLCDDes1024x768x75Data*/
2395 	/* XGI_ExtLCDDes1280x1024x75Data */
2396 	{Panel1280x1024x75, 0x0019, 0x0001, 16},
2397 	/* XGI_StLCDDes1280x1024x75Data */
2398 	{Panel1280x1024x75, 0x0019, 0x0000, 17},
2399 	/* XGI_CetLCDDes1280x1024x75Data */
2400 	{Panel1280x1024x75, 0x0018, 0x0010, 18},
2401 	{PanelRef75Hz, 0x0008, 0x0008, 19}, /* XGI_NoScalingDesDatax75 */
2402 	{0xFF, 0x0000, 0x0000, 0}
2403 };
2404 
2405 static struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1[] = {
2406 	{Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDSCRT11024x768_1 */
2407 	{Panel1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDSCRT11024x768_2 */
2408 	{Panel1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDSCRT11280x1024_1 */
2409 	{Panel1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDSCRT11280x1024_2 */
2410 	{Panel1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDSCRT11400x1050_1 */
2411 	{Panel1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDSCRT11400x1050_2 */
2412 	{Panel1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDSCRT11600x1200_1 */
2413 	{Panel1024x768x75, 0x0018, 0x0000, 7}, /* XGI_LVDSCRT11024x768_1x75 */
2414 	{Panel1024x768x75, 0x0018, 0x0010, 8}, /* XGI_LVDSCRT11024x768_2x75 */
2415 	{Panel1280x1024x75, 0x0018, 0x0000, 9}, /*XGI_LVDSCRT11280x1024_1x75*/
2416 	{Panel1280x1024x75, 0x0018, 0x0010, 10},/*XGI_LVDSCRT11280x1024_2x75*/
2417 	{0xFF, 0x0000, 0x0000, 0}
2418 };
2419 
2420 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = {
2421 	{Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDS1024x768Data_1 */
2422 	{Panel1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDS1024x768Data_2 */
2423 	{Panel1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDS1280x1024Data_1 */
2424 	{Panel1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDS1280x1024Data_2 */
2425 	{Panel1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDS1400x1050Data_1 */
2426 	{Panel1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDS1400x1050Data_2 */
2427 	{Panel1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDS1600x1200Data_1 */
2428 	{PanelRef60Hz, 0x0008, 0x0008, 7}, /* XGI_LVDSNoScalingData */
2429 	{Panel1024x768x75, 0x0018, 0x0000, 8}, /* XGI_LVDS1024x768Data_1x75 */
2430 	{Panel1024x768x75, 0x0018, 0x0010, 9}, /* XGI_LVDS1024x768Data_2x75 */
2431 	{Panel1280x1024x75, 0x0018, 0x0000, 10}, /* XGI_LVDS1280x1024Data_1x75*/
2432 	{Panel1280x1024x75, 0x0018, 0x0010, 11},  /*XGI_LVDS1280x1024Data_2x75*/
2433 	{PanelRef75Hz, 0x0008, 0x0008, 12}, /* XGI_LVDSNoScalingDatax75 */
2434 	{0xFF, 0x0000, 0x0000, 0}
2435 };
2436 
2437 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = {
2438 	{Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDS1024x768Des_1 */
2439 	{Panel1024x768, 0x0618, 0x0410, 1}, /* XGI_LVDS1024x768Des_3 */
2440 	{Panel1024x768, 0x0018, 0x0010, 2}, /* XGI_LVDS1024x768Des_2 */
2441 	{Panel1280x1024, 0x0018, 0x0000, 3}, /* XGI_LVDS1280x1024Des_1 */
2442 	{Panel1280x1024, 0x0018, 0x0010, 4}, /* XGI_LVDS1280x1024Des_2 */
2443 	{Panel1400x1050, 0x0018, 0x0000, 5}, /* XGI_LVDS1400x1050Des_1 */
2444 	{Panel1400x1050, 0x0018, 0x0010, 6}, /* XGI_LVDS1400x1050Des_2 */
2445 	{Panel1600x1200, 0x0018, 0x0000, 7}, /* XGI_LVDS1600x1200Des_1 */
2446 	{PanelRef60Hz, 0x0008, 0x0008, 8},  /* XGI_LVDSNoScalingDesData */
2447 	{Panel1024x768x75, 0x0018, 0x0000, 9}, /* XGI_LVDS1024x768Des_1x75 */
2448 	{Panel1024x768x75, 0x0618, 0x0410, 10}, /* XGI_LVDS1024x768Des_3x75 */
2449 	{Panel1024x768x75, 0x0018, 0x0010, 11}, /* XGI_LVDS1024x768Des_2x75 */
2450 	{Panel1280x1024x75, 0x0018, 0x0000, 12}, /* XGI_LVDS1280x1024Des_1x75 */
2451 	{Panel1280x1024x75, 0x0018, 0x0010, 13}, /* XGI_LVDS1280x1024Des_2x75 */
2452 	{PanelRef75Hz, 0x0008, 0x0008, 14}, /* XGI_LVDSNoScalingDesDatax75 */
2453 	{0xFF, 0x0000, 0x0000, 0}
2454 };
2455 
2456 static struct XGI330_LCDDataTablStruct XGI_EPLCHLCDRegPtr[] = {
2457 	{Panel1024x768, 0x0000, 0x0000, 0}, /* XGI_CH7017LV1024x768 */
2458 	{Panel1400x1050, 0x0000, 0x0000, 1}, /* XGI_CH7017LV1400x1050 */
2459 	{0xFF, 0x0000, 0x0000, 0}
2460 };
2461 
2462 static struct XGI330_TVDataTablStruct XGI_TVDataTable[] = {
2463 	{0x09E1, 0x0001, 0}, /* XGI_ExtPALData */
2464 	{0x09E1, 0x0000, 1}, /* XGI_ExtNTSCData */
2465 	{0x09E1, 0x0801, 2}, /* XGI_StPALData */
2466 	{0x09E1, 0x0800, 3}, /* XGI_StNTSCData */
2467 	{0x49E0, 0x0100, 4}, /* XGI_ExtHiTVData */
2468 	{0x49E0, 0x4100, 5}, /* XGI_St2HiTVData */
2469 	{0x49E0, 0x4900, 13}, /* XGI_St1HiTVData */
2470 	{0x09E0, 0x0020, 6}, /* XGI_ExtYPbPr525iData */
2471 	{0x09E0, 0x0040, 7}, /* XGI_ExtYPbPr525pData */
2472 	{0x09E0, 0x0080, 8}, /* XGI_ExtYPbPr750pData */
2473 	{0x09E0, 0x0820, 9}, /* XGI_StYPbPr525iData */
2474 	{0x09E0, 0x0840, 10}, /* XGI_StYPbPr525pData */
2475 	{0x09E0, 0x0880, 11}, /* XGI_StYPbPr750pData */
2476 	{0xffff, 0x0000, 12}  /* END */
2477 };
2478 
2479 /* Chrontel 7017 TV List */
2480 static struct XGI330_TVDataTablStruct xgifb_chrontel_tv[] = {
2481 	{0x0011, 0x0000, 0}, /* UNTSC */
2482 	{0x0011, 0x0010, 1}, /* ONTSC */
2483 	{0x0011, 0x0001, 2}, /* UPAL */
2484 	{0x0011, 0x0011, 3}, /* OPAL */
2485 	{0xFFFF, 0x0000, 4}
2486 };
2487 
2488 static unsigned short LCDLenList[] = {
2489 	LVDSCRT1Len_H,
2490 	LVDSCRT1Len_V,
2491 	LVDSDataLen,
2492 	LCDDesDataLen,
2493 	LCDDataLen,
2494 	LCDDesDataLen,
2495 	0,
2496 	LCDDesDataLen,
2497 	LCDDesDataLen,
2498 	0
2499 };
2500 
2501 /* Dual link only */
2502 static struct XGI330_LCDCapStruct  XGI_LCDDLCapList[] = {
2503 /* LCDCap1024x768 */
2504 	{Panel1024x768, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
2505 	0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
2506 	0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
2507 /* LCDCap1280x1024 */
2508 	{Panel1280x1024, LCDDualLink+DefaultLCDCap, StLCDBToA,
2509 	0x012, 0x70, 0x03, VCLK108_2,
2510 	0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
2511 	0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2512 /* LCDCap1400x1050 */
2513 	{Panel1400x1050, LCDDualLink+DefaultLCDCap, StLCDBToA,
2514 	0x012, 0x70, 0x03, VCLK108_2,
2515 	 0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
2516 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2517 /* LCDCap1600x1200 */
2518 	{Panel1600x1200, LCDDualLink+DefaultLCDCap, LCDToFull,
2519 	0x012, 0xC0, 0x03, VCLK162,
2520 	 0x43, 0x22, 0x70, 0x24, 0x02, 0x14, 0x0A, 0x02, 0x00,
2521 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2522 /* LCDCap1024x768x75 */
2523 	{Panel1024x768x75, DefaultLCDCap, 0, 0x012, 0x60, 0, VCLK78_75,
2524 	 0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
2525 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
2526 /* LCDCap1280x1024x75 */
2527 	{Panel1280x1024x75, LCDDualLink+DefaultLCDCap, StLCDBToA,
2528 	0x012, 0x90, 0x03, VCLK135_5,
2529 	 0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
2530 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2531 /* LCDCapDefault */
2532 	{0xFF, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
2533 	0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
2534 	0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
2535 };
2536 
2537 static struct XGI330_LCDCapStruct  XGI_LCDCapList[] = {
2538 /* LCDCap1024x768 */
2539 	{Panel1024x768, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
2540 	0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
2541 	0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
2542 /* LCDCap1280x1024 */
2543 	{Panel1280x1024, DefaultLCDCap, StLCDBToA,
2544 	0x012, 0x70, 0x03, VCLK108_2,
2545 	0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
2546 	0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2547 /* LCDCap1400x1050 */
2548 	{Panel1400x1050, DefaultLCDCap, StLCDBToA,
2549 	0x012, 0x70, 0x03, VCLK108_2,
2550 	 0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
2551 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2552 /* LCDCap1600x1200 */
2553 	{Panel1600x1200, DefaultLCDCap, LCDToFull,
2554 	0x012, 0xC0, 0x03, VCLK162,
2555 	 0x5A, 0x23, 0x5A, 0x23, 0x02, 0x14, 0x0A, 0x02, 0x00,
2556 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2557 /* LCDCap1024x768x75 */
2558 	{Panel1024x768x75, DefaultLCDCap, 0, 0x012, 0x60, 0, VCLK78_75,
2559 	 0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
2560 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
2561 /* LCDCap1280x1024x75 */
2562 	{Panel1280x1024x75, DefaultLCDCap, StLCDBToA,
2563 	0x012, 0x90, 0x03, VCLK135_5,
2564 	 0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
2565 	 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
2566 /* LCDCapDefault */
2567 	{0xFF, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
2568 	0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
2569 	0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
2570 };
2571 
2572 static struct XGI_Ext2Struct XGI330_RefIndex[] = {
2573 	{Support32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
2574 	0x00, 0x10, 0x59, 320, 200},/* 00 */
2575 	{Support32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
2576 	0x00, 0x10, 0x00, 320, 400},/* 01 */
2577 	{Support32Bpp + SupportAllCRT2 + SyncNN, RES320x240, VCLK25_175,
2578 	0x04, 0x20, 0x50, 320, 240},/* 02 */
2579 	{Support32Bpp + SupportAllCRT2 + SyncPP, RES400x300, VCLK40,
2580 	0x05, 0x32, 0x51, 400, 300},/* 03 */
2581 	{Support32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES512x384,
2582 	VCLK65, 0x06, 0x43, 0x52, 512, 384},/* 04 */
2583 	{Support32Bpp + SupportAllCRT2 + SyncPN, RES640x400, VCLK25_175,
2584 	0x00, 0x14, 0x2f, 640, 400},/* 05 */
2585 	{Support32Bpp + SupportAllCRT2 + SyncNN, RES640x480x60, VCLK25_175,
2586 	0x04, 0x24, 0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */
2587 	{Support32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x72, VCLK31_5,
2588 	0x04, 0x24, 0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */
2589 	{Support32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x75, VCLK31_5,
2590 	0x47, 0x24, 0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */
2591 	{Support32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x85, VCLK36,
2592 	0x8A, 0x24, 0x2e, 640, 480},/* 09 640x480x85Hz */
2593 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x100, VCLK43_163,
2594 	0x00, 0x24, 0x2e, 640, 480},/* 0a 640x480x100Hz */
2595 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x120, VCLK52_406,
2596 	0x00, 0x24, 0x2e, 640, 480},/* 0b 640x480x120Hz */
2597 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x160, VCLK72_852,
2598 	0x00, 0x24, 0x2e, 640, 480},/* 0c 640x480x160Hz */
2599 	{Support32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x200, VCLK86_6,
2600 	0x00, 0x24, 0x2e, 640, 480},/* 0d 640x480x200Hz */
2601 	{Support32Bpp + NoSupportLCD + SyncPP, RES800x600x56, VCLK36,
2602 	0x05, 0x36, 0x6a, 800, 600},/* 0e 800x600x56Hz */
2603 	{Support32Bpp + NoSupportTV + SyncPP, RES800x600x60, VCLK40,
2604 	0x05, 0x36, 0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */
2605 	{Support32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x72, VCLK50,
2606 	0x48, 0x36, 0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */
2607 	{Support32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x75, VCLK49_5,
2608 	0x8B, 0x36, 0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */
2609 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES800x600x85, VCLK56_25,
2610 	0x00, 0x36, 0x6a, 800, 600},/* 12 800x600x85Hz */
2611 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x100, VCLK68_179,
2612 	0x00, 0x36, 0x6a, 800, 600},/* 13 800x600x100Hz */
2613 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x120, VCLK83_95,
2614 	0x00, 0x36, 0x6a, 800, 600},/* 14 800x600x120Hz */
2615 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x160, VCLK116_406,
2616 	0x00, 0x36, 0x6a, 800, 600},/* 15 800x600x160Hz */
2617 	{Support32Bpp + InterlaceMode + SyncPP, RES1024x768x43, VCLK44_9,
2618 	0x00, 0x47, 0x37, 1024, 768},/* 16 1024x768x43Hz */
2619 	/* 17 1024x768x60Hz (LCD 1024x768x60Hz) */
2620 	{Support32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES1024x768x60,
2621 	VCLK65, 0x06, 0x47, 0x37, 1024, 768},
2622 	{Support32Bpp + NoSupportHiVisionTV + SyncNN, RES1024x768x70, VCLK75,
2623 	0x49, 0x47, 0x37, 1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */
2624 	{Support32Bpp + NoSupportHiVisionTV + SyncPP, RES1024x768x75, VCLK78_75,
2625 	0x00, 0x47, 0x37, 1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */
2626 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1024x768x85, VCLK94_5,
2627 	0x8C, 0x47, 0x37, 1024, 768},/* 1a 1024x768x85Hz */
2628 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x100, VCLK113_309,
2629 	0x00, 0x47, 0x37, 1024, 768},/* 1b 1024x768x100Hz */
2630 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x120, VCLK139_054,
2631 	0x00, 0x47, 0x37, 1024, 768},/* 1c 1024x768x120Hz */
2632 	{Support32Bpp + SupportLCD + SyncPP, RES1280x960x60, VCLK108_2,
2633 	0x08, 0x58, 0x7b, 1280, 960},/* 1d 1280x960x60Hz */
2634 	{Support32Bpp + InterlaceMode + SyncPP, RES1280x1024x43, VCLK78_75,
2635 	0x00, 0x58, 0x3a, 1280, 1024},/* 1e 1280x1024x43Hz */
2636 	{Support32Bpp + NoSupportTV + SyncPP, RES1280x1024x60, VCLK108_2,
2637 	0x07, 0x58, 0x3a, 1280, 1024},/*1f 1280x1024x60Hz (LCD 1280x1024x60Hz)*/
2638 	{Support32Bpp + NoSupportTV + SyncPP, RES1280x1024x75, VCLK135_5,
2639 	0x00, 0x58, 0x3a, 1280, 1024},/*20 1280x1024x75Hz (LCD 1280x1024x75Hz)*/
2640 	{Support32Bpp + SyncPP, RES1280x1024x85, VCLK157_5,
2641 	0x00, 0x58, 0x3a, 1280, 1024},/* 21 1280x1024x85Hz */
2642 	/* 22 1600x1200x60Hz */
2643 	{Support32Bpp + SupportLCD + SyncPP + SupportCRT2in301C,
2644 	RES1600x1200x60, VCLK162, 0x09, 0x7A, 0x3c, 1600, 1200},
2645 	{Support32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x65, VCLK175,
2646 	0x00, 0x69, 0x3c, 1600, 1200},/* 23 1600x1200x65Hz */
2647 	{Support32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x70, VCLK189,
2648 	0x00, 0x69, 0x3c, 1600, 1200},/* 24 1600x1200x70Hz */
2649 	{Support32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x75, VCLK202_5,
2650 	0x00, 0x69, 0x3c, 1600, 1200},/* 25 1600x1200x75Hz */
2651 	{Support32Bpp + SyncPP, RES1600x1200x85, VCLK229_5,
2652 	0x00, 0x69, 0x3c, 1600, 1200},/* 26 1600x1200x85Hz */
2653 	{Support32Bpp + SyncPP, RES1600x1200x100, VCLK269_655,
2654 	0x00, 0x69, 0x3c, 1600, 1200},/* 27 1600x1200x100Hz */
2655 	{Support32Bpp + SyncPP, RES1600x1200x120, VCLK323_586,
2656 	0x00, 0x69, 0x3c, 1600, 1200},/* 28 1600x1200x120Hz */
2657 	{Support32Bpp + SupportLCD + SyncNP, RES1920x1440x60, VCLK234,
2658 	0x00, 0x00, 0x68, 1920, 1440},/* 29 1920x1440x60Hz */
2659 	{Support32Bpp + SyncPN, RES1920x1440x65, VCLK254_817,
2660 	0x00, 0x00, 0x68, 1920, 1440},/* 2a 1920x1440x65Hz */
2661 	{Support32Bpp + SyncPN, RES1920x1440x70, VCLK277_015,
2662 	0x00, 0x00, 0x68, 1920, 1440},/* 2b 1920x1440x70Hz */
2663 	{Support32Bpp + SyncPN, RES1920x1440x75, VCLK291_132,
2664 	0x00, 0x00, 0x68, 1920, 1440},/* 2c 1920x1440x75Hz */
2665 	{Support32Bpp + SyncPN, RES1920x1440x85, VCLK330_615,
2666 	0x00, 0x00, 0x68, 1920, 1440},/* 2d 1920x1440x85Hz */
2667 	{Support16Bpp + SyncPN, RES1920x1440x100, VCLK388_631,
2668 	0x00, 0x00, 0x68, 1920, 1440},/* 2e 1920x1440x100Hz */
2669 	{Support32Bpp + SupportLCD + SyncPN, RES2048x1536x60, VCLK266_952,
2670 	0x00, 0x00, 0x6c, 2048, 1536},/* 2f 2048x1536x60Hz */
2671 	{Support32Bpp + SyncPN, RES2048x1536x65, VCLK291_766,
2672 	0x00, 0x00, 0x6c, 2048, 1536},/* 30 2048x1536x65Hz */
2673 	{Support32Bpp + SyncPN, RES2048x1536x70, VCLK315_195,
2674 	0x00, 0x00, 0x6c, 2048, 1536},/* 31 2048x1536x70Hz */
2675 	{Support32Bpp + SyncPN, RES2048x1536x75, VCLK340_477,
2676 	0x00, 0x00, 0x6c, 2048, 1536},/* 32 2048x1536x75Hz */
2677 	{Support16Bpp + SyncPN, RES2048x1536x85, VCLK375_847,
2678 	0x00, 0x00, 0x6c, 2048, 1536},/* 33 2048x1536x85Hz */
2679 	{Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 +
2680 	 SyncPP + SupportYPbPr, RES800x480x60, VCLK39_77,
2681 	 0x08, 0x00, 0x70, 800, 480},/* 34 800x480x60Hz */
2682 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x75, VCLK49_5,
2683 	0x08, 0x00, 0x70, 800, 480},/* 35 800x480x75Hz */
2684 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x85, VCLK56_25,
2685 	0x08, 0x00, 0x70, 800, 480},/* 36 800x480x85Hz */
2686 	{Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 +
2687 	 SyncPP + SupportYPbPr, RES1024x576x60, VCLK65,
2688 	 0x09, 0x00, 0x71, 1024, 576},/* 37 1024x576x60Hz */
2689 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x75, VCLK78_75,
2690 	0x09, 0x00, 0x71, 1024, 576},/* 38 1024x576x75Hz */
2691 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x85, VCLK94_5,
2692 	0x09, 0x00, 0x71, 1024, 576},/* 39 1024x576x85Hz */
2693 	{Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 +
2694 	SyncPP + SupportYPbPr, RES1280x720x60, VCLK108_2,
2695 	0x0A, 0x00, 0x75, 1280, 720},/* 3a 1280x720x60Hz*/
2696 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x75, VCLK135_5,
2697 	0x0A, 0x00, 0x75, 1280, 720},/* 3b 1280x720x75Hz */
2698 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x85, VCLK157_5,
2699 	0x0A, 0x00, 0x75, 1280, 720},/* 3c 1280x720x85Hz */
2700 	{Support32Bpp + SupportTV + SyncNN, RES720x480x60, VCLK28_322,
2701 	0x06, 0x00, 0x31,  720, 480},/* 3d 720x480x60Hz */
2702 	{Support32Bpp + SupportTV + SyncPP, RES720x576x56, VCLK36,
2703 	0x06, 0x00, 0x32, 720, 576},/* 3e 720x576x56Hz */
2704 	{Support32Bpp + InterlaceMode + NoSupportLCD + SyncPP, RES856x480x79I,
2705 	VCLK35_2, 0x00, 0x00, 0x00,  856, 480},/* 3f 856x480x79I */
2706 	{Support32Bpp + NoSupportLCD + SyncNN, RES856x480x60, VCLK35_2,
2707 	0x00, 0x00, 0x00,  856, 480},/* 40 856x480x60Hz */
2708 	{Support32Bpp + NoSupportHiVisionTV + SyncPP, RES1280x768x60,
2709 	VCLK79_411, 0x08, 0x48, 0x23, 1280, 768},/* 41 1280x768x60Hz */
2710 	{Support32Bpp + NoSupportHiVisionTV + SyncPP, RES1400x1050x60,
2711 	VCLK122_61, 0x08, 0x69, 0x26, 1400, 1050},/* 42 1400x1050x60Hz */
2712 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x60, VCLK80_350,
2713 	0x37, 0x00, 0x20, 1152, 864},/* 43 1152x864x60Hz */
2714 	{Support32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x75, VCLK107_385,
2715 	0x37, 0x00, 0x20, 1152, 864},/* 44 1152x864x75Hz */
2716 	{Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x75,
2717 	VCLK125_999, 0x3A, 0x88, 0x7b, 1280, 960},/* 45 1280x960x75Hz */
2718 	{Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x85,
2719 	VCLK148_5, 0x0A, 0x88, 0x7b, 1280, 960},/* 46 1280x960x85Hz */
2720 	{Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x120,
2721 	VCLK217_325, 0x3A, 0x88, 0x7b, 1280, 960},/* 47 1280x960x120Hz */
2722 	{Support32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x160, VCLK139_054,
2723 	0x30, 0x47, 0x37, 1024, 768},/* 48 1024x768x160Hz */
2724 };
2725 
2726 static unsigned char XGI330_ScreenOffset[] = {
2727 	0x14, 0x19, 0x20, 0x28, 0x32, 0x40,
2728 	0x50, 0x64, 0x78, 0x80, 0x2d, 0x35,
2729 	0x57, 0x48
2730 };
2731 
2732 static struct XGI_StResInfoStruct XGI330_StResInfo[] = {
2733 	{640, 400},
2734 	{640, 350},
2735 	{720, 400},
2736 	{720, 350},
2737 	{640, 480}
2738 };
2739 
2740 static struct XGI_ModeResInfoStruct XGI330_ModeResInfo[] = {
2741 	{ 320,  200, 8,  8},
2742 	{ 320,  240, 8,  8},
2743 	{ 320,  400, 8,  8},
2744 	{ 400,  300, 8,  8},
2745 	{ 512,  384, 8,  8},
2746 	{ 640,  400, 8, 16},
2747 	{ 640,  480, 8, 16},
2748 	{ 800,  600, 8, 16},
2749 	{1024,  768, 8, 16},
2750 	{1280, 1024, 8, 16},
2751 	{1600, 1200, 8, 16},
2752 	{1920, 1440, 8, 16},
2753 	{2048, 1536, 8, 16},
2754 	{ 720,  480, 8, 16},
2755 	{ 720,  576, 8, 16},
2756 	{1280,  960, 8, 16},
2757 	{ 800,  480, 8, 16},
2758 	{1024,  576, 8, 16},
2759 	{1280,  720, 8, 16},
2760 	{ 856,  480, 8, 16},
2761 	{1280,  768, 8, 16},
2762 	{1400, 1050, 8, 16},
2763 	{1152,  864, 8, 16}
2764 };
2765 
2766 static unsigned char XGI330_OutputSelect = 0x40;
2767 static unsigned char XGI330_SoftSetting = 0x30;
2768 static unsigned char XGI330_SR07 = 0x18;
2769 
2770 static unsigned char XGI330_CR49[] = {0xaa, 0x88};
2771 static unsigned char XGI330_SR1F;
2772 static unsigned char XGI330_SR21 = 0xa3;
2773 static unsigned char XGI330_SR22 = 0xfb;
2774 static unsigned char XGI330_SR23 = 0xf6;
2775 static unsigned char XGI330_SR24 = 0xd;
2776 
2777 static unsigned char XGI330_CRT2Data_1_2;
2778 static unsigned char XGI330_CRT2Data_4_D;
2779 static unsigned char XGI330_CRT2Data_4_E;
2780 static unsigned char XGI330_CRT2Data_4_10 = 0x80;
2781 static unsigned short XGI330_RGBSenseData = 0xd1;
2782 static unsigned short XGI330_VideoSenseData = 0xb9;
2783 static unsigned short XGI330_YCSenseData = 0xb3;
2784 static unsigned short XGI330_RGBSenseData2 = 0x0190;     /*301b*/
2785 static unsigned short XGI330_VideoSenseData2 = 0x0110;
2786 static unsigned short XGI330_YCSenseData2 = 0x016B;
2787 static unsigned char XG40_I2CDefinition;
2788 static unsigned char XG20_CR97 = 0x10 ;
2789 
2790 static unsigned char XG21_DVOSetting;
2791 static unsigned char XG21_CR2E;
2792 static unsigned char XG21_CR2F;
2793 static unsigned char XG21_CR46;
2794 static unsigned char XG21_CR47;
2795 
2796 static unsigned char XG27_CR97 = 0xC1 ;
2797 static unsigned char XG27_SR36 = 0x30 ;
2798 static unsigned char XG27_CR8F = 0x0C ;
2799 static unsigned char XG27_CRD0[] = {
2800 	0, 0, 0, 0, 0, 0, 0, 0x82, 0x00, 0x66, 0x01, 0x00
2801 };
2802 static unsigned char XG27_CRDE[2];
2803 static unsigned char XG27_SR40 = 0x04 ;
2804 static unsigned char XG27_SR41 = 0x00 ;
2805 
2806 static struct XGI330_VCLKDataStruct XGI_VCLKData[] = {
2807 	/* SR2B,SR2C,SR2D */
2808 	{0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2809 	{0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2810 	{0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2811 	{0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2812 	{0x42, 0xE2,  40}, /* 04 (40.000MHz) */
2813 	{0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2814 	{0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2815 	{0x52, 0xE2,  49}, /* 07 (49.500MHz) */
2816 	{0x53, 0xE2,  50}, /* 08 (50.000MHz) */
2817 	{0x74, 0x67,  52}, /* 09 (52.406MHz) */
2818 	{0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2819 	{0x6C, 0xC3,  65}, /* 0B (65.000MHz) */
2820 	{0x46, 0x44,  67}, /* 0C (67.765MHz) */
2821 	{0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2822 	{0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2823 	{0x29, 0x61,  75}, /* 0F (75.000MHz) */
2824 	{0x6E, 0x46,  76}, /* 10 (75.800MHz) */
2825 	{0x2B, 0x61,  78}, /* 11 (78.750MHz) */
2826 	{0x31, 0x42,  79}, /* 12 (79.411MHz) */
2827 	{0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2828 	{0x46, 0x25,  84}, /* 14 (84.800MHz) */
2829 	{0x78, 0x29,  86}, /* 15 (86.600MHz) */
2830 	{0x62, 0x44,  94}, /* 16 (94.500MHz) */
2831 	{0x2B, 0x41, 104}, /* 17 (104.998MHz) */
2832 	{0x3A, 0x23, 105}, /* 18 (105.882MHz) */
2833 	{0x70, 0x44, 108}, /* 19 (107.862MHz) */
2834 	{0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2835 	{0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2836 	{0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2837 	{0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2838 	{0x54, 0x42, 135}, /* 1E (135.500MHz) */
2839 	{0x9C, 0x22, 139}, /* 1F (139.275MHz) */
2840 	{0x41, 0x22, 157}, /* 20 (157.500MHz) */
2841 	{0x70, 0x24, 162}, /* 21 (161.793MHz) */
2842 	{0x30, 0x21, 175}, /* 22 (175.000MHz) */
2843 	{0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2844 	{0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2845 	{0x62, 0x06, 202}, /* 25 (202.500MHz) */
2846 	{0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2847 	{0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2848 	{0x34, 0x02, 253}, /* 28 (252.699MHz) */
2849 	{0x58, 0x04, 255}, /* 29 (254.817MHz) */
2850 	{0x24, 0x01, 265}, /* 2A (265.728MHz) */
2851 	{0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2852 	{0x70, 0x05, 270}, /* 2C (269.65567MHz) */
2853 	{0x25, 0x01, 272}, /* 2D (272.04199MHz) */
2854 	{0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2855 	{0x27, 0x01, 286}, /* 2F (286.359985MHz) */
2856 	{0xB3, 0x04, 291}, /* 30 (291.13266MHz) */
2857 	{0xBC, 0x05, 292}, /* 31 (291.766MHz) */
2858 	{0xF6, 0x0A, 310}, /* 32 (309.789459MHz) */
2859 	{0x95, 0x01, 315}, /* 33 (315.195MHz) */
2860 	{0xF0, 0x09, 324}, /* 34 (323.586792MHz) */
2861 	{0xFE, 0x0A, 331}, /* 35 (330.615631MHz) */
2862 	{0xF3, 0x09, 332}, /* 36 (332.177612MHz) */
2863 	{0x5E, 0x03, 340}, /* 37 (340.477MHz) */
2864 	{0xE8, 0x07, 376}, /* 38 (375.847504MHz) */
2865 	{0xDE, 0x06, 389}, /* 39 (388.631439MHz) */
2866 	{0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2867 	{0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2868 	{0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2869 	{0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2870 	{0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2871 	{0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2872 	{0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2873 	{0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2874 	{0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2875 	{0x24, 0x46,  25}, /* 43 (25.175MHz) */
2876 	{0x26, 0x64,  28}, /* 44 (28.322MHz) */
2877 	{0x37, 0x64,  40}, /* 45 (40.000MHz) */
2878 	{0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2879 	{0x37, 0x61, 100}, /* 47 (100.00MHz) */
2880 	{0x78, 0x27, 108}, /* 48 (108.200MHz) */
2881 	{0xBF, 0xC8,  35}, /* 49 (35.2MHz) */
2882 	{0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2883 	{0x2C, 0x61,  80}, /* 4B (80.350Mhz) */
2884 	{0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2885 	{0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2886 	{0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2887 	{0x28, 0x26, 322}, /* 4F (322.273MHz) */
2888 	{0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2889 	{0x57, 0x24, 126}, /* 51 (125.999MHz) */
2890 	{0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2891 	{0x42, 0x61, 120}, /* 53 (120.839MHz) */
2892 	{0x62, 0x61, 178}, /* 54 (178.992MHz) */
2893 	{0x59, 0x22, 217}, /* 55 (217.325MHz) */
2894 	{0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2895 	{0x52, 0x63,  74}, /* 57 (74.25MHz) */
2896 	{0xFF, 0x00,   0}  /* End mark */
2897 };
2898 
2899 static struct XGI330_VCLKDataStruct XGI_VBVCLKData[] = {
2900 	{0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2901 	{0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2902 	{0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2903 	{0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2904 	{0x42, 0x47,  40}, /* 04 (40.000MHz) */
2905 	{0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2906 	{0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2907 	{0x52, 0x47,  49}, /* 07 (49.500MHz) */
2908 	{0x53, 0x47,  50}, /* 08 (50.000MHz) */
2909 	{0x74, 0x67,  52}, /* 09 (52.406MHz) */
2910 	{0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2911 	{0x35, 0x62,  65}, /* 0B (65.000MHz) */
2912 	{0x46, 0x44,  67}, /* 0C (67.765MHz) */
2913 	{0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2914 	{0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2915 	{0x29, 0x61,  75}, /* 0F (75.000MHz) */
2916 	{0x6D, 0x46,  75}, /* 10 (75.800MHz) */
2917 	{0x41, 0x43,  78}, /* 11 (78.750MHz) */
2918 	{0x31, 0x42,  79}, /* 12 (79.411MHz) */
2919 	{0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2920 	{0x46, 0x25,  84}, /* 14 (84.800MHz) */
2921 	{0x78, 0x29,  86}, /* 15 (86.600MHz) */
2922 	{0x62, 0x44,  94}, /* 16 (94.500MHz) */
2923 	{0x2B, 0x22, 104}, /* 17 (104.998MHz) */
2924 	{0x49, 0x24, 105}, /* 18 (105.882MHz) */
2925 	{0xF8, 0x2F, 108}, /* 19 (108.279MHz) */
2926 	{0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2927 	{0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2928 	{0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2929 	{0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2930 	{0xD4, 0x28, 135}, /* 1E (135.220MHz) */
2931 	{0xEA, 0x2A, 139}, /* 1F (139.275MHz) */
2932 	{0x41, 0x22, 157}, /* 20 (157.500MHz) */
2933 	{0x70, 0x24, 162}, /* 21 (161.793MHz) */
2934 	{0x30, 0x21, 175}, /* 22 (175.000MHz) */
2935 	{0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2936 	{0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2937 	{0x70, 0x07, 202}, /* 25 (202.500MHz) */
2938 	{0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2939 	{0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2940 	{0x34, 0x02, 253}, /* 28 (252.699997 MHz) */
2941 	{0x58, 0x04, 255}, /* 29 (254.817MHz) */
2942 	{0x24, 0x01, 265}, /* 2A (265.728MHz) */
2943 	{0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2944 	{0x70, 0x05, 270}, /* 2C (269.65567 MHz) */
2945 	{0x25, 0x01, 272}, /* 2D (272.041992 MHz) */
2946 	{0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2947 	{0x27, 0x01, 286}, /* 2F (286.359985 MHz) */
2948 	{0x3C, 0x02, 291}, /* 30 (291.132660 MHz) */
2949 	{0xEF, 0x0A, 292}, /* 31 (291.766MHz) */
2950 	{0xF6, 0x0A, 310}, /* 32 (309.789459 MHz) */
2951 	{0x95, 0x01, 315}, /* 33 (315.195MHz) */
2952 	{0xF0, 0x09, 324}, /* 34 (323.586792 MHz) */
2953 	{0xFE, 0x0A, 331}, /* 35 (330.615631 MHz) */
2954 	{0xF3, 0x09, 332}, /* 36 (332.177612 MHz) */
2955 	{0xEA, 0x08, 340}, /* 37 (340.477MHz) */
2956 	{0xE8, 0x07, 376}, /* 38 (375.847504 MHz) */
2957 	{0xDE, 0x06, 389}, /* 39 (388.631439 MHz) */
2958 	{0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2959 	{0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2960 	{0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2961 	{0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2962 	{0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2963 	{0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2964 	{0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2965 	{0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2966 	{0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2967 	{0x24, 0x46,  25}, /* 43 (25.175MHz) */
2968 	{0x26, 0x64,  28}, /* 44 (28.322MHz) */
2969 	{0x37, 0x64,  40}, /* 45 (40.000MHz) */
2970 	{0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2971 	{0x37, 0x61, 100}, /* 47 (100.00MHz) */
2972 	{0x78, 0x27, 108}, /* 48 (108.200MHz) */
2973 	{0xBF, 0xC8, 35 }, /* 49 (35.2MHz) */
2974 	{0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2975 	{0x2C, 0x61, 80 }, /* 4B (80.350Mhz) */
2976 	{0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2977 	{0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2978 	{0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2979 	{0x28, 0x26, 322}, /* 4F (322.273MHz) */
2980 	{0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2981 	{0x57, 0x24, 126}, /* 51 (125.999MHz) */
2982 	{0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2983 	{0x42, 0x61, 120}, /* 53 (120.839MHz) */
2984 	{0x62, 0x61, 178}, /* 54 (178.992MHz) */
2985 	{0x59, 0x22, 217}, /* 55 (217.325MHz) */
2986 	{0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2987 	{0x52, 0x63,  74}, /* 57 (74.25MHz) */
2988 	{0xFF, 0x00,   0}  /* End mark */
2989 };
2990 
2991 static unsigned char XGI301TVDelayList[] = {
2992 	0x22, /* ; 0 ExtNTSCDelay */
2993 	0x22, /* ; 1 StNTSCDelay */
2994 	0x22, /* ; 2 ExtPALDelay */
2995 	0x22, /* ; 3 StPALDelay */
2996 	0x88, /* ; 4 ExtHiTVDelay(1080i) */
2997 	0xBB, /* ; 5 StHiTVDelay(1080i) */
2998 	0x22, /* ; 6 ExtYPbPrDelay(525i) */
2999 	0x22, /* ; 7 StYPbPrDealy(525i) */
3000 	0x22, /* ; 8 ExtYPbPrDelay(525p) */
3001 	0x22, /* ; 9 StYPbPrDealy(525p) */
3002 	0x22, /* ; A ExtYPbPrDelay(750p) */
3003 	0x22  /* B StYPbPrDealy(750p) */
3004 };
3005 
3006 static unsigned char XGI301TVDelayList2[] = {
3007 	0x22, /* ; 0 ExtNTSCDelay */
3008 	0x22, /* ; 1 StNTSCDelay */
3009 	0x22, /* ; 2 ExtPALDelay */
3010 	0x22, /* ; 3 StPALDelay */
3011 	0x22, /* ; 4 ExtHiTVDelay */
3012 	0x22, /* ; 5 StHiTVDelay */
3013 	0x22, /* ; 6 ExtYPbPrDelay(525i) */
3014 	0x22, /* ; 7 StYPbPrDealy(525i) */
3015 	0x22, /* ; 8 ExtYPbPrDelay(525p) */
3016 	0x22, /* ; 9 StYPbPrDealy(525p) */
3017 	0x22, /* ; A ExtYPbPrDelay(750p) */
3018 	0x22  /* ; B StYPbPrDealy(750p) */
3019 };
3020 
3021 
3022 static unsigned char TVAntiFlickList[] = {/* NTSCAntiFlicker */
3023 	0x04, /* ; 0 Adaptive */
3024 	0x00, /* ; 1 new anti-flicker ? */
3025 
3026 	0x04, /* ; 0 Adaptive */
3027 	0x08, /* ; 1 new anti-flicker ? */
3028 
3029 	0x04, /* ; 0 ? */
3030 	0x00  /* ; 1 new anti-flicker ? */
3031 };
3032 
3033 
3034 static unsigned char TVEdgeList[] = {
3035 	0x00, /* ; 0 NTSC No Edge enhance */
3036 	0x04, /* ; 1 NTSC Adaptive Edge enhance */
3037 	0x00, /* ; 0 PAL No Edge enhance */
3038 	0x04, /* ; 1 PAL Adaptive Edge enhance */
3039 	0x00, /* ; 0 HiTV */
3040 	0x00  /* ; 1 HiTV */
3041 };
3042 
3043 static unsigned long TVPhaseList[] = {
3044 	0x08BAED21, /* ; 0 NTSC phase */
3045 	0x00E3052A, /* ; 1 PAL phase */
3046 	0x9B2EE421, /* ; 2 PAL-M phase */
3047 	0xBA3EF421, /* ; 3 PAL-N phase */
3048 	0xA7A28B1E, /* ; 4 NTSC 1024x768 */
3049 	0xE00A831E, /* ; 5 PAL-M 1024x768 */
3050 	0x00000000, /* ; 6 reserved */
3051 	0x00000000, /* ; 7 reserved */
3052 	0xD67BF021, /* ; 8 NTSC phase */
3053 	0xE986092A, /* ; 9 PAL phase */
3054 	0xA4EFE621, /* ; A PAL-M phase */
3055 	0x4694F621, /* ; B PAL-N phase */
3056 	0x8BDE711C, /* ; C NTSC 1024x768 */
3057 	0xE00A831E  /* ; D PAL-M 1024x768 */
3058 };
3059 
3060 static unsigned char NTSCYFilter1[] = {
3061 	0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
3062 	0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
3063 	0xEB, 0x04, 0x25, 0x18, /* 2 : 640x text mode */
3064 	0xF1, 0x04, 0x1F, 0x18, /* 3 : 720x text mode */
3065 	0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
3066 	0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
3067 	0xEB, 0x15, 0x25, 0xF6  /* 6 : 800x gra. mode */
3068 };
3069 
3070 static unsigned char PALYFilter1[] = {
3071 	0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
3072 	0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
3073 	0xF1, 0xF7, 0x1F, 0x32, /* 2 : 640x text mode */
3074 	0xF3, 0x00, 0x1D, 0x20, /* 3 : 720x text mode */
3075 	0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
3076 	0xF1, 0xF7, 0x1F, 0x32, /* 5 : 640x gra. mode */
3077 	0xFC, 0xFB, 0x14, 0x2A  /* 6 : 800x gra. mode */
3078 };
3079 
3080 static unsigned char xgifb_palmn_yfilter1[] = {
3081 	0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
3082 	0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
3083 	0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */
3084 	0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */
3085 	0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
3086 	0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
3087 	0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */
3088 	0xFF, 0xFF, 0xFF, 0xFF  /* End of Table */
3089 };
3090 
3091 static unsigned char xgifb_yfilter2[] = {
3092 	0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
3093 	0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
3094 	0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
3095 	0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
3096 	0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
3097 	0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
3098 	0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
3099 	0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
3100 };
3101 
3102 static unsigned char XGI_NTSC1024AdjTime[] = {
3103 	0xa7, 0x07, 0xf2, 0x6e, 0x17, 0x8b, 0x73, 0x53,
3104 	0x13, 0x40, 0x34, 0xF4, 0x63, 0xBB, 0xCC, 0x7A,
3105 	0x58, 0xe4, 0x73, 0xd0, 0x13
3106 };
3107 
3108 static struct XGI301C_Tap4TimingStruct xgifb_tap4_timing[] = {
3109 	{0, {
3110 	0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
3111 	0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
3112 	0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
3113 	0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
3114 	0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
3115 	0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
3116 	0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
3117 	0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E  /* ; F8-FF */
3118 	}
3119 	}
3120 };
3121 
3122 static struct XGI301C_Tap4TimingStruct PALTap4Timing[] = {
3123 	{600,	{
3124 		0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
3125 		0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
3126 		0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
3127 		0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
3128 		0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
3129 		0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
3130 		0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
3131 		0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04  /* ; F8-FF */
3132 		}
3133 	},
3134 	{768,	{
3135 		0x08, 0x12, 0x08, 0x7E, 0x07, 0x12, 0x09, 0x7E, /* ; C0-C7 */
3136 		0x06, 0x12, 0x0A, 0x7E, 0x05, 0x11, 0x0B, 0x7F, /* ; C8-CF */
3137 		0x04, 0x11, 0x0C, 0x7F, 0x03, 0x11, 0x0C, 0x00, /* ; D0-D7 */
3138 		0x03, 0x10, 0x0D, 0x00, 0x02, 0x0F, 0x0E, 0x01, /* ; D8-DF */
3139 		0x01, 0x0F, 0x0F, 0x01, 0x01, 0x0E, 0x0F, 0x02, /* ; E0-E7 */
3140 		0x00, 0x0D, 0x10, 0x03, 0x7F, 0x0C, 0x11, 0x04, /* ; EA-EF */
3141 		0x7F, 0x0C, 0x11, 0x04, 0x7F, 0x0B, 0x11, 0x05, /* ; F0-F7 */
3142 		0x7E, 0x0A, 0x12, 0x06, 0x7E, 0x09, 0x12, 0x07  /* ; F8-FF */
3143 		}
3144 	},
3145 	{0xFFFF, {
3146 		 0x04, 0x1A, 0x04, 0x7E, 0x02, 0x1B, 0x05, 0x7E, /* ; C0-C7 */
3147 		 0x01, 0x1A, 0x07, 0x7E, 0x00, 0x1A, 0x09, 0x7D, /* ; C8-CF */
3148 		 0x7F, 0x19, 0x0B, 0x7D, 0x7E, 0x18, 0x0D, 0x7D, /* ; D0-D7 */
3149 		 0x7D, 0x17, 0x10, 0x7C, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
3150 		 0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
3151 		 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0D, 0x18, 0x7F, /* ; EA-EF */
3152 		 0x7D, 0x0B, 0x19, 0x7F, 0x7D, 0x09, 0x1A, 0x00, /* ; F0-F7 */
3153 		 0x7D, 0x07, 0x1A, 0x02, 0x7E, 0x05, 0x1B, 0x02  /* ; F8-FF */
3154 		 }
3155 	}
3156 };
3157 
3158 static struct XGI301C_Tap4TimingStruct xgifb_ntsc_525_tap4_timing[] = {
3159 	{480,	{
3160 		0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
3161 		0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
3162 		0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
3163 		0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
3164 		0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
3165 		0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
3166 		0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
3167 		0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
3168 		}
3169 	},
3170 	{600,	{
3171 		0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
3172 		0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
3173 		0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
3174 		0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
3175 		0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
3176 		0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
3177 		0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
3178 		0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
3179 		}
3180 	},
3181 	{0xFFFF, {
3182 		 0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
3183 		 0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
3184 		 0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
3185 		 0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
3186 		 0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
3187 		 0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
3188 		 0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
3189 		 0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
3190 		 }
3191 	}
3192 };
3193 
3194 static struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] = {
3195 	{0xFFFF, {
3196 		 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
3197 		 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
3198 		 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
3199 		 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
3200 		 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
3201 		 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
3202 		 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
3203 		 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* F8-FF */
3204 		 }
3205 	}
3206 };
3207