]> Pileus Git - ~andy/linux/blob - drivers/staging/xgifb/vb_table.h
Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb...
[~andy/linux] / drivers / staging / xgifb / vb_table.h
1 #define  Tap4
2
3 /* yilin modify for xgi20 */
4 static struct XGI_MCLKDataStruct XGI340New_MCLKData[] = {
5         {0x16, 0x01, 0x01, 166},
6         {0x19, 0x02, 0x01, 124},
7         {0x7C, 0x08, 0x01, 200},
8         {0x79, 0x06, 0x01, 250},
9         {0x29, 0x01, 0x81, 301},
10         {0x5c, 0x23, 0x01, 166},
11         {0x5c, 0x23, 0x01, 166},
12         {0x5c, 0x23, 0x01, 166}
13 };
14
15 static struct XGI_MCLKDataStruct XGI27New_MCLKData[] = {
16         {0x5c, 0x23, 0x01, 166},
17         {0x19, 0x02, 0x01, 124},
18         {0x7C, 0x08, 0x80, 200},
19         {0x79, 0x06, 0x80, 250},
20         {0x29, 0x01, 0x81, 300},
21         {0x5c, 0x23, 0x01, 166},
22         {0x5c, 0x23, 0x01, 166},
23         {0x5c, 0x23, 0x01, 166}
24 };
25
26 /* yilin modify for xgi20 */
27 static struct XGI_ECLKDataStruct XGI340_ECLKData[] = {
28         {0x5c, 0x23, 0x01, 166},
29         {0x55, 0x84, 0x01, 123},
30         {0x7C, 0x08, 0x01, 200},
31         {0x79, 0x06, 0x01, 250},
32         {0x29, 0x01, 0x81, 301},
33         {0x5c, 0x23, 0x01, 166},
34         {0x5c, 0x23, 0x01, 166},
35         {0x5c, 0x23, 0x01, 166}
36 };
37
38 static unsigned char XGI340_SR13[4][8] = {
39         {0x35, 0x45, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR13 */
40         {0x41, 0x51, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR14 */
41         {0x31, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR18 */
42         {0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}  /* SR1B */
43 };
44
45 static unsigned char XGI340_cr41[24][8] = {
46         {0x20, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 0 CR41 */
47         {0xc4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 1 CR8A */
48         {0xc4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 2 CR8B */
49         {0xb5, 0xa4, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00},
50         {0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00},
51         {0x90, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 5 CR68 */
52         {0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 6 CR69 */
53         {0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 7 CR6A */
54         {0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 8 CR6D */
55         {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 9 CR80 */
56         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 10 CR81 */
57         {0x88, 0xa8, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 11 CR82 */
58         {0x44, 0x44, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 12 CR85 */
59         {0x48, 0x48, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 13 CR86 */
60         {0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 14 CR90 */
61         {0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 15 CR91 */
62         {0x0a, 0x0a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 16 CR92 */
63         {0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 17 CR93 */
64         {0x10, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 18 CR94 */
65         {0x11, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 19 CR95 */
66         {0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 20 CR96 */
67         {0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 21 CRC3 */
68         {0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 22 CRC4 */
69         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}  /* 23 CRC5 */
70 };
71
72 static unsigned char XGI27_cr41[24][8] = {
73         {0x20, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 0 CR41 */
74         {0xC4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 1 CR8A */
75         {0xC4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 2 CR8B */
76         {0xB5, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 3 CR40[7],
77                                                                CR99[2:0],
78                                                                CR45[3:0]*/
79         {0xf0, 0xf5, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 4 CR59 */
80         {0x90, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 5 CR68 */
81         {0x77, 0x67, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 6 CR69 */
82         {0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 7 CR6A */
83         {0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 8 CR6D */
84         {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 9 CR80 */
85         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 10 CR81 */
86         {0x88, 0xcc, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 11 CR82 */
87         {0x44, 0x88, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 12 CR85 */
88         {0x48, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 13 CR86 */
89         {0x54, 0x32, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 14 CR90 */
90         {0x54, 0x33, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 15 CR91 */
91         {0x0a, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 16 CR92 */
92         {0x44, 0x63, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 17 CR93 */
93         {0x10, 0x14, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 18 CR94 */
94         {0x11, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 19 CR95 */
95         {0x05, 0x22, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 20 CR96 */
96         {0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 21 CRC3 */
97         {0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 22 CRC4 */
98         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}  /* 23 CRC5 */
99 };
100
101 static unsigned char XGI340_CR6B[8][4] = {
102         {0xaa, 0xaa, 0xaa, 0xaa},
103         {0xaa, 0xaa, 0xaa, 0xaa},
104         {0xaa, 0xaa, 0xaa, 0xaa},
105         {0x00, 0x00, 0x00, 0x00},
106         {0x00, 0x00, 0x00, 0x00},
107         {0x00, 0x00, 0x00, 0x00},
108         {0x00, 0x00, 0x00, 0x00},
109         {0x00, 0x00, 0x00, 0x00}
110 };
111
112 static unsigned char XGI340_CR6E[8][4] = {
113         {0x00, 0x00, 0x00, 0x00},
114         {0x00, 0x00, 0x00, 0x00},
115         {0x00, 0x00, 0x00, 0x00},
116         {0x00, 0x00, 0x00, 0x00},
117         {0x00, 0x00, 0x00, 0x00},
118         {0x00, 0x00, 0x00, 0x00},
119         {0x00, 0x00, 0x00, 0x00},
120         {0x00, 0x00, 0x00, 0x00}
121 };
122
123 static unsigned char XGI340_CR6F[8][32] = {
124         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
125          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
126          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
127          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
128         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
132         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
134          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
135          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
136         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
137          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
138          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
140         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
141          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
144         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
145          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
146          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
148         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
151          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
152         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
156 };
157
158 static unsigned char XGI340_CR89[8][2] = {
159         {0x00, 0x00},
160         {0x00, 0x00},
161         {0x00, 0x00},
162         {0x00, 0x00},
163         {0x00, 0x00},
164         {0x00, 0x00},
165         {0x00, 0x00},
166         {0x00, 0x00}
167 };
168 /* CR47,CR48,CR49,CR4A,CR4B,CR4C,CR70,CR71,CR74,CR75,CR76,CR77 */
169 static unsigned char XGI340_AGPReg[12] = {
170         0x28, 0x23, 0x00, 0x20, 0x00, 0x20,
171         0x00, 0x05, 0xd0, 0x10, 0x10, 0x00
172 };
173
174 static unsigned char XGI340_SR16[4] = {0x03, 0x83, 0x03, 0x83};
175
176 #if 0
177 static unsigned char XGI330_SR15_1[8][8] = {
178         {0x0, 0x0, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00},
179         {0x5, 0x15, 0x15, 0x15, 0x15, 0x15, 0x00, 0x00},
180         {0xba, 0xba, 0xba, 0xba, 0xBA, 0xBA, 0x00, 0x00},
181         {0x55, 0x57, 0x57, 0xAB, 0xAB, 0xAB, 0x00, 0x00},
182         {0x60, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00},
183         {0x0, 0x80, 0x80, 0x80, 0x83, 0x83, 0x00, 0x00},
184         {0x50, 0x50, 0x50, 0x3C, 0x3C, 0x3C, 0x00, 0x00},
185         {0x0, 0xa5, 0xfb, 0xf6, 0xF6, 0xF6, 0x00, 0x00}
186 };
187
188 static unsigned char XGI330_cr40_1[15][8] = {
189         {0x66, 0x40, 0x40, 0x28, 0x24, 0x24, 0x00, 0x00},
190         {0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
191         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
192         {0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00},
193         {0x00, 0xf0, 0xf0, 0xf0, 0xF0, 0xF0, 0x00, 0x00},
194         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
195         {0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00},
196         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
197         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
198         {0x88, 0x88, 0x88, 0xAA, 0xAC, 0xAC, 0x00, 0x00},
199         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
200         {0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00},
201         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
202         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
203         {0x00, 0xA2, 0x00, 0x00, 0xA2, 0xA2, 0x00, 0x00},
204 };
205 #endif
206
207 static unsigned char XGI330_sr25[] = {0x00, 0x0};
208 static unsigned char XGI330_sr31 = 0xc0;
209 static unsigned char XGI330_sr32 = 0x11;
210 static unsigned char XGI330_SR33 = 0x00;
211 static unsigned char XG40_CRCF = 0x13;
212 static unsigned char XG40_DRAMTypeDefinition = 0xFF ;
213
214 static struct XGI_StStruct XGI330_SModeIDTable[] = {
215         {0x01, 0x9208, 0x01, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00},
216         {0x01, 0x1210, 0x14, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00},
217         {0x01, 0x1010, 0x17, 0x02, 0x11, 0x00, 0x00, 0x01, 0x01},
218         {0x03, 0x8208, 0x03, 0x00, 0x14, 0x00, 0x00, 0x01, 0x02},
219         {0x03, 0x0210, 0x16, 0x01, 0x04, 0x01, 0x00, 0x01, 0x02},
220         {0x03, 0x0010, 0x18, 0x02, 0x15, 0x00, 0x00, 0x01, 0x03},
221         {0x05, 0x9209, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04},
222         {0x06, 0x8209, 0x06, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05},
223         {0x07, 0x0000, 0x07, 0x03, 0x05, 0x03, 0x00, 0x01, 0x03},
224         {0x07, 0x0000, 0x19, 0x02, 0x15, 0x02, 0x00, 0x01, 0x03},
225         {0x0d, 0x920a, 0x0d, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04},
226         {0x0e, 0x820a, 0x0e, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05},
227         {0x0f, 0x0202, 0x11, 0x01, 0x04, 0x01, 0x00, 0x00, 0x05},
228         {0x10, 0x0212, 0x12, 0x01, 0x04, 0x01, 0x00, 0x00, 0x05},
229         {0x11, 0x0212, 0x1a, 0x04, 0x24, 0x04, 0x00, 0x00, 0x05},
230         {0x12, 0x0212, 0x1b, 0x04, 0x24, 0x04, 0x00, 0x00, 0x05},
231         {0x13, 0x021b, 0x1c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04},
232         {0x12, 0x0010, 0x18, 0x02, 0x24, 0x02, 0x00, 0x00, 0x05},/* St_CRT2CRTC2
233                                                                     not sure */
234         {0x12, 0x0210, 0x18, 0x01, 0x24, 0x01, 0x00, 0x00, 0x05},/* St_CRT2CRTC2
235                                                                     not sure */
236         {0xff, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
237 };
238
239
240 static struct XGI_ExtStruct XGI330_EModeIDTable[] = {
241         {0x6a, 0x2212, 0x0407, 0x3a81, 0x0102, 0x08,
242                 0x07, 0x00, 0x00, 0x07, 0x0e},
243         {0x2e, 0x0a1b, 0x0306, 0x3a57, 0x0101, 0x08,
244                 0x06, 0x00, 0x00, 0x05, 0x06},
245         {0x2f, 0x0a1b, 0x0305, 0x3a50, 0x0100, 0x08,
246                 0x05, 0x00, 0x00, 0x05, 0x05},
247         {0x30, 0x2a1b, 0x0407, 0x3a81, 0x0103, 0x08,
248                 0x07, 0x00, 0x00, 0x07, 0x0e},
249         {0x31, 0x0a1b, 0x030d, 0x3b85, 0x0000, 0x08,
250                 0x0d, 0x00, 0x00, 0x06, 0x3d},
251         {0x32, 0x0a1b, 0x0a0e, 0x3b8c, 0x0000, 0x08,
252                 0x0e, 0x00, 0x00, 0x06, 0x3e},
253         {0x33, 0x0a1d, 0x0a0d, 0x3b85, 0x0000, 0x08,
254                 0x0d, 0x00, 0x00, 0x06, 0x3d},
255         {0x34, 0x2a1d, 0x0a0e, 0x3b8c, 0x0000, 0x08,
256                 0x0e, 0x00, 0x00, 0x06, 0x3e},
257         {0x35, 0x0a1f, 0x0a0d, 0x3b85, 0x0000, 0x08,
258                 0x0d, 0x00, 0x00, 0x06, 0x3d},
259         {0x36, 0x2a1f, 0x0a0e, 0x3b8c, 0x0000, 0x08,
260                 0x0e, 0x00, 0x00, 0x06, 0x3e},
261         {0x37, 0x0212, 0x0508, 0x3aab, 0x0104, 0x08,
262                 0x08, 0x00, 0x00, 0x00, 0x16},
263         {0x38, 0x0a1b, 0x0508, 0x3aab, 0x0105, 0x08,
264                 0x08, 0x00, 0x00, 0x00, 0x16},
265         {0x3a, 0x0e3b, 0x0609, 0x3adc, 0x0107, 0x08,
266                 0x09, 0x00, 0x00, 0x00, 0x1e},
267         {0x3c, 0x0e3b, 0x070a, 0x3af2, 0x0130, 0x08,
268                 0x0a, 0x00, 0x00, 0x00, 0x22},  /* mode 1600x1200
269                                                    add CRT2MODE [2003/10/07] */
270         {0x3d, 0x0e7d, 0x070a, 0x3af2, 0x0131, 0x08,
271                 0x0a, 0x00, 0x00, 0x00, 0x22},  /* mode 1600x1200
272                                                    add CRT2MODE */
273         {0x40, 0x9a1c, 0x0000, 0x3a34, 0x010d, 0x08,
274                 0x00, 0x00, 0x00, 0x04, 0x00},
275         {0x41, 0x9a1d, 0x0000, 0x3a34, 0x010e, 0x08,
276                 0x00, 0x00, 0x00, 0x04, 0x00},  /* ModeIdIndex = 0x10 */
277         {0x43, 0x0a1c, 0x0306, 0x3a57, 0x0110, 0x08,
278                 0x06, 0x00, 0x00, 0x05, 0x06},
279         {0x44, 0x0a1d, 0x0306, 0x3a57, 0x0111, 0x08,
280                 0x06, 0x00, 0x00, 0x05, 0x06},
281         {0x46, 0x2a1c, 0x0407, 0x3a81, 0x0113, 0x08,
282                 0x07, 0x00, 0x00, 0x07, 0x0e},
283         {0x47, 0x2a1d, 0x0407, 0x3a81, 0x0114, 0x08,
284                 0x07, 0x00, 0x00, 0x07, 0x0e},
285         {0x49, 0x0a3c, 0x0508, 0x3aab, 0x0116, 0x08,
286                 0x08, 0x00, 0x00, 0x00, 0x16},
287         {0x4a, 0x0a3d, 0x0508, 0x3aab, 0x0117, 0x08,
288                 0x08, 0x00, 0x00, 0x00, 0x16},
289         {0x4c, 0x0e7c, 0x0609, 0x3adc, 0x0119, 0x08,
290                 0x09, 0x00, 0x00, 0x00, 0x1e},
291         {0x4d, 0x0e7d, 0x0609, 0x3adc, 0x011a, 0x08,
292                 0x09, 0x00, 0x00, 0x00, 0x1e},
293         {0x50, 0x9a1b, 0x0001, 0x3a3b, 0x0132, 0x08,
294                 0x01, 0x00, 0x00, 0x04, 0x02},
295         {0x51, 0xba1b, 0x0103, 0x3a42, 0x0133, 0x08,
296                 0x03, 0x00, 0x00, 0x07, 0x03},
297         {0x52, 0x9a1b, 0x0204, 0x3a49, 0x0134, 0x08,
298                 0x04, 0x00, 0x00, 0x00, 0x04},
299         {0x56, 0x9a1d, 0x0001, 0x3a3b, 0x0135, 0x08,
300                 0x01, 0x00, 0x00, 0x04, 0x02},
301         {0x57, 0xba1d, 0x0103, 0x3a42, 0x0136, 0x08,
302                 0x03, 0x00, 0x00, 0x07, 0x03},
303         {0x58, 0x9a1d, 0x0204, 0x3a49, 0x0137, 0x08,
304                 0x04, 0x00, 0x00, 0x00, 0x04},
305         {0x59, 0x9a1b, 0x0000, 0x3a34, 0x0138, 0x08,
306                 0x00, 0x00, 0x00, 0x04, 0x00},
307         {0x5A, 0x021b, 0x0014, 0x3b83, 0x0138, 0x08,
308                 0x01, 0x00, 0x00, 0x04, 0x3f},  /* ModeIdIndex = 0x20 */
309         {0x5B, 0x0a1d, 0x0014, 0x3b83, 0x0135, 0x08,
310                 0x01, 0x00, 0x00, 0x04, 0x3f},
311         {0x5d, 0x0a1d, 0x0305, 0x3a50, 0x0139, 0x08,
312                 0x05, 0x00, 0x00, 0x07, 0x05},
313         {0x62, 0x0a3f, 0x0306, 0x3a57, 0x013a, 0x08,
314                 0x06, 0x00, 0x00, 0x05, 0x06},
315         {0x63, 0x2a3f, 0x0407, 0x3a81, 0x013b, 0x08,
316                 0x07, 0x00, 0x00, 0x07, 0x0e},
317         {0x64, 0x0a7f, 0x0508, 0x3aab, 0x013c, 0x08,
318                 0x08, 0x00, 0x00, 0x00, 0x16},
319         {0x65, 0x0eff, 0x0609, 0x3adc, 0x013d, 0x08,
320                 0x09, 0x00, 0x00, 0x00, 0x1e},
321         {0x66, 0x0eff, 0x070a, 0x3af2, 0x013e, 0x08,
322                 0x0a, 0x00, 0x00, 0x00, 0x22},  /* mode 1600x1200
323                                                    add CRT2MODE */
324         {0x68, 0x067b, 0x080b, 0x3b17, 0x013f, 0x08,
325                 0x0b, 0x00, 0x00, 0x00, 0x29},
326         {0x69, 0x06fd, 0x080b, 0x3b17, 0x0140, 0x08,
327                 0x0b, 0x00, 0x00, 0x00, 0x29},
328         {0x6b, 0x07ff, 0x080b, 0x3b17, 0x0141, 0x10,
329                 0x0b, 0x00, 0x00, 0x00, 0x29},
330         {0x6c, 0x067b, 0x090c, 0x3b37, 0x0000, 0x08,
331                 0x0c, 0x00, 0x00, 0x00, 0x2f},
332         {0x6d, 0x06fd, 0x090c, 0x3b37, 0x0000, 0x10,
333                 0x0c, 0x00, 0x00, 0x00, 0x2f},
334         {0x6e, 0x07ff, 0x090c, 0x3b37, 0x0000, 0x10,
335                 0x0c, 0x00, 0x00, 0x00, 0x2f},
336         {0x70, 0x2a1b, 0x0410, 0x3b52, 0x0000, 0x08,
337                 0x10, 0x00, 0x00, 0x07, 0x34},
338         {0x71, 0x0a1b, 0x0511, 0x3b63, 0x0000, 0x08,
339                 0x11, 0x00, 0x00, 0x00, 0x37},
340         {0x74, 0x0a1d, 0x0511, 0x3b63, 0x0000, 0x08,
341                 0x11, 0x00, 0x00, 0x00, 0x37},  /* ModeIdIndex = 0x30 */
342         {0x75, 0x0a3d, 0x0612, 0x3b74, 0x0000, 0x08,
343                 0x12, 0x00, 0x00, 0x00, 0x3a},
344         {0x76, 0x2a1f, 0x0410, 0x3b52, 0x0000, 0x08,
345                 0x10, 0x00, 0x00, 0x07, 0x34},
346         {0x77, 0x0a1f, 0x0511, 0x3b63, 0x0000, 0x08,
347                 0x11, 0x00, 0x00, 0x00, 0x37},
348         {0x78, 0x0a3f, 0x0612, 0x3b74, 0x0000, 0x08,
349                 0x12, 0x00, 0x00, 0x00, 0x3a},
350         {0x79, 0x0a3b, 0x0612, 0x3b74, 0x0000, 0x08,
351                 0x12, 0x00, 0x00, 0x00, 0x3a},
352         {0x7a, 0x2a1d, 0x0410, 0x3b52, 0x0000, 0x08,
353                 0x10, 0x00, 0x00, 0x07, 0x34},
354         {0x7b, 0x0e3b, 0x060f, 0x3ad0, 0x0000, 0x08,
355                 0x0f, 0x00, 0x00, 0x00, 0x1d},
356         {0x7c, 0x0e7d, 0x060f, 0x3ad0, 0x0000, 0x08,
357                 0x0f, 0x00, 0x00, 0x00, 0x1d},
358         {0x7d, 0x0eff, 0x060f, 0x3ad0, 0x0000, 0x08,
359                 0x0f, 0x00, 0x00, 0x00, 0x1d},
360         {0x20, 0x0e3b, 0x0D16, 0x49e0, 0x0000, 0x08,
361                 0x16, 0x00, 0x00, 0x00, 0x43},
362         {0x21, 0x0e7d, 0x0D16, 0x49e0, 0x0000, 0x08,
363                 0x16, 0x00, 0x00, 0x00, 0x43},
364         {0x22, 0x0eff, 0x0D16, 0x49e0, 0x0000, 0x08,
365                 0x16, 0x00, 0x00, 0x00, 0x43},
366         {0x23, 0x0e3b, 0x0614, 0x49d5, 0x0000, 0x08,
367                 0x14, 0x00, 0x00, 0x00, 0x41},
368         {0x24, 0x0e7d, 0x0614, 0x49d5, 0x0000, 0x08,
369                 0x14, 0x00, 0x00, 0x00, 0x41},
370         {0x25, 0x0eff, 0x0614, 0x49d5, 0x0000, 0x08,
371                 0x14, 0x00, 0x00, 0x00, 0x41},
372         {0x26, 0x063b, 0x0c15, 0x49dc, 0x0000, 0x08,
373                 0x15, 0x00, 0x00, 0x00, 0x42},  /* ModeIdIndex = 0x40 */
374         {0x27, 0x067d, 0x0c15, 0x49dc, 0x0000, 0x08,
375                 0x15, 0x00, 0x00, 0x00, 0x42},
376         {0x28, 0x06ff, 0x0c15, 0x49dc, 0x0000, 0x08,
377                 0x15, 0x00, 0x00, 0x00, 0x42},
378         {0xff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00,
379                 0x00, 0x00, 0x00, 0x00, 0x00}
380 };
381
382 static struct XGI_StandTableStruct XGI330_StandTable[] = {
383 /* MD_0_200 */
384         {
385                 0x28, 0x18, 0x08, 0x0800,
386                 {0x09, 0x03, 0x00, 0x02},
387                 0x63,
388                 {0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
389                  0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
390                  0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
391                  0xff},
392                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
393                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
394                  0x08, 0x00, 0x0f, 0x00},
395                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
396                  0xff}
397         },
398 /* MD_1_200 */
399         {
400                 0x28, 0x18, 0x08, 0x0800,
401                 {0x09, 0x03, 0x00, 0x02},
402                 0x63,
403                 {0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
404                  0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
405                  0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
406                  0xff},
407                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
408                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
409                  0x08, 0x00, 0x0f, 0x00},
410                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
411                  0xff}
412         },
413 /* MD_2_200 */
414         {
415                 0x50, 0x18, 0x08, 0x1000,
416                 {0x01, 0x03, 0x00, 0x02},
417                  0x63,
418                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
419                  0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
420                  0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
421                  0xff},
422                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
423                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
424                  0x08, 0x00, 0x0f, 0x00},
425                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
426                  0xff}
427         },
428 /* MD_3_200 */
429         {
430                 0x50, 0x18, 0x08, 0x1000,
431                 {0x01, 0x03, 0x00, 0x02},
432                  0x63,
433                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
434                  0x00, 0xc7, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00,
435                  0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
436                  0xff},
437                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
438                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
439                  0x08, 0x00, 0x0f, 0x00},
440                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
441                  0xff}
442         },
443 /* MD_4 */
444         {
445                 0x28, 0x18, 0x08, 0x4000,
446                 {0x09, 0x03, 0x00, 0x02},
447                  0x63,
448                 {0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
449                  0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450                  0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
451                  0xff},
452                 {0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
453                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
454                  0x01, 0x00, 0x03, 0x00},
455                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00,
456                  0xff}
457         },
458 /* MD_5 */
459         {
460                 0x28, 0x18, 0x08, 0x4000,
461                 {0x09, 0x03, 0x00, 0x02},
462                  0x63,
463                 {0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
464                  0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
465                  0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
466                  0xff},
467                 {0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
468                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
469                  0x01, 0x00, 0x03, 0x00},
470                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00,
471                  0xff}
472         },
473 /* MD_6 */
474         {
475                 0x50, 0x18, 0x08, 0x4000,
476                 {0x01, 0x01, 0x00, 0x06},
477                  0x63,
478                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
479                  0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
480                  0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
481                  0xff},
482                 {0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
483                  0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
484                  0x01, 0x00, 0x01, 0x00},
485                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00,
486                  0xff}
487         },
488 /* MD_7 */
489         {
490                 0x50, 0x18, 0x0e, 0x1000,
491                 {0x00, 0x03, 0x00, 0x03},
492                  0xa6,
493                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
494                  0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
495                  0x83, 0x85, 0x5d, 0x28, 0x0d, 0x63, 0xba, 0xa3,
496                  0xff},
497                 {0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
498                  0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
499                  0x0e, 0x00, 0x0f, 0x08},
500                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00,
501                  0xff}
502         },
503 /* MDA_DAC */
504         {
505                 0x00, 0x00, 0x00, 0x0000,
506                 {0x00, 0x00, 0x00, 0x15},
507                  0x15,
508                 {0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
509                  0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x3f, 0x3f,
510                  0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00,
511                  0x00},
512                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15,
513                  0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
514                  0x15, 0x15, 0x15, 0x15},
515                 {0x15, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
516                  0x3f}
517         },
518 /* CGA_DAC */
519         {
520                 0x00, 0x10, 0x04, 0x0114,
521                 {0x11, 0x09, 0x15, 0x00},
522                  0x10,
523                 {0x04, 0x14, 0x01, 0x11, 0x09, 0x15, 0x2a, 0x3a,
524                  0x2e, 0x3e, 0x2b, 0x3b, 0x2f, 0x3f, 0x2a, 0x3a,
525                  0x2e, 0x3e, 0x2b, 0x3b, 0x2f, 0x3f, 0x00, 0x10,
526                  0x04},
527                 {0x14, 0x01, 0x11, 0x09, 0x15, 0x00, 0x10, 0x04,
528                  0x14, 0x01, 0x11, 0x09, 0x15, 0x2a, 0x3a, 0x2e,
529                  0x3e, 0x2b, 0x3b, 0x2f},
530                 {0x3f, 0x2a, 0x3a, 0x2e, 0x3e, 0x2b, 0x3b, 0x2f,
531                  0x3f}
532         },
533 /* EGA_DAC */
534         {
535                 0x00, 0x10, 0x04, 0x0114,
536                 {0x11, 0x05, 0x15, 0x20},
537                  0x30,
538                 {0x24, 0x34, 0x21, 0x31, 0x25, 0x35, 0x08, 0x18,
539                  0x0c, 0x1c, 0x09, 0x19, 0x0d, 0x1d, 0x28, 0x38,
540                  0x2c, 0x3c, 0x29, 0x39, 0x2d, 0x3d, 0x02, 0x12,
541                  0x06},
542                 {0x16, 0x03, 0x13, 0x07, 0x17, 0x22, 0x32, 0x26,
543                  0x36, 0x23, 0x33, 0x27, 0x37, 0x0a, 0x1a, 0x0e,
544                  0x1e, 0x0b, 0x1b, 0x0f},
545                 {0x1f, 0x2a, 0x3a, 0x2e, 0x3e, 0x2b, 0x3b, 0x2f,
546                  0x3f}
547         },
548 /* VGA_DAC */
549         {
550                 0x00, 0x10, 0x04, 0x0114,
551                 {0x11, 0x09, 0x15, 0x2a},
552                  0x3a,
553                 {0x2e, 0x3e, 0x2b, 0x3b, 0x2f, 0x3f, 0x00, 0x05,
554                  0x08, 0x0b, 0x0e, 0x11, 0x14, 0x18, 0x1c, 0x20,
555                  0x24, 0x28, 0x2d, 0x32, 0x38, 0x3f, 0x00, 0x10,
556                  0x1f},
557                 {0x2f, 0x3f, 0x1f, 0x27, 0x2f, 0x37, 0x3f, 0x2d,
558                  0x31, 0x36, 0x3a, 0x3f, 0x00, 0x07, 0x0e, 0x15,
559                  0x1c, 0x0e, 0x11, 0x15},
560                 {0x18, 0x1c, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x00,
561                  0x04}
562         },
563         {
564                 0x08, 0x0c, 0x10, 0x0a08,
565                 {0x0c, 0x0e, 0x10, 0x0b},
566                  0x0c,
567                 {0x0d, 0x0f, 0x10, 0x10, 0x01, 0x08, 0x00, 0x00,
568                  0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x01, 0x00,
569                  0x04, 0x04, 0x01, 0x00, 0x05, 0x02, 0x05, 0x00,
570                  0x06},
571                 {0x01, 0x06, 0x05, 0x06, 0x00, 0x08, 0x01, 0x08,
572                  0x00, 0x07, 0x02, 0x07, 0x06, 0x07, 0x00, 0x00,
573                  0x00, 0x00, 0x00, 0x00},
574                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
575                  0x00}
576         },
577 /* MD_D */
578         {
579                 0x28, 0x18, 0x08, 0x2000,
580                 {0x09, 0x0f, 0x00, 0x06},
581                  0x63,
582                 {0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
583                  0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
584                  0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
585                  0xff},
586                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
587                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
588                  0x01, 0x00, 0x0f, 0x00},
589                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
590                  0xff}
591         },
592 /* MD_E */
593         {
594                 0x50, 0x18, 0x08, 0x4000,
595                 {0x01, 0x0f, 0x00, 0x06},
596                  0x63,
597                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
598                  0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
599                  0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
600                  0xff},
601                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
602                  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
603                  0x01, 0x00, 0x0f, 0x00},
604                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
605                  0xff}
606         },
607 /* ExtVGATable */
608         {
609                 0x00, 0x00, 0x00, 0x0000,
610                 {0x01, 0x0f, 0x00, 0x0e},
611                  0x23,
612                 {0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
613                  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
614                  0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3,
615                  0xff},
616                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
617                  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
618                  0x01, 0x00, 0x00, 0x00},
619                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
620                  0xff}
621         },
622 /* ROM_SAVEPTR */
623         {
624                 0x9f, 0x3b, 0x00, 0x00c0,
625                 {0x00, 0x00, 0x00, 0x00},
626                  0x00,
627                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x3f,
628                  0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
629                  0x00, 0x00, 0x1a, 0x00, 0xac, 0x3e, 0x00, 0xc0,
630                  0x00},
631                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
632                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
633                  0x00, 0x00, 0x00, 0x00},
634                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
635                  0x00}
636         },
637 /* MD_F */
638         {
639                 0x50, 0x18, 0x0e, 0x8000,
640                 {0x01, 0x0f, 0x00, 0x06},
641                  0xa2,
642                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
643                  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
644                  0x82, 0x84, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
645                  0xff},
646                 {0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
647                  0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
648                  0x0b, 0x00, 0x05, 0x00},
649                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05,
650                  0xff}
651         },
652 /* MD_10 */
653         {
654                 0x50, 0x18, 0x0e, 0x8000,
655                 {0x01, 0x0f, 0x00, 0x06},
656                  0xa3,
657                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
658                  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
659                  0x82, 0x84, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
660                  0xff},
661                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
662                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
663                  0x01, 0x00, 0x0f, 0x00},
664                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
665                  0xff}
666         },
667 /* MD_0_350 */
668         {
669                 0x28, 0x18, 0x0e, 0x0800,
670                 {0x09, 0x03, 0x00, 0x02},
671                  0xa3,
672                 {0x2d, 0x27, 0x28, 0x90, 0x2b, 0xb1, 0xbf, 0x1f,
673                  0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
674                  0x83, 0x85, 0x5d, 0x14, 0x1f, 0x63, 0xba, 0xa3,
675                  0xff},
676                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
677                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
678                  0x08, 0x00, 0x0f, 0x00},
679                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
680                  0xff}
681         },
682 /* MD_1_350 */
683         {
684                 0x28, 0x18, 0x0e, 0x0800,
685                 {0x09, 0x03, 0x00, 0x02},
686                  0xa3,
687                 {0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
688                  0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
689                  0x83, 0x85, 0x5d, 0x14, 0x1f, 0x63, 0xba, 0xa3,
690                  0xff},
691                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
692                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
693                  0x08, 0x00, 0x0f, 0x00},
694                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
695                  0xff}
696         },
697 /* MD_2_350 */
698         {
699                 0x50, 0x18, 0x0e, 0x1000,
700                 {0x01, 0x03, 0x00, 0x02},
701                  0xa3,
702                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
703                  0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
704                  0x83, 0x85, 0x5d, 0x28, 0x1f, 0x63, 0xba, 0xa3,
705                  0xff},
706                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
707                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
708                  0x08, 0x00, 0x0f, 0x00},
709                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
710                  0xff}
711         },
712 /* MD_3_350 */
713         {
714                 0x50, 0x18, 0x0e, 0x1000,
715                 {0x01, 0x03, 0x00, 0x02},
716                  0xa3,
717                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
718                  0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00,
719                  0x83, 0x85, 0x5d, 0x28, 0x1f, 0x63, 0xba, 0xa3,
720                  0xff},
721                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
722                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
723                  0x08, 0x00, 0x0f, 0x00},
724                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
725                  0xff}
726         },
727 /* MD_0_1_400 */
728         {
729                 0x28, 0x18, 0x10, 0x0800,
730                 {0x08, 0x03, 0x00, 0x02},
731                  0x67,
732                 {0x2d, 0x27, 0x28, 0x90, 0x2b, 0xb1, 0xbf, 0x1f,
733                  0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
734                  0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
735                  0xff},
736                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
737                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
738                  0x0c, 0x00, 0x0f, 0x08},
739                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
740                  0xff}
741         },
742 /* MD_2_3_400 */
743         {
744                 0x50, 0x18, 0x10, 0x1000,
745                 {0x00, 0x03, 0x00, 0x02},
746                  0x67,
747                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
748                  0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
749                  0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
750                  0xff},
751                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
752                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
753                  0x0c, 0x00, 0x0f, 0x08},
754                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00,
755                  0xff}
756         },
757 /* MD_7_400 */
758         {
759                 0x50, 0x18, 0x10, 0x1000,
760                 {0x00, 0x03, 0x00, 0x02},
761                  0x66,
762                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
763                  0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
764                  0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
765                  0xff},
766                 {0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
767                  0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
768                  0x0e, 0x00, 0x0f, 0x08},
769                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00,
770                  0xff}
771         },
772 /* MD_11 */
773         {
774                 0x50, 0x1d, 0x10, 0xa000,
775                 {0x01, 0x0f, 0x00, 0x06},
776                  0xe3,
777                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0x0b, 0x3e,
778                  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
779                  0xe9, 0x8b, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xc3,
780                  0xff},
781                 {0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
782                  0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
783                  0x01, 0x00, 0x0f, 0x00},
784                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
785                  0xff}
786         },
787 /* ExtEGATable */
788         {
789                 0x50, 0x1d, 0x10, 0xa000,
790                 {0x01, 0x0f, 0x00, 0x06},
791                  0xe3,
792                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0x0b, 0x3e,
793                  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
794                  0xe9, 0x8b, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
795                  0xff},
796                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
797                  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
798                  0x01, 0x00, 0x0f, 0x00},
799                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f,
800                  0xff}
801         },
802 /* MD_13 */
803         {
804                 0x28, 0x18, 0x08, 0x2000,
805                 {0x01, 0x0f, 0x00, 0x0e},
806                  0x63,
807                 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
808                  0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
809                  0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
810                  0xff},
811                 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
812                  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
813                  0x41, 0x00, 0x0f, 0x00},
814                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
815                  0xff}
816         }
817 };
818
819 static struct XGI_TimingHStruct XGI_TimingH[] = {
820         { {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }
821 };
822
823 static struct XGI_TimingVStruct XGI_TimingV[] = {
824         { {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }
825 };
826
827 static struct XGI_XG21CRT1Struct XGI_UpdateCRT1Table[] = {
828         {0x01, 0x27, 0x91, 0x8f, 0xc0}, /* 00 */
829         {0x03, 0x4f, 0x83, 0x8f, 0xc0}, /* 01 */
830         {0x05, 0x27, 0x91, 0x8f, 0xc0}, /* 02 */
831         {0x06, 0x4f, 0x83, 0x8f, 0xc0}, /* 03 */
832         {0x07, 0x4f, 0x83, 0x8f, 0xc0}, /* 04 */
833         {0x0d, 0x27, 0x91, 0x8f, 0xc0}, /* 05 */
834         {0x0e, 0x4f, 0x83, 0x8f, 0xc0}, /* 06 */
835         {0x0f, 0x4f, 0x83, 0x5d, 0xc0}, /* 07 */
836         {0x10, 0x4f, 0x83, 0x5d, 0xc0}, /* 08 */
837         {0x11, 0x4f, 0x83, 0xdf, 0x0c}, /* 09 */
838         {0x12, 0x4f, 0x83, 0xdf, 0x0c}, /* 10 */
839         {0x13, 0x4f, 0x83, 0x8f, 0xc0}, /* 11 */
840         {0x2e, 0x4f, 0x83, 0xdf, 0x0c}, /* 12 */
841         {0x2e, 0x4f, 0x87, 0xdf, 0xc0}, /* 13 */
842         {0x2f, 0x4f, 0x83, 0x8f, 0xc0}, /* 14 */
843         {0x50, 0x27, 0x91, 0xdf, 0x0c}, /* 15 */
844         {0x59, 0x27, 0x91, 0x8f, 0xc0}  /* 16 */
845 };
846
847 static struct XGI_CRT1TableStruct XGI_CRT1Table[] = {
848         { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
849           0xbf, 0x1f, 0x9c, 0x8e, 0x96, 0xb9, 0x30} }, /* 0x0 */
850         { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
851           0x0b, 0x3e, 0xe9, 0x8b, 0xe7, 0x04, 0x00} }, /* 0x1 */
852         { {0x3D, 0x31, 0x81, 0x37, 0x1F, 0x00, 0x05, 0x00,
853           0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} }, /* 0x2 */
854         { {0x4F, 0x3F, 0x93, 0x45, 0x0D, 0x00, 0x01, 0x00,
855           0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x3 */
856         { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
857           0xBF, 0x1F, 0x9C, 0x8E, 0x96, 0xB9, 0x30} }, /* 0x4 */
858         { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
859           0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x5 */
860         { {0x63, 0x50, 0x86, 0x56, 0x9B, 0x00, 0x01, 0x00,
861           0x06, 0x3E, 0xE8, 0x8B, 0xE7, 0xFF, 0x10} }, /* 0x6 */
862         { {0x64, 0x4F, 0x88, 0x55, 0x9D, 0x00, 0x01, 0x00,
863           0xF2, 0x1F, 0xE0, 0x83, 0xDF, 0xF3, 0x10} }, /* 0x7 */
864         { {0x63, 0x4F, 0x87, 0x5A, 0x81, 0x00, 0x05, 0x00,
865           0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x10} }, /* 0x8 */
866         { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
867           0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x80} }, /* 0x9 */
868         { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
869           0x01, 0x3E, 0xE0, 0x83, 0xDF, 0x02, 0x80} }, /* 0xa */
870         { {0x67, 0x4F, 0x8B, 0x58, 0x81, 0x00, 0x05, 0x60,
871           0x0D, 0x3E, 0xE0, 0x83, 0xDF, 0x0E, 0x90} }, /* 0xb */
872         { {0x65, 0x4F, 0x89, 0x57, 0x9F, 0x00, 0x01, 0x00,
873           0xFB, 0x1F, 0xE6, 0x8A, 0xDF, 0xFC, 0x10} }, /* 0xc */
874         { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00, /* ;
875                                                 0D (800x600,56Hz) */
876           0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} },     /* ;
877                                                 (VCLK 36.0MHz) */
878         { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00, /* ;
879                                                 0E (800x600,60Hz) */
880           0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} },     /* ;
881                                                 (VCLK 40.0MHz) */
882         { {0x7D, 0x63, 0x81, 0x6E, 0x1D, 0x00, 0x06, 0x00, /* ;
883                                                 0F (800x600,72Hz) */
884           0x98, 0xF0, 0x7C, 0x82, 0x57, 0x99, 0x80} },     /* ;
885                                                 (VCLK 50.0MHz) */
886         { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00, /* ;
887                                                 10 (800x600,75Hz) */
888           0x6F, 0xF0, 0x58, 0x8B, 0x57, 0x70, 0xA0} },     /* ;
889                                                 (VCLK 49.5MHz) */
890         { {0x7E, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00, /* ;
891                                                 11 (800x600,85Hz) */
892           0x75, 0xF0, 0x58, 0x8B, 0x57, 0x76, 0xA0} },     /* ;
893                                                 (VCLK 56.25MHz) */
894         { {0x81, 0x63, 0x85, 0x6D, 0x18, 0x00, 0x06, 0x60, /* ;
895                                                 12 (800x600,100Hz) */
896           0x7A, 0xF0, 0x58, 0x8B, 0x57, 0x7B, 0xA0} },     /* ;
897                                                 (VCLK 75.8MHz) */
898         { {0x83, 0x63, 0x87, 0x6E, 0x19, 0x00, 0x06, 0x60, /* ;
899                                                 13 (800x600,120Hz) */
900           0x81, 0xF0, 0x58, 0x8B, 0x57, 0x82, 0xA0} },     /* ;
901                                                 (VCLK 79.411MHz) */
902         { {0x85, 0x63, 0x89, 0x6F, 0x1A, 0x00, 0x06, 0x60, /* ;
903                                                 14 (800x600,160Hz) */
904           0x91, 0xF0, 0x58, 0x8B, 0x57, 0x92, 0xA0} },     /* ;
905                                                 (VCLK 105.822MHz) */
906         { {0x99, 0x7F, 0x9D, 0x84, 0x1A, 0x00, 0x02, 0x00,
907           0x96, 0x1F, 0x7F, 0x83, 0x7F, 0x97, 0x10} }, /* 0x15 */
908         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
909           0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x16 */
910         { {0xA1, 0x7F, 0x85, 0x86, 0x97, 0x00, 0x02, 0x00,
911           0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x17 */
912         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
913           0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} }, /* 0x18 */
914         { {0xA7, 0x7F, 0x8B, 0x89, 0x95, 0x00, 0x02, 0x00,
915           0x26, 0xF5, 0x00, 0x83, 0xFF, 0x27, 0x90} }, /* 0x19 */
916         { {0xA9, 0x7F, 0x8D, 0x8C, 0x9A, 0x00, 0x02, 0x62,
917           0x2C, 0xF5, 0x00, 0x83, 0xFF, 0x2D, 0x14} }, /* 0x1a */
918         { {0xAB, 0x7F, 0x8F, 0x8D, 0x9B, 0x00, 0x02, 0x62,
919           0x35, 0xF5, 0x00, 0x83, 0xFF, 0x36, 0x14} }, /* 0x1b */
920         { {0xCF, 0x9F, 0x93, 0xB2, 0x01, 0x00, 0x03, 0x00,
921           0x14, 0xBA, 0x00, 0x83, 0xFF, 0x15, 0x00} }, /* 0x1c */
922         { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
923           0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1d */
924         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
925           0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1e */
926         { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
927           0x2E, 0x5A, 0x00, 0x83, 0xFF, 0x2F, 0x89} }, /* 0x1f */
928         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
929           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x20 */
930         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
931           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x21 */
932         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
933           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x22 */
934         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
935           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x23 */
936         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
937           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x24 */
938         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
939           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x25 */
940         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
941           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x26 */
942         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
943           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x27 */
944         { {0x43, 0xEF, 0x87, 0x06, 0x00, 0x41, 0x05, 0x62,
945           0xD4, 0x1F, 0xA0, 0x83, 0x9F, 0xD5, 0x9F} }, /* 0x28 */
946         { {0x45, 0xEF, 0x89, 0x07, 0x01, 0x41, 0x05, 0x62,
947           0xD9, 0x1F, 0xA0, 0x83, 0x9F, 0xDA, 0x9F} }, /* 0x29 */
948         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
949           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2a */
950         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
951           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2b */
952         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
953           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2c */
954         { {0x59, 0xFF, 0x9D, 0x17, 0x13, 0x41, 0x05, 0x44,
955           0x33, 0xBA, 0x00, 0x83, 0xFF, 0x34, 0x0F} }, /* 0x2d */
956         { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
957           0x38, 0xBA, 0x00, 0x83, 0xFF, 0x39, 0x0F} }, /* 0x2e */
958         { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
959           0x3D, 0xBA, 0x00, 0x83, 0xFF, 0x3E, 0x0F} }, /* 0x2f */
960         { {0x5D, 0xFF, 0x81, 0x19, 0x95, 0x41, 0x05, 0x44,
961           0x41, 0xBA, 0x00, 0x84, 0xFF, 0x42, 0x0F} }, /* 0x30 */
962         { {0x55, 0xFF, 0x99, 0x0D, 0x0C, 0x41, 0x05, 0x00,
963           0x3E, 0xBA, 0x00, 0x84, 0xFF, 0x3F, 0x0F} }, /* 0x31 */
964         { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00,
965           0x72, 0xBA, 0x27, 0x8B, 0xDF, 0x73, 0x80} }, /* 0x32 */
966         { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00,
967           0x6F, 0xBA, 0x26, 0x89, 0xDF, 0x6F, 0x80} }, /* 0x33 */
968         { {0x7F, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00,
969           0x75, 0xBA, 0x29, 0x8C, 0xDF, 0x75, 0x80} }, /* 0x34 */
970         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
971           0x24, 0xF1, 0xAF, 0x85, 0x3F, 0x25, 0xB0} }, /* 0x35 */
972         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
973           0x1E, 0xF1, 0xAD, 0x81, 0x3F, 0x1F, 0xB0} }, /* 0x36 */
974         { {0xA7, 0x7F, 0x88, 0x89, 0x15, 0x00, 0x02, 0x00,
975           0x26, 0xF1, 0xB1, 0x85, 0x3F, 0x27, 0xB0} }, /* 0x37 */
976         { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
977           0x28, 0xC4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x38 */
978         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
979           0x28, 0xD4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x39 */
980         { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
981           0x2E, 0xD4, 0x7D, 0x81, 0xCF, 0x2F, 0xA1} }, /* 0x3a */
982         { {0xDC, 0x9F, 0x00, 0xAB, 0x19, 0x00, 0x07, 0x00,
983           0xE6, 0xEF, 0xC0, 0xC3, 0xBF, 0xE7, 0x90} }, /* 0x3b */
984         { {0x6B, 0x59, 0x8F, 0x5E, 0x8C, 0x00, 0x05, 0x00,
985           0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x3c */
986         { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00,
987           0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} }, /* 0x3d */
988         { {0x86, 0x6A, 0x8a, 0x74, 0x06, 0x00, 0x02, 0x00,
989           0x8c, 0x15, 0x4f, 0x83, 0xef, 0x8d, 0x30} }, /* 0x3e */
990         { {0x81, 0x6A, 0x85, 0x70, 0x00, 0x00, 0x02, 0x00,
991           0x0f, 0x3e, 0xeb, 0x8e, 0xdf, 0x10, 0x00} }, /* 0x3f */
992         { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
993           0x20, 0xF5, 0x03, 0x88, 0xFF, 0x21, 0x90} }, /* 0x40 */
994         { {0xE6, 0xAE, 0x8A, 0xBD, 0x90, 0x00, 0x03, 0x00,
995           0x3D, 0x10, 0x1A, 0x8D, 0x19, 0x3E, 0x2F} }, /* 0x41 */
996         { {0xB9, 0x8F, 0x9D, 0x9B, 0x8A, 0x00, 0x06, 0x00,
997           0x7D, 0xFF, 0x60, 0x83, 0x5F, 0x7E, 0x90} }, /* 0x42 */
998         { {0xC3, 0x8F, 0x87, 0x9B, 0x0B, 0x00, 0x07, 0x00,
999           0x82, 0xFF, 0x60, 0x83, 0x5F, 0x83, 0x90} },  /* 0x43 */
1000         { {0xAD, 0x7F, 0x91, 0x8E, 0x9C, 0x00, 0x02, 0x82,
1001           0x49, 0xF5, 0x00, 0x83, 0xFF, 0x4A, 0x90} },  /* 0x44 */
1002         { {0xCD, 0x9F, 0x91, 0xA7, 0x19, 0x00, 0x07, 0x60,
1003           0xE6, 0xFF, 0xC0, 0x83, 0xBF, 0xE7, 0x90} },  /* 0x45 */
1004         { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x60,
1005           0xF1, 0xFF, 0xC0, 0x83, 0xBF, 0xF2, 0x90} },  /* 0x46 */
1006         { {0xD7, 0x9F, 0x9B, 0xAC, 0x1E, 0x00, 0x07, 0x00,
1007           0x03, 0xDE, 0xC0, 0x84, 0xBF, 0x04, 0x90} }  /* 0x47 */
1008 };
1009
1010 #if 0
1011 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegUNTSC[] = {
1012         /* Index: 000h, 001h, 002h, 004h, 003h, 005h, 006h, 007h,
1013                   008h, 015h, 01Fh, 00Ch, 00Dh, 00Eh, 00Fh, 010h */
1014         /* 00 (640x200,640x400) */
1015         { {0x4A, 0x77, 0xBB, 0x94, 0x84, 0x48, 0xFE, 0x50,
1016            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01  } },
1017         /* 01 (640x350) */
1018         { {0x4A, 0x77, 0xBB, 0x94, 0x84, 0x48, 0xFE, 0x50,
1019            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01  } },
1020         /* 02 (720x400) */
1021         { {0x4A, 0x77, 0xBB, 0x94, 0x84, 0x48, 0xFE, 0x50,
1022            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01  } },
1023         /* 03 (720x350) */
1024         { {0x4A, 0x77, 0xBB, 0x94, 0x84, 0x48, 0xFE, 0x50,
1025            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01  } },
1026         /* 04 (640x480) ;;5/6/02 */
1027         { {0x6A, 0x77, 0xBB, 0x6E, 0x84, 0x2E, 0x02, 0x5A,
1028            0x04, 0x00, 0x80, 0x20, 0x7E, 0x80, 0x97, 0x00  } },
1029         /* 05 (800x600) ;;1/12/02 */
1030         { {0xCF, 0x77, 0xB7, 0xC8, 0x84, 0x3B, 0x02, 0x5A,
1031            0x04, 0x00, 0x80, 0x19, 0x88, 0xAE, 0xA3, 0x00  } },
1032         /* 06 (1024x768) ;;5/6/02 */
1033         { {0xEE, 0x77, 0xBB, 0x66, 0x87, 0x32, 0x01, 0x5A,
1034            0x04, 0x00, 0x80, 0x1B, 0xD4, 0x2F, 0x6F, 0x00  } }
1035 };
1036
1037 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegONTSC[] = {
1038         /* Index: 000h, 001h, 002h, 004h, 003h, 005h, 006h, 007h,
1039                   008h, 015h, 01Fh, 00Ch, 00Dh, 00Eh, 00Fh, 010h */
1040         /* 00 (640x200,640x400) */
1041         { {0x49, 0x77, 0xBB, 0x7B, 0x84, 0x34, 0x00, 0x50,
1042            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1043         /* 01 (640x350) */
1044         { {0x49, 0x77, 0xBB, 0x7B, 0x84, 0x34, 0x00 , 0x50,
1045            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1046         /* 02 (720x400) */
1047         { {0x49, 0x77, 0xBB, 0x7B, 0x84, 0x34, 0x00 , 0x50,
1048            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1049         /* 03 (720x350) */
1050         { {0x49, 0x77, 0xBB, 0x7B, 0x84, 0x34, 0x00 , 0x50,
1051            0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1052         /* 04 (640x480) ;;5/6/02 */
1053         { {0x69, 0x77, 0xBB, 0x6E, 0x84, 0x1E, 0x00 , 0x5A,
1054            0x04, 0x00, 0x80, 0x25, 0x1A, 0x80, 0x26, 0x00} },
1055         /* 05 (800x600) ;;5/6/02 */
1056         { {0xCE, 0x77, 0xB7, 0xB6, 0x83, 0x2C, 0x02 , 0x5A,
1057            0x04, 0x00, 0x80, 0x1C, 0x00, 0x82, 0x97, 0x00} },
1058         /* 06 (1024x768) ;;5/6/02 */
1059         { {0xED, 0x77, 0xBB, 0x66, 0x8C, 0x21, 0x02 , 0x5A,
1060            0x04, 0x00, 0x80, 0x1F, 0xA0, 0x7E, 0x73, 0x00} }
1061 };
1062
1063 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegUPAL[] = {
1064         /* Index: 000h, 001h, 002h, 004h, 003h, 005h, 006h, 007h,
1065                   008h, 015h, 01Fh, 00Ch, 00Dh, 00Eh, 00Fh, 010h */
1066         /* ; 00 (640x200,640x400) */
1067         { {0x41, 0x7F, 0xB7, 0x34, 0xAD, 0x50, 0x34, 0x83,
1068            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1069         /* ; 01 (640x350) */
1070         { {0x41, 0x7F, 0xB7, 0x80, 0x85, 0x50, 0x00, 0x83,
1071            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1072         /* ; 02 (720x400) */
1073         { {0x41, 0x7F, 0xB7, 0x34, 0xAD, 0x50, 0x34, 0x83,
1074            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1075         /* ; 03 (720x350) */
1076         { {0x41, 0x7F, 0xB7, 0x12, 0x85, 0x50, 0x00, 0x83,
1077            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1078         /* ; 04 (640x480) */
1079         { {0x61, 0x7F, 0xB7, 0x99, 0x84, 0x35, 0x04, 0x5A,
1080            0x05, 0x00, 0x80, 0x26, 0x2A, 0x55, 0x5D, 0x00} },
1081         /* ; 05 (800x600) ;;1/12/02 */
1082         { {0xC3, 0x7F, 0xB7, 0x7A, 0x84, 0x40, 0x02, 0x5A,
1083            0x05, 0x00, 0x80, 0x1F, 0x84, 0x3D, 0x28, 0x00} },
1084         /* ; 06 (1024x768) ;;1/12/02 */
1085         { {0xE5, 0x7F, 0xB7, 0x1D, 0xA7, 0x3E, 0x04, 0x5A,
1086            0x05, 0x00, 0x80, 0x20, 0x3E, 0xE4, 0x22, 0x00} }
1087 };
1088
1089 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegOPAL[] = {
1090         /* Index: 000, 0x01, 0x02, 0x04, 0x03, 0x05, 0x06, 0x07,
1091                   0x08, 0x15, 0x1F, 0x0C, 0x0D, 0x0E, 0x0F, 0x10h */
1092         /* 00 (640x200,640x400) */
1093         { {0x41, 0x7F, 0xB7, 0x36, 0xAD, 0x50, 0x34, 0x83,
1094            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1095         /* 01 (640x350) */
1096         { {0x41, 0x7F, 0xB7, 0x86, 0x85, 0x50, 0x00, 0x83,
1097            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1098         /* 02 (720x400) */
1099         { {0x41, 0x7F, 0xB7, 0x36, 0xAD, 0x50, 0x34, 0x83,
1100            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1101         /* 03 (720x350) */
1102         { {0x41, 0x7F, 0xB7, 0x86, 0x85, 0x50, 0x00, 0x83,
1103            0x05, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01} },
1104         /* 04 (640x480) */
1105         { {0x61, 0x7F, 0xB7, 0x99, 0x84, 0x35, 0x04, 0x5A,
1106            0x05, 0x00, 0x80, 0x26, 0x2A, 0x55, 0x5D, 0x00} },
1107         /* 05 (800x600) ;;1/12/02 */
1108         { {0xC1, 0x7F, 0xB7, 0x4D, 0x8C, 0x1E, 0x31, 0x5A,
1109            0x05, 0x00, 0x80, 0x26, 0x78, 0x19, 0x34, 0x00} },
1110         /* 06 (1024x768) ;;1/12/02 */
1111         { {0xE4, 0x7F, 0xB7, 0x1E, 0xAF, 0x29, 0x37, 0x5A,
1112            0x05, 0x00, 0x80, 0x25, 0x8C, 0xB2, 0x2A, 0x00} }
1113 };
1114 #endif
1115
1116 static unsigned char XGI_CH7017LV1024x768[] = {
1117         0x60, 0x02, 0x00, 0x07, 0x40, 0xED,
1118         0xA3, 0xC8, 0xC7, 0xAC, 0xE0, 0x02};
1119 static unsigned char XGI_CH7017LV1400x1050[] = {
1120         0x60, 0x03, 0x11, 0x00, 0x40, 0xE3,
1121         0xAD, 0xDB, 0xF6, 0xAC, 0xE0, 0x02};
1122
1123 /*add for new UNIVGABIOS*/
1124 static struct XGI330_LCDDataStruct  XGI_StLCD1024x768Data[] = {
1125         {62,  25, 800,  546, 1344, 806},
1126         {32,  15, 930,  546, 1344, 806},
1127         {62,  25, 800,  546, 1344, 806}, /*chiawenfordot9->dot8*/
1128         {104, 45, 945,  496, 1344, 806},
1129         {62,  25, 800,  546, 1344, 806},
1130         {31,  18, 1008, 624, 1344, 806},
1131         {1,   1,  1344, 806, 1344, 806}
1132 };
1133
1134 static struct XGI330_LCDDataStruct  XGI_ExtLCD1024x768Data[] = {
1135         /* { 12, 5, 896, 512,1344, 806}, // alan 09/12/2003 */
1136         {42, 25, 1536, 419, 1344, 806},
1137         /* { 12, 5, 896, 510,1344, 806}, // alan 09/12/2003 */
1138         {48, 25, 1536, 369, 1344, 806},
1139         /* { 32, 15,1008, 505,1344, 806}, // alan 09/12/2003 */
1140         {42, 25, 1536, 419, 1344, 806},
1141         /* { 32, 15,1008, 514,1344, 806}, // alan 09/12/2003 */
1142         {48, 25, 1536, 369, 1344, 806},
1143         {12, 5,  896,  500, 1344, 806},
1144         {42, 25, 1024, 625, 1344, 806},
1145         {1,  1,  1344, 806, 1344, 806},
1146         {12, 5,  896,  500, 1344, 806},
1147         {42, 25, 1024, 625, 1344, 806},
1148         {1,  1,  1344, 806, 1344, 806},
1149         {12, 5,  896,  500, 1344, 806},
1150         {42, 25, 1024, 625, 1344, 806},
1151         {1,  1,  1344, 806, 1344, 806}
1152 };
1153
1154 /*struct XGI330_LCDDataStruct  XGI_St2LCD1024x768Data[] = {
1155         {62,  25, 800,  546, 1344, 806},
1156         {32,  15, 930,  546, 1344, 806},
1157         {62,  25, 800,  546, 1344, 806},
1158         {104, 45, 945,  496, 1344, 806},
1159         {62,  25, 800,  546, 1344, 806},
1160         {31,  18, 1008, 624, 1344, 806},
1161         {1,   1,  1344, 806, 1344, 806}
1162 };*/
1163
1164 static struct XGI330_LCDDataStruct  XGI_CetLCD1024x768Data[] = {
1165         {1, 1, 1344, 806, 1344, 806}, /* ; 00 (320x200,320x400,
1166                                                640x200,640x400) */
1167         {1, 1, 1344, 806, 1344, 806}, /* 01 (320x350,640x350) */
1168         {1, 1, 1344, 806, 1344, 806}, /* 02 (360x400,720x400) */
1169         {1, 1, 1344, 806, 1344, 806}, /* 03 (720x350) */
1170         {1, 1, 1344, 806, 1344, 806}, /* 04 (640x480x60Hz) */
1171         {1, 1, 1344, 806, 1344, 806}, /* 05 (800x600x60Hz) */
1172         {1, 1, 1344, 806, 1344, 806}  /* 06 (1024x768x60Hz) */
1173 };
1174
1175 static struct XGI330_LCDDataStruct  XGI_StLCD1280x1024Data[] = {
1176         {22,  5,  800,  510,  1650, 1088},
1177         {22,  5,  800,  510,  1650, 1088},
1178         {176, 45, 900,  510,  1650, 1088},
1179         {176, 45, 900,  510,  1650, 1088},
1180         {22,  5,  800,  510,  1650, 1088},
1181         {13,  5,  1024, 675,  1560, 1152},
1182         {16,  9,  1266, 804,  1688, 1072},
1183         {1,   1,  1688, 1066, 1688, 1066}
1184 };
1185
1186 static struct XGI330_LCDDataStruct  XGI_ExtLCD1280x1024Data[] = {
1187         {211, 60,  1024, 501,  1688, 1066},
1188         {211, 60,  1024, 508,  1688, 1066},
1189         {211, 60,  1024, 501,  1688, 1066},
1190         {211, 60,  1024, 508,  1688, 1066},
1191         {211, 60,  1024, 500,  1688, 1066},
1192         {211, 75,  1024, 625,  1688, 1066},
1193         {211, 120, 1280, 798,  1688, 1066},
1194         {1,   1,   1688, 1066, 1688, 1066}
1195 };
1196
1197 #if 0
1198 static struct XGI330_LCDDataStruct  XGI_St2LCD1280x1024Data[] = {
1199         {22,  5,  800,  510,  1650, 1088},
1200         {22,  5,  800,  510,  1650, 1088},
1201         {176, 45, 900,  510,  1650, 1088},
1202         {176, 45, 900,  510,  1650, 1088},
1203         {22,  5,  800,  510,  1650, 1088},
1204         {13,  5,  1024, 675,  1560, 1152},
1205         {16,  9,  1266, 804,  1688, 1072},
1206         {1,   1,  1688, 1066, 1688, 1066}
1207 };
1208 #endif
1209
1210 static struct XGI330_LCDDataStruct  XGI_CetLCD1280x1024Data[] = {
1211         {1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400,
1212                                                640x200,640x400) */
1213         {1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */
1214         {1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */
1215         {1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */
1216         {1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */
1217         {1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */
1218         {1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */
1219         {1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1220         {1, 1, 1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1221 };
1222
1223 static struct XGI330_LCDDataStruct  XGI_StLCD1400x1050Data[] = {
1224         {211, 100, 2100, 408,  1688, 1066}, /* 00 (320x200,320x400,
1225                                                    640x200,640x400) */
1226         {211, 64,  1536, 358,  1688, 1066}, /* 01 (320x350,640x350) */
1227         {211, 100, 2100, 408,  1688, 1066}, /* 02 (360x400,720x400) */
1228         {211, 64,  1536, 358,  1688, 1066}, /* 03 (720x350) */
1229         {211, 48,  840,  488,  1688, 1066}, /* 04 (640x480x60Hz) */
1230         {211, 72,  1008, 609,  1688, 1066}, /* 05 (800x600x60Hz) */
1231         {211, 128, 1400, 776,  1688, 1066}, /* 06 (1024x768x60Hz) */
1232         {1,   1,   1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz
1233                                                   w/o Scaling) */
1234         {1,   1,   1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1235 };
1236
1237 static struct XGI330_LCDDataStruct  XGI_ExtLCD1400x1050Data[] = {
1238         {211, 100, 2100, 408,  1688, 1066}, /* 00 (320x200,320x400,
1239                                                    640x200,640x400) */
1240         {211, 64,  1536, 358,  1688, 1066}, /* 01 (320x350,640x350) */
1241         {211, 100, 2100, 408,  1688, 1066}, /* 02 (360x400,720x400) */
1242         {211, 64,  1536, 358,  1688, 1066}, /* 03 (720x350) */
1243         {211, 48,  840,  488,  1688, 1066}, /* 04 (640x480x60Hz) */
1244         {211, 72,  1008, 609,  1688, 1066}, /* 05 (800x600x60Hz) */
1245         {211, 128, 1400, 776,  1688, 1066}, /* 06 (1024x768x60Hz) */
1246         {1,   1,   1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz
1247                                                   w/o Scaling) */
1248         {1,   1,   1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1249 };
1250
1251 static struct XGI330_LCDDataStruct  XGI_ExtLCD1600x1200Data[] = {
1252         {4,  1,  1620, 420,  2160, 1250}, /* { 3,1,2160,425,2160,1250 },
1253                                           // 00 (320x200,320x400,
1254                                           //     640x200,640x400)
1255                                           //     // alan 10/14/2003 */
1256         {27, 7,  1920, 375,  2160, 1250}, /* 01 (320x350,640x350) */
1257         {4,  1,  1620, 420,  2160, 1250}, /* { 3,1,2160,425,2160,1250 },
1258                                           // 02 (360x400,720x400)
1259                                           // // alan 10/14/2003 */
1260         {27, 7,  1920, 375,  2160, 1250}, /* 03 (720x350) */
1261         {27, 4,  800,  500,  2160, 1250}, /* 04 (640x480x60Hz) */
1262         {4,  1,  1080, 625,  2160, 1250}, /* 05 (800x600x60Hz) */
1263         {5,  2,  1350, 800,  2160, 1250}, /* 06 (1024x768x60Hz) */
1264         {27, 16, 1500, 1064, 2160, 1250}, /* 07 (1280x1024x60Hz) */
1265         {9,  7,  1920, 1106, 2160, 1250}, /* 08 (1400x1050x60Hz) */
1266         {1,  1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200x60Hz) ;302lv */
1267 };
1268
1269 static struct XGI330_LCDDataStruct  XGI_StLCD1600x1200Data[] = {
1270         {27,  4,  800,  500,  2160, 1250}, /* 00 (320x200,320x400,
1271                                                   640x200,640x400) */
1272         {27,  4,  800,  500,  2160, 1250}, /* 01 (320x350,640x350) */
1273         {27,  4,  800,  500,  2160, 1250}, /* 02 (360x400,720x400) */
1274         {27,  4,  800,  500,  2160, 1250}, /* 03 (720x350) */
1275         {27,  4,  800,  500,  2160, 1250}, /* 04 (320x240,640x480) */
1276         {4,   1,  1080, 625,  2160, 1250}, /* 05 (400x300,800x600) */
1277         {5,   2,  1350, 800,  2160, 1250}, /* 06 (512x384,1024x768) */
1278         {135, 88, 1600, 1100, 2160, 1250}, /* 07 (1280x1024) */
1279         {1,   1,  1800, 1500, 2160, 1250}, /* 08 (1400x1050) */
1280         {1,   1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200) */
1281 };
1282
1283 static struct XGI330_LCDDataStruct  XGI_CetLCD1400x1050Data[] = {
1284         {1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400,
1285                                                640x200,640x400) */
1286         {1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */
1287         {1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */
1288         {1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */
1289         {1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */
1290         {1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */
1291         {1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */
1292         {1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1293         {1, 1, 1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
1294 };
1295
1296 static struct XGI330_LCDDataStruct  XGI_NoScalingData[] = {
1297         {1, 1, 800,  449,  800,  449},
1298         {1, 1, 800,  449,  800,  449},
1299         {1, 1, 900,  449,  900,  449},
1300         {1, 1, 900,  449,  900,  449},
1301         {1, 1, 800,  525,  800,  525},
1302         {1, 1, 1056, 628,  1056, 628},
1303         {1, 1, 1344, 806,  1344, 806},
1304         {1, 1, 1688, 1066, 1688, 1066}
1305 };
1306
1307 static struct XGI330_LCDDataStruct  XGI_ExtLCD1024x768x75Data[] = {
1308         {42, 25, 1536, 419, 1344, 806}, /* ; 00 (320x200,320x400,
1309                                                  640x200,640x400) */
1310         {48, 25, 1536, 369, 1344, 806}, /* ; 01 (320x350,640x350) */
1311         {42, 25, 1536, 419, 1344, 806}, /* ; 02 (360x400,720x400) */
1312         {48, 25, 1536, 369, 1344, 806}, /* ; 03 (720x350) */
1313         {8,  5,  1312, 500, 1312, 800}, /* ; 04 (640x480x75Hz) */
1314         {41, 25, 1024, 625, 1312, 800}, /* ; 05 (800x600x75Hz) */
1315         {1,  1,  1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
1316 };
1317
1318 #if 0
1319 static struct XGI330_LCDDataStruct  XGI_StLCD1024x768x75Data[] = {
1320         {42, 25, 1536, 419, 1344, 806}, /* ; 00 (320x200,320x400,
1321                                                  640x200,640x400) */
1322         {48, 25, 1536, 369, 1344, 806}, /* ; 01 (320x350,640x350) */
1323         {42, 25, 1536, 419, 1344, 806}, /* ; 02 (360x400,720x400) */
1324         {48, 25, 1536, 369, 1344, 806}, /* ; 03 (720x350) */
1325         {8,  5,  1312, 500, 1312, 800}, /* ; 04 (640x480x75Hz) */
1326         {41, 25, 1024, 625, 1312, 800}, /* ; 05 (800x600x75Hz) */
1327         {1,  1,  1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
1328 };
1329 #endif
1330
1331 static struct XGI330_LCDDataStruct  XGI_CetLCD1024x768x75Data[] = {
1332         {1, 1, 1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,
1333                                                640x200,640x400) */
1334         {1, 1, 1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
1335         {1, 1, 1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
1336         {1, 1, 1312, 800, 1312, 800}, /* ; 03 (720x350) */
1337         {1, 1, 1312, 800, 1312, 800}, /* ; 04 (640x480x75Hz) */
1338         {1, 1, 1312, 800, 1312, 800}, /* ; 05 (800x600x75Hz) */
1339         {1, 1, 1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
1340 };
1341
1342 static struct XGI330_LCDDataStruct  XGI_ExtLCD1280x1024x75Data[] = {
1343         {211, 60,  1024, 501,  1688, 1066}, /* ; 00 (320x200,320x400,
1344                                                      640x200,640x400) */
1345         {211, 60,  1024, 508,  1688, 1066}, /* ; 01 (320x350,640x350) */
1346         {211, 60,  1024, 501,  1688, 1066}, /* ; 02 (360x400,720x400) */
1347         {211, 60,  1024, 508,  1688, 1066}, /* ; 03 (720x350) */
1348         {211, 45,  768,  498,  1688, 1066}, /* ; 04 (640x480x75Hz) */
1349         {211, 75,  1024, 625,  1688, 1066}, /* ; 05 (800x600x75Hz) */
1350         {211, 120, 1280, 798,  1688, 1066}, /* ; 06 (1024x768x75Hz) */
1351         {1,   1,   1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
1352 };
1353
1354 static struct XGI330_LCDDataStruct  XGI_StLCD1280x1024x75Data[] = {
1355         {211, 60,  1024, 501,  1688, 1066}, /* ; 00 (320x200,320x400,
1356                                                      640x200,640x400) */
1357         {211, 60,  1024, 508,  1688, 1066}, /* ; 01 (320x350,640x350) */
1358         {211, 60,  1024, 501,  1688, 1066}, /* ; 02 (360x400,720x400) */
1359         {211, 60,  1024, 508,  1688, 1066}, /* ; 03 (720x350) */
1360         {211, 45,  768,  498,  1688, 1066}, /* ; 04 (640x480x75Hz) */
1361         {211, 75,  1024, 625,  1688, 1066}, /* ; 05 (800x600x75Hz) */
1362         {211, 120, 1280, 798,  1688, 1066}, /* ; 06 (1024x768x75Hz) */
1363         {1,   1,   1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
1364 };
1365
1366 static struct XGI330_LCDDataStruct  XGI_CetLCD1280x1024x75Data[] = {
1367         {1, 1, 1688, 1066, 1688, 1066}, /* ; 00 (320x200,320x400,
1368                                                  640x200,640x400) */
1369         {1, 1, 1688, 1066, 1688, 1066}, /* ; 01 (320x350,640x350) */
1370         {1, 1, 1688, 1066, 1688, 1066}, /* ; 02 (360x400,720x400) */
1371         {1, 1, 1688, 1066, 1688, 1066}, /* ; 03 (720x350) */
1372         {1, 1, 1688, 1066, 1688, 1066}, /* ; 04 (640x480x75Hz) */
1373         {1, 1, 1688, 1066, 1688, 1066}, /* ; 05 (800x600x75Hz) */
1374         {1, 1, 1688, 1066, 1688, 1066}, /* ; 06 (1024x768x75Hz) */
1375         {1, 1, 1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
1376 };
1377
1378 static struct XGI330_LCDDataStruct  XGI_NoScalingDatax75[] = {
1379         {1, 1, 800,  449,  800,  449},  /* ; 00 (320x200, 320x400,
1380                                                  640x200, 640x400) */
1381         {1, 1, 800,  449,  800,  449},  /* ; 01 (320x350, 640x350) */
1382         {1, 1, 900,  449,  900,  449},  /* ; 02 (360x400, 720x400) */
1383         {1, 1, 900,  449,  900,  449},  /* ; 03 (720x350) */
1384         {1, 1, 840,  500,  840,  500},  /* ; 04 (640x480x75Hz) */
1385         {1, 1, 1056, 625,  1056, 625},  /* ; 05 (800x600x75Hz) */
1386         {1, 1, 1312, 800,  1312, 800},  /* ; 06 (1024x768x75Hz) */
1387         {1, 1, 1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
1388         {1, 1, 1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
1389                                            ;;[ycchen] 12/19/02 */
1390         {1, 1, 2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
1391         {1, 1, 1688, 806,  1688, 806}   /* ; 0A (1280x768x75Hz) */
1392 };
1393
1394 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1024x768Data[] = {
1395         {9, 1057, 0,   771}, /* ; 00 (320x200,320x400,640x200,640x400) */
1396         {9, 1057, 0,   771}, /* ; 01 (320x350,640x350) */
1397         {9, 1057, 0,   771}, /* ; 02 (360x400,720x400) */
1398         {9, 1057, 0,   771}, /* ; 03 (720x350) */
1399         {9, 1057, 0,   771}, /* ; 04 (640x480x60Hz) */
1400         {9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
1401         {9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
1402 };
1403
1404 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1024x768Data[] = {
1405         {9, 1057, 737, 703}, /* ; 00 (320x200,320x400,640x200,640x400) */
1406         {9, 1057, 686, 651}, /* ; 01 (320x350,640x350) */
1407         {9, 1057, 737, 703}, /* ; 02 (360x400,720x400) */
1408         {9, 1057, 686, 651}, /* ; 03 (720x350) */
1409         {9, 1057, 776, 741}, /* ; 04 (640x480x60Hz) */
1410         {9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
1411         {9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
1412 };
1413
1414 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1024x768Data[] = {
1415         {1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1416         {1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
1417         {1152, 856,  622, 587}, /* ; 02 (360x400,720x400) */
1418         {1152, 856,  597, 562}, /* ; 03 (720x350) */
1419         {1152, 856,  662, 627}, /* ; 04 (640x480x60Hz) */
1420         {1232, 936,  722, 687}, /* ; 05 (800x600x60Hz) */
1421         {0,    1048, 805, 770}  /* ; 06 (1024x768x60Hz) */
1422 };
1423
1424 static struct XGI330_LCDDataDesStruct XGI_ExtLCDDLDes1280x1024Data[] = {
1425         {18, 1346, 981,  940},  /* 00 (320x200,320x400,640x200,640x400) */
1426         {18, 1346, 926,  865},  /* 01 (320x350,640x350) */
1427         {18, 1346, 981,  940},  /* 02 (360x400,720x400) */
1428         {18, 1346, 926,  865},  /* 03 (720x350) */
1429         {18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
1430         {18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
1431         {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
1432         {18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1433 };
1434
1435 static struct XGI330_LCDDataDesStruct XGI_StLCDDLDes1280x1024Data[] = {
1436         {18, 1346, 970,  907},  /* 00 (320x200,320x400,640x200,640x400) */
1437         {18, 1346, 917,  854},  /* 01 (320x350,640x350) */
1438         {18, 1346, 970,  907},  /* 02 (360x400,720x400) */
1439         {18, 1346, 917,  854},  /* 03 (720x350) */
1440         {18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
1441         {18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
1442         {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
1443         {18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1444 };
1445
1446 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDLDes1280x1024Data[] = {
1447         {1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
1448         {1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
1449         {1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
1450         {1368, 1008, 729,  688}, /* 03 (720x350) */
1451         {1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
1452         {1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
1453         {1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
1454         {18,   1346, 1065, 1024} /* 07 (1280x1024x60Hz) */
1455 };
1456
1457 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1280x1024Data[] = {
1458         {9, 1337, 981,  940},  /* ; 00 (320x200,320x400,640x200,640x400) */
1459         {9, 1337, 926,  884},  /* ; 01 (320x350,640x350) alan, 2003/09/30 */
1460         {9, 1337, 981,  940},  /* ; 02 (360x400,720x400) */
1461         {9, 1337, 926,  884},  /* ; 03 (720x350) alan, 2003/09/30 */
1462         {9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
1463         {9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
1464         {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
1465         {9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
1466 };
1467
1468 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1280x1024Data[] = {
1469         {9, 1337, 970,  907},  /* ; 00 (320x200,320x400,640x200,640x400) */
1470         {9, 1337, 917,  854},  /* ; 01 (320x350,640x350) */
1471         {9, 1337, 970,  907},  /* ; 02 (360x400,720x400) */
1472         {9, 1337, 917,  854},  /* ; 03 (720x350) */
1473         {9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
1474         {9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
1475         {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
1476         {9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
1477 };
1478
1479 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1280x1024Data[] = {
1480         {1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
1481         {1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
1482         {1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
1483         {1368, 1008, 729,  688}, /* 03 (720x350) */
1484         {1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
1485         {1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
1486         {1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
1487         {9,    1337, 1065, 1024} /* 07 (1280x1024x60Hz) */
1488 };
1489
1490 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1400x1050Data[] = {
1491         {18,   1464, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
1492         {18,   1464, 0,    1051}, /* 01 (320x350,640x350) */
1493         {18,   1464, 0,    1051}, /* 02 (360x400,720x400) */
1494         {18,   1464, 0,    1051}, /* 03 (720x350) */
1495         {18,   1464, 0,    1051}, /* 04 (640x480x60Hz) */
1496         {18,   1464, 0,    1051}, /* 05 (800x600x60Hz) */
1497         {18,   1464, 0,    1051}, /* 06 (1024x768x60Hz) */
1498         {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1499         {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
1500 };
1501
1502 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1400x1050Data[] = {
1503         {18,   1464, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
1504         {18,   1464, 0,    1051}, /* 01 (320x350,640x350) */
1505         {18,   1464, 0,    1051}, /* 02 (360x400,720x400) */
1506         {18,   1464, 0,    1051}, /* 03 (720x350) */
1507         {18,   1464, 0,    1051}, /* 04 (640x480x60Hz) */
1508         {18,   1464, 0,    1051}, /* 05 (800x600x60Hz) */
1509         {18,   1464, 0,    1051}, /* 06 (1024x768x60Hz) */
1510         {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1511         {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
1512 };
1513
1514 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1400x1050Data[] = {
1515         {9,    1455, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
1516         {9,    1455, 0,    1051}, /* 01 (320x350,640x350) */
1517         {9,    1455, 0,    1051}, /* 02 (360x400,720x400) */
1518         {9,    1455, 0,    1051}, /* 03 (720x350) */
1519         {9,    1455, 0,    1051}, /* 04 (640x480x60Hz) */
1520         {9,    1455, 0,    1051}, /* 05 (800x600x60Hz) */
1521         {9,    1455, 0,    1051}, /* 06 (1024x768x60Hz) */
1522         {1637, 1397, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1523         {9,    1455, 0,    1051}  /* 08 (1400x1050x60Hz) */
1524 };
1525
1526 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1400x1050Data[] = {
1527         {9,    1455, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
1528         {9,    1455, 0,    1051}, /* 01 (320x350,640x350) */
1529         {9,    1455, 0,    1051}, /* 02 (360x400,720x400) */
1530         {9,    1455, 0,    1051}, /* 03 (720x350) */
1531         {9,    1455, 0,    1051}, /* 04 (640x480x60Hz) */
1532         {9,    1455, 0,    1051}, /* 05 (800x600x60Hz) */
1533         {9,    1455, 0,    1051}, /* 06 (1024x768x60Hz) */
1534         {1637, 1397, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1535         {9,    1455, 0,    1051}  /* 08 (1400x1050x60Hz) */
1536 };
1537
1538 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1400x1050Data[] = {
1539         {1308, 1068, 781,  766},  /* 00 (320x200,320x400,640x200,640x400) */
1540         {1308, 1068, 781,  766},  /* 01 (320x350,640x350) */
1541         {1308, 1068, 781,  766},  /* 02 (360x400,720x400) */
1542         {1308, 1068, 781,  766},  /* 03 (720x350) */
1543         {1308, 1068, 781,  766},  /* 04 (640x480x60Hz) */
1544         {1388, 1148, 841,  826},  /* 05 (800x600x60Hz) */
1545         {1490, 1250, 925,  910},  /* 06 (1024x768x60Hz) */
1546         {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1547         {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
1548 };
1549
1550 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1400x1050Data2[] = {
1551         {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
1552         {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
1553         {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
1554         {0, 1448, 0, 1051}, /* 03 (720x350) */
1555         {0, 1448, 0, 1051}  /* 04 (640x480x60Hz) */
1556 };
1557
1558 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1600x1200Data[] = {
1559         {18, 1682, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1560         {18, 1682, 0, 1201}, /* 01 (320x350,640x350) */
1561         {18, 1682, 0, 1201}, /* 02 (360x400,720x400) */
1562         {18, 1682, 0, 1201}, /* 03 (720x350) */
1563         {18, 1682, 0, 1201}, /* 04 (640x480x60Hz) */
1564         {18, 1682, 0, 1201}, /* 05 (800x600x60Hz) */
1565         {18, 1682, 0, 1201}, /* 06 (1024x768x60Hz) */
1566         {18, 1682, 0, 1201}, /* 07 (1280x1024x60Hz) */
1567         {18, 1682, 0, 1201}, /* 08 (1400x1050x60Hz) */
1568         {18, 1682, 0, 1201}  /* 09 (1600x1200x60Hz) */
1569 };
1570
1571 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1600x1200Data[] = {
1572         {18, 1682, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
1573         {18, 1682, 1083, 1034}, /* 01 (320x350,640x350) */
1574         {18, 1682, 1150, 1101}, /* 02 (360x400,720x400) */
1575         {18, 1682, 1083, 1034}, /* 03 (720x350) */
1576         {18, 1682, 0,    1201}, /* 04 (640x480x60Hz) */
1577         {18, 1682, 0,    1201}, /* 05 (800x600x60Hz) */
1578         {18, 1682, 0,    1201}, /* 06 (1024x768x60Hz) */
1579         {18, 1682, 1232, 1183}, /* 07 (1280x1024x60Hz) */
1580         {18, 1682, 0,    1201}, /* 08 (1400x1050x60Hz) */
1581         {18, 1682, 0,    1201} /* 09 (1600x1200x60Hz) */
1582 };
1583
1584 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1600x1200Data[] = {
1585         {9, 1673, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1586         {9, 1673, 0, 1201}, /* 01 (320x350,640x350) */
1587         {9, 1673, 0, 1201}, /* 02 (360x400,720x400) */
1588         {9, 1673, 0, 1201}, /* 03 (720x350) */
1589         {9, 1673, 0, 1201}, /* 04 (640x480x60Hz) */
1590         {9, 1673, 0, 1201}, /* 05 (800x600x60Hz) */
1591         {9, 1673, 0, 1201}, /* 06 (1024x768x60Hz) */
1592         {9, 1673, 0, 1201}, /* 07 (1280x1024x60Hz) */
1593         {9, 1673, 0, 1201}, /* 08 (1400x1050x60Hz) */
1594         {9, 1673, 0, 1201}  /* 09 (1600x1200x60Hz) */
1595 };
1596
1597 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1600x1200Data[] = {
1598         {9, 1673, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
1599         {9, 1673, 1083, 1034}, /* 01 (320x350,640x350) */
1600         {9, 1673, 1150, 1101}, /* 02 (360x400,720x400) */
1601         {9, 1673, 1083, 1034}, /* 03 (720x350) */
1602         {9, 1673, 0,    1201}, /* 04 (640x480x60Hz) */
1603         {9, 1673, 0,    1201}, /* 05 (800x600x60Hz) */
1604         {9, 1673, 0,    1201}, /* 06 (1024x768x60Hz) */
1605         {9, 1673, 1232, 1183}, /* 07 (1280x1024x60Hz) */
1606         {9, 1673, 0,    1201}, /* 08 (1400x1050x60Hz) */
1607         {9, 1673, 0,    1201}  /* 09 (1600x1200x60Hz) */
1608 };
1609
1610 static struct XGI330_LCDDataDesStruct2  XGI_NoScalingDesData[] = {
1611         {9, 657,  448, 405,  96,   2}, /* 00 (320x200,320x400,
1612                                               640x200,640x400) */
1613         {9, 657,  448, 355,  96,   2}, /* 01 (320x350,640x350) */
1614         {9, 657,  448, 405,  96,   2}, /* 02 (360x400,720x400) */
1615         {9, 657,  448, 355,  96,   2}, /* 03 (720x350) */
1616         {9, 657,  1,   483,  96,   2}, /* 04 (640x480x60Hz) */
1617         {9, 849,  627, 600,  128,  4}, /* 05 (800x600x60Hz) */
1618         {9, 1057, 805, 770,  0136, 6}, /* 06 (1024x768x60Hz) */
1619         {9, 1337, 0,   1025, 112,  3}, /* 07 (1280x1024x60Hz) */
1620         {9, 1457, 0,   1051, 112,  3}, /* 08 (1400x1050x60Hz) },
1621                                         //;[ycchen] 12/19/02 */
1622         {9, 1673, 0,   1201, 192,  3}, /* 09 (1600x1200x60Hz) */
1623         {9, 1337, 0,   771,  112,  6}  /* 0A (1280x768x60Hz) */
1624 };
1625
1626 /* ;;1024x768x75Hz */
1627 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1024x768x75Data[] = {
1628         {9, 1049, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1629         {9, 1049, 0, 769}, /* ; 01 (320x350,640x350) */
1630         {9, 1049, 0, 769}, /* ; 02 (360x400,720x400) */
1631         {9, 1049, 0, 769}, /* ; 03 (720x350) */
1632         {9, 1049, 0, 769}, /* ; 04 (640x480x75Hz) */
1633         {9, 1049, 0, 769}, /* ; 05 (800x600x75Hz) */
1634         {9, 1049, 0, 769}  /* ; 06 (1024x768x75Hz) */
1635 };
1636
1637 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1024x768x75Data[] = {
1638         {9, 1049, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1639         {9, 1049, 0, 769}, /* ; 01 (320x350,640x350) */
1640         {9, 1049, 0, 769}, /* ; 02 (360x400,720x400) */
1641         {9, 1049, 0, 769}, /* ; 03 (720x350) */
1642         {9, 1049, 0, 769}, /* ; 04 (640x480x75Hz) */
1643         {9, 1049, 0, 769}, /* ; 05 (800x600x75Hz) */
1644         {9, 1049, 0, 769}  /* ; 06 (1024x768x75Hz) */
1645 };
1646
1647 /* ;;1024x768x75Hz */
1648 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1024x768x75Data[] = {
1649         {1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1650         {1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
1651         {1192, 896,  622, 587}, /* ; 02 (360x400,720x400) */
1652         {1192, 896,  597, 562}, /* ; 03 (720x350) */
1653         {1129, 857,  656, 625}, /* ; 04 (640x480x75Hz) */
1654         {1209, 937,  716, 685}, /* ; 05 (800x600x75Hz) */
1655         {9,    1049, 0,   769}  /* ; 06 (1024x768x75Hz) */
1656 };
1657
1658 /* ;;1280x1024x75Hz */
1659 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1280x1024x75Data[] = {
1660         {18, 1314, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1661         {18, 1314, 0, 1025}, /* ; 01 (320x350,640x350) */
1662         {18, 1314, 0, 1025}, /* ; 02 (360x400,720x400) */
1663         {18, 1314, 0, 1025}, /* ; 03 (720x350) */
1664         {18, 1314, 0, 1025}, /* ; 04 (640x480x60Hz) */
1665         {18, 1314, 0, 1025}, /* ; 05 (800x600x60Hz) */
1666         {18, 1314, 0, 1025}, /* ; 06 (1024x768x60Hz) */
1667         {18, 1314, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
1668 };
1669
1670 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1280x1024x75Data[] = {
1671         {18, 1314, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1672         {18, 1314, 0, 1025}, /* ; 01 (320x350,640x350) */
1673         {18, 1314, 0, 1025}, /* ; 02 (360x400,720x400) */
1674         {18, 1314, 0, 1025}, /* ; 03 (720x350) */
1675         {18, 1314, 0, 1025}, /* ; 04 (640x480x60Hz) */
1676         {18, 1314, 0, 1025}, /* ; 05 (800x600x60Hz) */
1677         {18, 1314, 0, 1025}, /* ; 06 (1024x768x60Hz) */
1678         {18, 1314, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
1679 };
1680
1681 /* 1280x1024x75Hz */
1682 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDLDes1280x1024x75Data[] = {
1683         {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1684         {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
1685         {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
1686         {1408, 1048, 729, 688}, /* ; 03 (720x350) */
1687         {1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
1688         {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
1689         {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
1690         {18,   1314, 0,   1025} /* ; 07 (1280x1024x75Hz) */
1691 };
1692
1693 /* ;;1280x1024x75Hz */
1694 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1280x1024x75Data[] = {
1695         {9, 1305, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1696         {9, 1305, 0, 1025}, /* ; 01 (320x350,640x350) */
1697         {9, 1305, 0, 1025}, /* ; 02 (360x400,720x400) */
1698         {9, 1305, 0, 1025}, /* ; 03 (720x350) */
1699         {9, 1305, 0, 1025}, /* ; 04 (640x480x60Hz) */
1700         {9, 1305, 0, 1025}, /* ; 05 (800x600x60Hz) */
1701         {9, 1305, 0, 1025}, /* ; 06 (1024x768x60Hz) */
1702         {9, 1305, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
1703 };
1704
1705 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1280x1024x75Data[] = {
1706         {9, 1305, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1707         {9, 1305, 0, 1025}, /* ; 01 (320x350,640x350) */
1708         {9, 1305, 0, 1025}, /* ; 02 (360x400,720x400) */
1709         {9, 1305, 0, 1025}, /* ; 03 (720x350) */
1710         {9, 1305, 0, 1025}, /* ; 04 (640x480x60Hz) */
1711         {9, 1305, 0, 1025}, /* ; 05 (800x600x60Hz) */
1712         {9, 1305, 0, 1025}, /* ; 06 (1024x768x60Hz) */
1713         {9, 1305, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
1714 };
1715
1716 /* 1280x1024x75Hz */
1717 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1280x1024x75Data[] = {
1718         {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1719         {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
1720         {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
1721         {1408, 1048, 729, 688}, /* ; 03 (720x350) */
1722         {1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
1723         {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
1724         {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
1725         {9,    1305, 0,   1025} /* ; 07 (1280x1024x75Hz) */
1726 };
1727
1728 /* Scaling LCD 75Hz */
1729 static struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesDatax75[] =  {
1730         {9, 657,  448, 405,  96,  2}, /* ; 00 (320x200,320x400,
1731                                                640x200,640x400) */
1732         {9, 657,  448, 355,  96,  2}, /* ; 01 (320x350,640x350) */
1733         {9, 738,  448, 405,  108, 2}, /* ; 02 (360x400,720x400) */
1734         {9, 738,  448, 355,  108, 2}, /* ; 03 (720x350) */
1735         {9, 665,  0,   481,  64,  3}, /* ; 04 (640x480x75Hz) */
1736         {9, 825,  0,   601,  80,  3}, /* ; 05 (800x600x75Hz) */
1737         {9, 1049, 0,   769,  96,  3}, /* ; 06 (1024x768x75Hz) */
1738         {9, 1305, 0,   1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
1739         {9, 1457, 0,   1051, 112, 3}, /* ; 08 (1400x1050x60Hz)
1740                                          ;;[ycchen] 12/19/02 */
1741         {9, 1673, 0,   1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
1742         {9, 1337, 0,   771,  112, 6}  /* ; 0A (1280x768x60Hz) */
1743 };
1744
1745 static struct XGI330_TVDataStruct  XGI_StPALData[] = {
1746         {1, 1, 864, 525, 1270, 400, 100, 0, 760},
1747         {1, 1, 864, 525, 1270, 350, 100, 0, 760},
1748         {1, 1, 864, 525, 1270, 400,   0, 0, 720},
1749         {1, 1, 864, 525, 1270, 350,   0, 0, 720},
1750         {1, 1, 864, 525, 1270, 480,  50, 0, 760},
1751         {1, 1, 864, 525, 1270, 600,  50, 0,   0}
1752 };
1753
1754 static struct XGI330_TVDataStruct  XGI_ExtPALData[] = {
1755         {2,  1, 1080, 463, 1270, 500,  50, 0,  50},
1756         {15, 7, 1152, 413, 1270, 500,  50, 0,  50},
1757         {2,  1, 1080, 463, 1270, 500,  50, 0,  50},
1758         {15, 7, 1152, 413, 1270, 500,  50, 0,  50},
1759         {2,  1,  900, 543, 1270, 500,   0, 0,  50},
1760         {4,  3, 1080, 663, 1270, 500, 438, 0, 438},
1761         {1,  1, 1125, 831, 1270, 500, 686, 0, 686}, /*301b*/
1762         {3,  2, 1080, 619, 1270, 540, 438, 0, 438}
1763 };
1764
1765 static struct XGI330_TVDataStruct  XGI_StNTSCData[] = {
1766         {1, 1, 858, 525, 1270, 400, 50, 0, 760},
1767         {1, 1, 858, 525, 1270, 350, 50, 0, 640},
1768         {1, 1, 858, 525, 1270, 400,  0, 0, 720},
1769         {1, 1, 858, 525, 1270, 350,  0, 0, 720},
1770         {1, 1, 858, 525, 1270, 480,  0, 0, 760}
1771 };
1772
1773 static struct XGI330_TVDataStruct  XGI_ExtNTSCData[] = {
1774         {9,     5, 1001, 453, 1270, 420, 171, 0, 171},
1775         {12,    5,  858, 403, 1270, 420, 171, 0, 171},
1776         {9,     5, 1001, 453, 1270, 420, 171, 0, 171},
1777         {12,    5,  858, 403, 1270, 420, 171, 0, 171},
1778         {143,  80,  836, 523, 1270, 420, 224, 0,   0},
1779         {143, 120, 1008, 643, 1270, 420,   0, 1,   0},
1780         {1,     1, 1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
1781         {2,     1,  858, 503, 1584, 480,   0, 1,   0},
1782         {3,     2, 1001, 533, 1270, 420,   0, 0,   0}
1783 };
1784
1785 static struct XGI330_TVDataStruct  XGI_St1HiTVData[] = {
1786         {1, 1, 892,  563, 690,  800, 0,     0, 0}, /* 00 (320x200,320x400,
1787                                                           640x200,640x400) */
1788         {1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
1789         {1, 1, 1000, 563, 785,  800, 0,     0, 0}, /* 02 (360x400,720x400) */
1790         {1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
1791         {1, 1, 892,  563, 690,  960, 0,     0, 0}, /* 04 (320x240,640x480) */
1792         {8, 5, 1050, 683, 1648, 960, 0x150, 1, 0}  /* 05 (400x300,800x600) */
1793 };
1794
1795 static struct XGI330_TVDataStruct  XGI_St2HiTVData[] = {
1796         {3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 00 (320x200,320x400,
1797                                                           640x200,640x400) */
1798         {1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
1799         {3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 02 (360x400,720x400) */
1800         {1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
1801         {5, 2, 840,  563, 1648, 960, 0x08D, 1, 0}, /* 04 (320x240,640x480) */
1802         {8, 5, 1050, 683, 1648, 960, 0x17C, 1, 0}  /* 05 (400x300,800x600) */
1803 };
1804
1805 static struct XGI330_TVDataStruct  XGI_ExtHiTVData[] = {
1806         {6,  1,  840,  563,  1632, 960, 0,     0, 0}, /* 00 (320x200,320x400,
1807                                                              640x200,640x400) */
1808         {3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 01 (320x350,640x350) */
1809         {3,  1,  840,  483,  1632, 960, 0,     0, 0}, /* 02 (360x400,720x400) */
1810         {3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 03 (720x350) */
1811         {5,  1,  840,  563,  1648, 960, 0x166, 1, 0}, /* 04 (320x240,640x480) */
1812         {16, 5,  1050, 683,  1648, 960, 0x143, 1, 0}, /* 05 (400x300,800x600) */
1813         {25, 12, 1260, 851,  1648, 960, 0x032, 0, 0}, /* 06 (512x384,1024x768)*/
1814         {5,  4,  1575, 1124, 1648, 960, 0x128, 0, 0}, /* 07 (1280x1024) */
1815         {4,  1,  1050, 563,  1548, 960, 0x143, 1, 0}, /* 08 (800x480) */
1816         {5,  2,  1400, 659,  1648, 960, 0x032, 0, 0}, /* 09 (1024x576) */
1817         {8,  5,  1750, 803,  1648, 960, 0x128, 0, 0}  /* 0A (1280x720) */
1818 };
1819
1820 static struct XGI330_TVDataStruct  XGI_ExtYPbPr525iData[] = {
1821         {  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
1822         { 12,  5,   858, 403, 1270, 420, 171,   0, 171},
1823         {  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
1824         { 12,  5,   858, 403, 1270, 420, 171,   0, 171},
1825         {143,  80,  836, 523, 1250, 420, 224,   0,   0},
1826         {143, 120, 1008, 643, 1250, 420,   0,   1,   0},
1827         { 1,    1, 1120, 821, 1516, 420,   0,   1,   0}, /*301b*/
1828         {  2,   1,  858, 503, 1584, 480,   0,   1,   0},
1829         {  3,   2, 1001, 533, 1250, 420,   0,   0,   0}
1830 };
1831
1832 static struct XGI330_TVDataStruct  XGI_StYPbPr525iData[] = {
1833         {1, 1, 858, 525, 1270, 400, 50, 0, 760},
1834         {1, 1, 858, 525, 1270, 350, 50, 0, 640},
1835         {1, 1, 858, 525, 1270, 400,  0, 0, 720},
1836         {1, 1, 858, 525, 1270, 350,  0, 0, 720},
1837         {1, 1, 858, 525, 1270, 480,  0, 0, 760},
1838 };
1839
1840 static struct XGI330_TVDataStruct  XGI_ExtYPbPr525pData[] = {
1841         {  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
1842         { 12,   5,   858, 403, 1270, 420, 171, 0, 171},
1843         {  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
1844         { 12,   5,   858, 403, 1270, 420, 171, 0, 171},
1845         {143,  80,   836, 523, 1270, 420, 224, 0,   0},
1846         {143, 120,  1008, 643, 1270, 420,   0, 1,   0},
1847         { 1,    1,  1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
1848         {  2,   1,   858, 503, 1584, 480,   0, 1,   0},
1849         {  3,   2,  1001, 533, 1270, 420,   0, 0,   0}
1850 };
1851
1852 static struct XGI330_TVDataStruct  XGI_StYPbPr525pData[] = {
1853         {1, 1, 1716, 525, 1270, 400, 50, 0, 760},
1854         {1, 1, 1716, 525, 1270, 350, 50, 0, 640},
1855         {1, 1, 1716, 525, 1270, 400,  0, 0, 720},
1856         {1, 1, 1716, 525, 1270, 350,  0, 0, 720},
1857         {1, 1, 1716, 525, 1270, 480,  0, 0, 760},
1858 };
1859
1860 static struct XGI330_TVDataStruct  XGI_ExtYPbPr750pData[] = {
1861         { 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 00 (320x200,320x400,
1862                                                          640x200,640x400) */
1863         {24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 01 (320x350,640x350) */
1864         { 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 02 (360x400,720x400) */
1865         {24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 03 (720x350) */
1866         { 2, 1, 1100, 590, 1130, 640,  50, 0, 0}, /* 04 (320x240,640x480) */
1867         { 3, 2, 1210, 690, 1130, 660,  50, 0, 0}, /* 05 (400x300,800x600) */
1868         { 1, 1, 1375, 878, 1130, 640, 638, 0, 0}, /* 06 (1024x768) */
1869         { 2, 1,  858, 503, 1130, 480,   0, 1, 0}, /* 07 (720x480) */
1870         { 5, 4, 1815, 570, 1130, 660,  50, 0, 0},
1871         { 5, 3, 1100, 686, 1130, 640,  50, 1, 0},
1872         {10, 9, 1320, 830, 1130, 640,  50, 0, 0}
1873 };
1874
1875 static struct XGI330_TVDataStruct  XGI_StYPbPr750pData[] = {
1876         {1, 1, 1650, 750, 1280, 400, 50, 0, 760},
1877         {1, 1, 1650, 750, 1280, 350, 50, 0, 640},
1878         {1, 1, 1650, 750, 1280, 400,  0, 0, 720},
1879         {1, 1, 1650, 750, 1280, 350,  0, 0, 720},
1880         {1, 1, 1650, 750, 1280, 480,  0, 0, 760},
1881 };
1882
1883 static unsigned char XGI330_NTSCTiming[] = {
1884         0x17, 0x1d, 0x03, 0x09, 0x05, 0x06, 0x0c, 0x0c,
1885         0x94, 0x49, 0x01, 0x0a, 0x06, 0x0d, 0x04, 0x0a,
1886         0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x1b,
1887         0x0c, 0x50, 0x00, 0x97, 0x00, 0xda, 0x4a, 0x17,
1888         0x7d, 0x05, 0x4b, 0x00, 0x00, 0xe2, 0x00, 0x02,
1889         0x03, 0x0a, 0x65, 0x9d, 0x08, 0x92, 0x8f, 0x40,
1890         0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x50,
1891         0x00, 0x40, 0x44, 0x00, 0xdb, 0x02, 0x3b, 0x00
1892 };
1893
1894 static unsigned char XGI330_PALTiming[] = {
1895         0x21, 0x5A, 0x35, 0x6e, 0x04, 0x38, 0x3d, 0x70,
1896         0x94, 0x49, 0x01, 0x12, 0x06, 0x3e, 0x35, 0x6d,
1897         0x06, 0x14, 0x3e, 0x35, 0x6d, 0x00, 0x45, 0x2b,
1898         0x70, 0x50, 0x00, 0x9b, 0x00, 0xd9, 0x5d, 0x17,
1899         0x7d, 0x05, 0x45, 0x00, 0x00, 0xe8, 0x00, 0x02,
1900         0x0d, 0x00, 0x68, 0xb0, 0x0b, 0x92, 0x8f, 0x40,
1901         0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x63,
1902         0x00, 0x40, 0x3e, 0x00, 0xe1, 0x02, 0x28, 0x00
1903 };
1904
1905 static unsigned char XGI330_HiTVExtTiming[] = {
1906         0x2D, 0x60, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1907         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1908         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1909         0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1910         0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1911         0x8E, 0x8E, 0x82, 0x07, 0x0B,
1912         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1913         0x60, 0x14, 0x3D, 0x63, 0x4F,
1914         0x27, 0x00, 0xfc, 0xff, 0x6a, 0x00
1915 };
1916
1917 static unsigned char XGI330_HiTVSt1Timing[] = {
1918         0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1919         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1920         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1921         0x65, 0x90, 0x7B, 0xA8, 0x03, 0xF0, 0x87, 0x03,
1922         0x11, 0x15, 0x11, 0xCF, 0x10, 0x11, 0xCF, 0x10,
1923         0x35, 0x35, 0x3B, 0x69, 0x1D,
1924         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1925         0x60, 0x04, 0x86, 0xAF, 0x5D,
1926         0x0E, 0x00, 0xfc, 0xff, 0x2d, 0x00
1927 };
1928
1929 static unsigned char XGI330_HiTVSt2Timing[] = {
1930         0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1931         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1932         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1933         0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1934         0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1935         0x8E, 0x8E, 0x82, 0x07, 0x0B,
1936         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1937         0x60, 0x14, 0x3D, 0x63, 0x4F,
1938         0x27, 0x00, 0xFC, 0xff, 0x6a, 0x00
1939 };
1940
1941 static unsigned char XGI330_HiTVTextTiming[] = {
1942         0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1943         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1944         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1945         0x65, 0x90, 0xE7, 0xBC, 0x03, 0x0C, 0x97, 0x03,
1946         0x14, 0x78, 0x14, 0x08, 0x20, 0x14, 0x08, 0x20,
1947         0xC8, 0xC8, 0x3B, 0xD2, 0x26,
1948         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1949         0x60, 0x04, 0x96, 0x72, 0x5C,
1950         0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1951 };
1952
1953 static unsigned char XGI330_YPbPr750pTiming[] = {
1954         0x30, 0x1d, 0xe8, 0x09, 0x09, 0xed, 0x0c, 0x0c,
1955         0x98, 0x0a, 0x01, 0x0c, 0x06, 0x0d, 0x04, 0x0a,
1956         0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1957         0xed, 0x50, 0x70, 0x9f, 0x16, 0x59, 0x60, 0x13,
1958         0x27, 0x0b, 0x27, 0xfc, 0x30, 0x27, 0x1c, 0xb0,
1959         0x4b, 0x4b, 0x6f, 0x2f, 0x63,
1960         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1961         0x60, 0x14, 0x73, 0x00, 0x40,
1962         0x11, 0x00, 0xfc, 0xff, 0x32, 0x00
1963 };
1964
1965 static unsigned char XGI330_YPbPr525pTiming[] = {
1966         0x3E, 0x11, 0x06, 0x09, 0x0b, 0x0c, 0x0c, 0x0c,
1967         0x98, 0x0a, 0x01, 0x0d, 0x06, 0x0d, 0x04, 0x0a,
1968         0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1969         0x0c, 0x50, 0xb2, 0x9f, 0x16, 0x59, 0x4f, 0x13,
1970         0xad, 0x11, 0xad, 0x1d, 0x40, 0x8a, 0x3d, 0xb8,
1971         0x51, 0x5e, 0x60, 0x49, 0x7d,
1972         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1973         0x60, 0x14, 0x4B, 0x43, 0x41,
1974         0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1975 };
1976
1977 static unsigned char XGI330_YPbPr525iTiming[] = {
1978         0x1B, 0x21, 0x03, 0x09, 0x05, 0x06, 0x0C, 0x0C,
1979         0x94, 0x49, 0x01, 0x0A, 0x06, 0x0D, 0x04, 0x0A,
1980         0x06, 0x14, 0x0D, 0x04, 0x0A, 0x00, 0x85, 0x1B,
1981         0x0C, 0x50, 0x00, 0x97, 0x00, 0xDA, 0x4A, 0x17,
1982         0x7D, 0x05, 0x4B, 0x00, 0x00, 0xE2, 0x00, 0x02,
1983         0x03, 0x0A, 0x65, 0x9D, 0x08,
1984         0x92, 0x8F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1985         0x60, 0x14, 0x4B, 0x00, 0x40,
1986         0x44, 0x00, 0xDB, 0x02, 0x3B, 0x00
1987 };
1988
1989 static unsigned char XGI330_HiTVGroup3Data[] = {
1990         0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x5F,
1991         0x05, 0x21, 0xB2, 0xB2, 0x55, 0x77, 0x2A, 0xA6,
1992         0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1993         0x8C, 0x6E, 0x60, 0x2E, 0x58, 0x48, 0x72, 0x44,
1994         0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1995         0x4F, 0x7F, 0x03, 0xA8, 0x7D, 0x20, 0x1A, 0xA9,
1996         0x14, 0x05, 0x03, 0x7E, 0x64, 0x31, 0x14, 0x75,
1997         0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1998 };
1999
2000 static unsigned char XGI330_HiTVGroup3Simu[] = {
2001         0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x95,
2002         0xDB, 0x20, 0xB8, 0xB8, 0x55, 0x47, 0x2A, 0xA6,
2003         0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
2004         0x8C, 0x6E, 0x60, 0x15, 0x26, 0xD3, 0xE4, 0x11,
2005         0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
2006         0x67, 0x36, 0x01, 0x47, 0x0E, 0x10, 0xBE, 0xB4,
2007         0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
2008         0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
2009 };
2010
2011 static unsigned char XGI330_HiTVGroup3Text[] = {
2012         0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0xA7,
2013         0xF5, 0x20, 0xCE, 0xCE, 0x55, 0x47, 0x2A, 0xA6,
2014         0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
2015         0x8C, 0x6E, 0x60, 0x18, 0x2C, 0x0C, 0x20, 0x22,
2016         0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
2017         0x93, 0x3C, 0x01, 0x50, 0x2F, 0x10, 0xF4, 0xCA,
2018         0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
2019         0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
2020 };
2021
2022 static unsigned char XGI330_Ren525pGroup3[] = {
2023         0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
2024         0xB1, 0x41, 0x62, 0x62, 0xFF, 0xF4, 0x45, 0xa6,
2025         0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
2026         0xAC, 0xDA, 0x60, 0xFe, 0x6A, 0x9A, 0x06, 0x10,
2027         0xd1, 0x04, 0x18, 0x0a, 0xFF, 0x80, 0x00, 0x80,
2028         0x3c, 0x77, 0x00, 0xEF, 0xE0, 0x10, 0xB0, 0xE0,
2029         0x10, 0x4F, 0x0F, 0x0F, 0x05, 0x0F, 0x08, 0x6E,
2030         0x1a, 0x1F, 0x25, 0x2a, 0x4C, 0xAA, 0x01
2031 };
2032
2033 static unsigned char XGI330_Ren750pGroup3[] = {
2034         0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
2035         0x54, 0x41, 0xE7, 0xE7, 0xFF, 0xF4, 0x45, 0xa6,
2036         0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
2037         0xAC, 0x6A, 0x60, 0x2b, 0x52, 0xCD, 0x61, 0x10,
2038         0x51, 0x04, 0x18, 0x0a, 0x1F, 0x80, 0x00, 0x80,
2039         0xFF, 0xA4, 0x04, 0x2B, 0x94, 0x21, 0x72, 0x94,
2040         0x26, 0x05, 0x01, 0x0F, 0xed, 0x0F, 0x0A, 0x64,
2041         0x18, 0x1D, 0x23, 0x28, 0x4C, 0xAA, 0x01
2042 };
2043
2044 #if 0
2045 static struct XGI_PanelDelayTblStruct XGI330_PanelDelayTbl[] = {
2046         { {0x00, 0x00} },
2047         { {0x00, 0x00} },
2048         { {0x00, 0x00} },
2049         { {0x00, 0x00} },
2050         { {0x00, 0x00} },
2051         { {0x00, 0x00} },
2052         { {0x00, 0x00} },
2053         { {0x00, 0x00} },
2054         { {0x00, 0x00} },
2055         { {0x00, 0x00} },
2056         { {0x00, 0x00} },
2057         { {0x00, 0x00} },
2058         { {0x00, 0x00} },
2059         { {0x00, 0x00} },
2060         { {0x00, 0x00} },
2061         { {0x00, 0x00} }
2062 };
2063
2064 static struct XGI330_LVDSDataStruct  XGI330_LVDS320x480Data_1[] = {
2065         {848,  433, 400,  525},
2066         {848,  389, 400,  525},
2067         {848,  433, 400,  525},
2068         {848,  389, 400,  525},
2069         {848,  518, 400,  525},
2070         {1056, 628, 400,  525},
2071         {400,  525, 400,  525},
2072         {800,  449, 1000, 644},
2073         {800,  525, 1000, 635}
2074 };
2075
2076 static struct XGI330_LVDSDataStruct  XGI330_LVDS800x600Data_1[] = {
2077         {848,  433, 1060, 629},
2078         {848,  389, 1060, 629},
2079         {848,  433, 1060, 629},
2080         {848,  389, 1060, 629},
2081         {848,  518, 1060, 629},
2082         {1056, 628, 1056, 628},
2083         {1056, 628, 1056, 628},
2084         {800,  449, 1000, 644},
2085         {800,  525, 1000, 635}
2086 };
2087
2088 static struct XGI330_LVDSDataStruct  XGI330_LVDS800x600Data_2[] = {
2089         {1056, 628, 1056, 628},
2090         {1056, 628, 1056, 628},
2091         {1056, 628, 1056, 628},
2092         {1056, 628, 1056, 628},
2093         {1056, 628, 1056, 628},
2094         {1056, 628, 1056, 628},
2095         {1056, 628, 1056, 628},
2096         {800,  449, 1000, 644},
2097         {800,  525, 1000, 635}
2098 };
2099 #endif
2100
2101 static struct XGI330_LVDSDataStruct  XGI_LVDS1024x768Data_1[] = {
2102         { 960, 438, 1344, 806}, /* 00 (320x200,320x400,640x200,640x400) */
2103         { 960, 388, 1344, 806}, /* 01 (320x350,640x350) */
2104         {1040, 438, 1344, 806}, /* 02 (360x400,720x400) */
2105         {1040, 388, 1344, 806}, /* 03 (720x350) */
2106         { 960, 518, 1344, 806}, /* 04 (320x240,640x480) */
2107         {1120, 638, 1344, 806}, /* 05 (400x300,800x600) */
2108         {1344, 806, 1344, 806}  /* 06 (512x384,1024x768) */
2109 };
2110
2111
2112 static struct XGI330_LVDSDataStruct  XGI_LVDS1024x768Data_2[] = {
2113         {1344, 806, 1344, 806},
2114         {1344, 806, 1344, 806},
2115         {1344, 806, 1344, 806},
2116         {1344, 806, 1344, 806},
2117         {1344, 806, 1344, 806},
2118         {1344, 806, 1344, 806},
2119         {1344, 806, 1344, 806},
2120         {800,  449, 1280, 801},
2121         {800,  525, 1280, 813}
2122 };
2123
2124 static struct XGI330_LVDSDataStruct  XGI_LVDS1280x1024Data_1[] = {
2125         {1048, 442,  1688, 1066},
2126         {1048, 392,  1688, 1066},
2127         {1048, 442,  1688, 1066},
2128         {1048, 392,  1688, 1066},
2129         {1048, 522,  1688, 1066},
2130         {1208, 642,  1688, 1066},
2131         {1432, 810,  1688, 1066},
2132         {1688, 1066, 1688, 1066}
2133 };
2134
2135 static struct XGI330_LVDSDataStruct  XGI_LVDS1280x1024Data_2[] = {
2136         {1344, 806, 1344, 806},
2137         {1344, 806, 1344, 806},
2138         {1344, 806, 1344, 806},
2139         {1344, 806, 1344, 806},
2140         {1344, 806, 1344, 806},
2141         {1344, 806, 1344, 806},
2142         {1344, 806, 1344, 806},
2143         {800,  449, 1280, 801},
2144         {800,  525, 1280, 813}
2145 };
2146 /*
2147 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768Data_1[] = {
2148         {768,  438, 1408, 806},
2149         {768,  388, 1408, 806},
2150         {768,  438, 1408, 806},
2151         {768,  388, 1408, 806},
2152         {768,  518, 1408, 806},
2153         {928,  638, 1408, 806},
2154         {1408, 806, 1408, 806},
2155         {1408, 806, 1408, 806},
2156         {1408, 806, 1408, 806}
2157 };
2158
2159 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768Data_2[] = {
2160         {1408, 806, 1408, 806},
2161         {1408, 806, 1408, 806},
2162         {1408, 806, 1408, 806},
2163         {1408, 806, 1408, 806},
2164         {1408, 806, 1408, 806},
2165         {1408, 806, 1408, 806},
2166         {1408, 806, 1408, 806},
2167         {1408, 806, 1408, 806},
2168         {1408, 806, 1408, 806}
2169 };
2170
2171 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768NData_1[] = {
2172         {704,  438, 1344, 806},
2173         {704,  388, 1344, 806},
2174         {704,  438, 1344, 806},
2175         {704,  388, 1344, 806},
2176         {704,  518, 1344, 806},
2177         {864,  638, 1344, 806},
2178         {1088, 806, 1344, 806},
2179         {1344, 806, 1344, 806},
2180         {1344, 806, 1344, 806}
2181 };
2182
2183 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768NData_2[] = {
2184         {1344, 806, 1344, 806},
2185         {1344, 806, 1344, 806},
2186         {1344, 806, 1344, 806},
2187         {1344, 806, 1344, 806},
2188         {1344, 806, 1344, 806},
2189         {1344, 806, 1344, 806},
2190         {1344, 806, 1344, 806},
2191         {1344, 806, 1344, 806},
2192         {1344, 806, 1344, 806}
2193 };
2194
2195 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768SData_1[] = {
2196         {1048, 438, 1688, 806},
2197         {1048, 388, 1688, 806},
2198         {1148, 438, 1688, 806},
2199         {1148, 388, 1688, 806},
2200         {1048, 518, 1688, 806},
2201         {1208, 638, 1688, 806},
2202         {1432, 806, 1688, 806},
2203         {1688, 806, 1688, 806},
2204         {1688, 806, 1688, 806}
2205 };
2206
2207 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768SData_2[] = {
2208         {1688, 806, 1688, 806},
2209         {1688, 806, 1688, 806},
2210         {1688, 806, 1688, 806},
2211         {1688, 806, 1688, 806},
2212         {1688, 806, 1688, 806},
2213         {1688, 806, 1688, 806},
2214         {1688, 806, 1688, 806},
2215         {1688, 806, 1688, 806},
2216         {1688, 806, 1688, 806}
2217 };
2218 */
2219 static struct XGI330_LVDSDataStruct  XGI_LVDS1400x1050Data_1[] = {
2220         {928,   416, 1688, 1066},
2221         {928,   366, 1688, 1066},
2222         {928,   416, 1688, 1066},
2223         {928,   366, 1688, 1066},
2224         {928,   496, 1688, 1066},
2225         {1088,  616, 1688, 1066},
2226         {1312,  784, 1688, 1066},
2227         {1568, 1040, 1688, 1066},
2228         {1688, 1066, 1688, 1066}
2229 };
2230
2231 static struct XGI330_LVDSDataStruct  XGI_LVDS1400x1050Data_2[] = {
2232         {1688, 1066, 1688, 1066},
2233         {1688, 1066, 1688, 1066},
2234         {1688, 1066, 1688, 1066},
2235         {1688, 1066, 1688, 1066},
2236         {1688, 1066, 1688, 1066},
2237         {1688, 1066, 1688, 1066},
2238         {1688, 1066, 1688, 1066},
2239         {1688, 1066, 1688, 1066},
2240         {1688, 1066, 1688, 1066}
2241 };
2242
2243 /* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */
2244 static struct XGI330_LVDSDataStruct XGI_LVDS1600x1200Data_1[] = {
2245         {1088, 520,  2048, 1320}, /* 00 (320x200,320x400,640x200,640x400) */
2246         {1088, 470,  2048, 1320}, /* 01 (320x350,640x350) */
2247         {1088, 520,  2048, 1320}, /* 02 (360x400,720x400) */
2248         {1088, 470,  2048, 1320}, /* 03 (720x350) */
2249         {1088, 600,  2048, 1320}, /* 04 (320x240,640x480) */
2250         {1248, 720,  2048, 1320}, /* 05 (400x300,800x600) */
2251         {1472, 888,  2048, 1320}, /* 06 (512x384,1024x768) */
2252         {1728, 1144, 2048, 1320}, /* 07 (640x512,1280x1024) */
2253         {1848, 1170, 2048, 1320}, /* 08 (1400x1050) */
2254         {2048, 1320, 2048, 1320}  /* 09 (1600x1200) */
2255 };
2256
2257 static struct XGI330_LVDSDataStruct XGI_LVDSNoScalingData[] = {
2258         { 800,  449,  800,  449}, /* 00 (320x200,320x400,640x200,640x400) */
2259         { 800,  449,  800,  449}, /* 01 (320x350,640x350) */
2260         { 800,  449,  800,  449}, /* 02 (360x400,720x400) */
2261         { 800,  449,  800,  449}, /* 03 (720x350) */
2262         { 800,  525,  800,  525}, /* 04 (640x480x60Hz) */
2263         {1056,  628, 1056,  628}, /* 05 (800x600x60Hz) */
2264         {1344,  806, 1344,  806}, /* 06 (1024x768x60Hz) */
2265         {1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
2266         {1688, 1066, 1688, 1066}, /* 08 (1400x1050x60Hz) ;;[ycchen] 12/19/02 */
2267         {2160, 1250, 2160, 1250}, /* 09 (1600x1200x60Hz) */
2268         {1688,  806, 1688,  806}  /* 0A (1280x768x60Hz) */
2269 };
2270
2271 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Data_1x75[] = {
2272         { 960, 438, 1312, 800}, /* 00 (320x200,320x400,640x200,640x400) */
2273         { 960, 388, 1312, 800}, /* 01 (320x350,640x350) */
2274         {1040, 438, 1312, 800}, /* 02 (360x400,720x400) */
2275         {1040, 388, 1312, 800}, /* 03 (720x350) */
2276         { 928, 512, 1312, 800}, /* 04 (320x240,640x480) */
2277         {1088, 632, 1312, 800}, /* 05 (400x300,800x600) */
2278         {1312, 800, 1312, 800}, /* 06 (512x384,1024x768) */
2279 };
2280
2281
2282 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Data_2x75[] = {
2283         {1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,640x200,640x400) */
2284         {1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
2285         {1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
2286         {1312, 800, 1312, 800}, /* ; 03 (720x350) */
2287         {1312, 800, 1312, 800}, /* ; 04 (320x240,640x480) */
2288         {1312, 800, 1312, 800}, /* ; 05 (400x300,800x600) */
2289         {1312, 800, 1312, 800}, /* ; 06 (512x384,1024x768) */
2290 };
2291
2292 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Data_1x75[] = {
2293         {1048,  442, 1688, 1066  }, /* ; 00 (320x200,320x400,640x200,640x400) */
2294         {1048,  392, 1688, 1066  }, /* ; 01 (320x350,640x350) */
2295         {1128,  442, 1688, 1066  }, /* ; 02 (360x400,720x400) */
2296         {1128,  392, 1688, 1066  }, /* ; 03 (720x350) */
2297         {1048,  522, 1688, 1066  }, /* ; 04 (320x240,640x480) */
2298         {1208,  642, 1688, 1066  }, /* ; 05 (400x300,800x600) */
2299         {1432,  810, 1688, 1066  }, /* ; 06 (512x384,1024x768) */
2300         {1688, 1066, 1688, 1066 },  /* ; 06; 07 (640x512,1280x1024) */
2301 };
2302
2303 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Data_2x75[] = {
2304         {1688, 1066, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
2305         {1688, 1066, 1688, 1066 }, /* ; 01 (320x350,640x350) */
2306         {1688, 1066, 1688, 1066 }, /* ; 02 (360x400,720x400) */
2307         {1688, 1066, 1688, 1066 }, /* ; 03 (720x350) */
2308         {1688, 1066, 1688, 1066 }, /* ; 04 (320x240,640x480) */
2309         {1688, 1066, 1688, 1066 }, /* ; 05 (400x300,800x600) */
2310         {1688, 1066, 1688, 1066 }, /* ; 06 (512x384,1024x768) */
2311         {1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */
2312 };
2313
2314 static struct XGI330_LVDSDataStruct XGI_LVDSNoScalingDatax75[] = {
2315         { 800,  449,  800, 449},  /* ; 00 (320x200,320x400,640x200,640x400) */
2316         { 800,  449,  800, 449},  /* ; 01 (320x350,640x350) */
2317         { 900,  449,  900, 449},  /* ; 02 (360x400,720x400) */
2318         { 900,  449,  900, 449},  /* ; 03 (720x350) */
2319         { 800,  500,  800, 500},  /* ; 04 (640x480x75Hz) */
2320         {1056,  625, 1056, 625},  /* ; 05 (800x600x75Hz) */
2321         {1312,  800, 1312, 800},  /* ; 06 (1024x768x75Hz) */
2322         {1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
2323         {1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
2324                                      ;;[ycchen] 12/19/02 */
2325         {2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
2326         {1688,  806, 1688, 806},  /* ; 0A (1280x768x75Hz) */
2327 };
2328
2329 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_1[] = {
2330         {0, 1048,   0, 771}, /* 00 (320x200,320x400,640x200,640x400) */
2331         {0, 1048,   0, 771}, /* 01 (320x350,640x350) */
2332         {0, 1048,   0, 771}, /* 02 (360x400,720x400) */
2333         {0, 1048,   0, 771}, /* 03 (720x350) */
2334         {0, 1048,   0, 771}, /* 04 (640x480x60Hz) */
2335         {0, 1048,   0, 771}, /* 05 (800x600x60Hz) */
2336         {0, 1048, 805, 770}  /* 06 (1024x768x60Hz) */
2337 } ;
2338
2339 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_2[] = {
2340         {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
2341         {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
2342         {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
2343         {1142,  856, 597, 562}, /* 03 (720x350) */
2344         {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
2345         {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
2346         {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
2347 };
2348
2349 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_3[] = {
2350         {320, 24, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
2351         {320, 24, 597, 562}, /* 01 (320x350,640x350) */
2352         {320, 24, 622, 587}, /* 02 (360x400,720x400) */
2353         {320, 24, 597, 562}, /* 03 (720x350) */
2354         {320, 24, 722, 687}  /* 04 (640x480x60Hz) */
2355 };
2356
2357 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_1[] = {
2358         {0, 1328,    0, 1025}, /* 00 (320x200,320x400,640x200,640x400) */
2359         {0, 1328,    0, 1025}, /* 01 (320x350,640x350) */
2360         {0, 1328,    0, 1025}, /* 02 (360x400,720x400) */
2361         {0, 1328,    0, 1025}, /* 03 (720x350) */
2362         {0, 1328,    0, 1025}, /* 04 (640x480x60Hz) */
2363         {0, 1328,    0, 1025}, /* 05 (800x600x60Hz) */
2364         {0, 1328,    0, 1025}, /* 06 (1024x768x60Hz) */
2365         {0, 1328, 1065, 1024}  /* 07 (1280x1024x60Hz) */
2366 };
2367
2368  /* The Display setting for DE Mode Panel */
2369 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_2[] = {
2370         {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */
2371         {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */
2372         {1408, 1048, 752, 711}, /* 02 (360x400,720x400) */
2373         {1408, 1048, 729, 688}, /* 03 (720x350) */
2374         {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */
2375         {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */
2376         {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */
2377         {0000, 1328,   0, 1025} /* 07 (1280x1024x60Hz) */
2378 };
2379
2380 static struct XGI330_LVDSDataStruct XGI_LVDS1400x1050Des_1[] = {
2381         {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
2382         {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
2383         {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
2384         {0, 1448, 0, 1051}, /* 03 (720x350) */
2385         {0, 1448, 0, 1051}, /* 04 (640x480x60Hz) */
2386         {0, 1448, 0, 1051}, /* 05 (800x600x60Hz) */
2387         {0, 1448, 0, 1051}, /* 06 (1024x768x60Hz) */
2388         {0, 1448, 0, 1051}, /* 07 (1280x1024x60Hz) */
2389         {0, 1448, 0, 1051}  /* 08 (1400x1050x60Hz) */
2390 };
2391
2392 static struct XGI330_LVDSDataStruct XGI_LVDS1400x1050Des_2[] = {
2393         {1308, 1068,  781,  766}, /* 00 (320x200,320x400,640x200,640x400) */
2394         {1308, 1068,  781,  766}, /* 01 (320x350,640x350) */
2395         {1308, 1068,  781,  766}, /* 02 (360x400,720x400) */
2396         {1308, 1068,  781,  766}, /* 03 (720x350) */
2397         {1308, 1068,  781,  766}, /* 04 (640x480x60Hz) */
2398         {1388, 1148,  841,  826}, /* 05 (800x600x60Hz) */
2399         {1490, 1250,  925,  910}, /* 06 (1024x768x60Hz) */
2400         {1608, 1368, 1053, 1038}, /* 07 (1280x1024x60Hz) */
2401         {   0, 1448,    0, 1051}  /* 08 (1400x1050x60Hz) */
2402 };
2403
2404 static struct XGI330_LVDSDataStruct XGI_LVDS1600x1200Des_1[] = {
2405         {0, 1664, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
2406         {0, 1664, 0, 1201}, /* 01 (320x350,640x350) */
2407         {0, 1664, 0, 1201}, /* 02 (360x400,720x400) */
2408         {0, 1664, 0, 1201}, /* 03 (720x350) */
2409         {0, 1664, 0, 1201}, /* 04 (640x480x60Hz) */
2410         {0, 1664, 0, 1201}, /* 05 (800x600x60Hz) */
2411         {0, 1664, 0, 1201}, /* 06 (1024x768x60Hz) */
2412         {0, 1664, 0, 1201}, /* 07 (1280x1024x60Hz) */
2413         {0, 1664, 0, 1201}, /* 08 (1400x1050x60Hz) */
2414         {0, 1664, 0, 1201}  /* 09 (1600x1200x60Hz) */
2415 };
2416
2417 static struct XGI330_LCDDataDesStruct2  XGI_LVDSNoScalingDesData[] = {
2418         {0,  648,  448,  405,  96, 2}, /* 00 (320x200,320x400,
2419                                               640x200,640x400) */
2420         {0,  648,  448,  355,  96, 2}, /* 01 (320x350,640x350) */
2421         {0,  648,  448,  405,  96, 2}, /* 02 (360x400,720x400) */
2422         {0,  648,  448,  355,  96, 2}, /* 03 (720x350) */
2423         {0,  648,    1,  483,  96, 2}, /* 04 (640x480x60Hz) */
2424         {0,  840,  627,  600, 128, 4}, /* 05 (800x600x60Hz) */
2425         {0, 1048,  805,  770, 136, 6}, /* 06 (1024x768x60Hz) */
2426         {0, 1328,    0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */
2427         {0, 1438,    0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)
2428                                         ;;[ycchen] 12/19/02 */
2429         {0, 1664,    0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */
2430         {0, 1328,    0, 0771, 112, 6}  /* 0A (1280x768x60Hz) */
2431 };
2432
2433 /* ; 1024x768 Full-screen */
2434 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_1x75[] = {
2435         {0, 1040, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
2436         {0, 1040, 0, 769}, /* ; 01 (320x350,640x350) */
2437         {0, 1040, 0, 769}, /* ; 02 (360x400,720x400) */
2438         {0, 1040, 0, 769}, /* ; 03 (720x350) */
2439         {0, 1040, 0, 769}, /* ; 04 (640x480x75Hz) */
2440         {0, 1040, 0, 769}, /* ; 05 (800x600x75Hz) */
2441         {0, 1040, 0, 769}  /* ; 06 (1024x768x75Hz) */
2442 };
2443
2444 /* ; 1024x768 center-screen (Enh. Mode) */
2445 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_2x75[] = {
2446         {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
2447         {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
2448         {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
2449         {1142,  856, 597, 562}, /* 03 (720x350) */
2450         {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
2451         {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
2452         {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
2453 };
2454
2455 /* ; 1024x768 center-screen (St.Mode) */
2456 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_3x75[] =  {
2457         {320, 24, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
2458         {320, 24, 597, 562}, /* ; 01 (320x350,640x350) */
2459         {320, 24, 622, 587}, /* ; 02 (360x400,720x400) */
2460         {320, 24, 597, 562}, /* ; 03 (720x350) */
2461         {320, 24, 722, 687}  /* ; 04 (640x480x60Hz) */
2462 };
2463
2464 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_1x75[] = {
2465         {0, 1296, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
2466         {0, 1296, 0, 1025}, /* ; 01 (320x350,640x350) */
2467         {0, 1296, 0, 1025}, /* ; 02 (360x400,720x400) */
2468         {0, 1296, 0, 1025}, /* ; 03 (720x350) */
2469         {0, 1296, 0, 1025}, /* ; 04 (640x480x75Hz) */
2470         {0, 1296, 0, 1025}, /* ; 05 (800x600x75Hz) */
2471         {0, 1296, 0, 1025}, /* ; 06 (1024x768x75Hz) */
2472         {0, 1296, 0, 1025}  /* ; 07 (1280x1024x75Hz) */
2473 };
2474
2475 /* The Display setting for DE Mode Panel */
2476 /* [ycchen] 02/18/03 Set DE as default */
2477 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_2x75[] = {
2478         {1368,  976, 752,  711}, /* ; 00 (320x200,320x400,640x200,640x400) */
2479         {1368,  976, 729,  688}, /* ; 01 (320x350,640x350) */
2480         {1408,  976, 752,  711}, /* ; 02 (360x400,720x400) */
2481         {1408,  976, 729,  688}, /* ; 03 (720x350) */
2482         {1368,  976, 794,  753}, /* ; 04 (640x480x75Hz) */
2483         {1448, 1036, 854,  813}, /* ; 05 (800x600x75Hz) */
2484         {1560, 1168, 938,  897}, /* ; 06 (1024x768x75Hz) */
2485         {   0, 1296,   0, 1025}  /* ; 07 (1280x1024x75Hz) */
2486 };
2487
2488 /* Scaling LCD 75Hz */
2489 static struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] = {
2490         {0,  648, 448,  405,  96, 2}, /* ; 00 (320x200,320x400,
2491                                                640x200,640x400) */
2492         {0,  648, 448,  355,  96, 2}, /* ; 01 (320x350,640x350) */
2493         {0,  729, 448,  405, 108, 2}, /* ; 02 (360x400,720x400) */
2494         {0,  729, 448,  355, 108, 2}, /* ; 03 (720x350) */
2495         {0,  656,   0,  481,  64, 3}, /* ; 04 (640x480x75Hz) */
2496         {0,  816,   0,  601,  80, 3}, /* ; 05 (800x600x75Hz) */
2497         {0, 1040,   0,  769,  96, 3}, /* ; 06 (1024x768x75Hz) */
2498         {0, 1296,   0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
2499         {0, 1448,   0, 1051, 112, 3}, /* ; 08 (1400x1050x75Hz)
2500                                          ;;[ycchen] 12/19/02 */
2501         {0, 1664,   0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
2502         {0, 1328,   0,  771, 112, 6}  /* ; 0A (1280x768x75Hz) */
2503 };
2504
2505 #if 0
2506 static struct XGI330_LVDSDataStruct  XGI330_LVDS640x480Data_1[] = {
2507         { 800, 449,  800, 449},
2508         { 800, 449,  800, 449},
2509         { 800, 449,  800, 449},
2510         { 800, 449,  800, 449},
2511         { 800, 525,  800, 525},
2512         {1056, 628, 1056, 628},
2513         {1056, 628, 1056, 628},
2514         {1056, 628, 1056, 628},
2515         {1056, 628, 1056, 628}
2516 };
2517 #endif
2518
2519 static struct XGI330_CHTVDataStruct  XGI_CHTVUNTSCData[] = {
2520         { 840, 600,  840, 600},
2521         { 840, 600,  840, 600},
2522         { 840, 600,  840, 600},
2523         { 840, 600,  840, 600},
2524         { 784, 600,  784, 600},
2525         {1064, 750, 1064, 750}
2526 };
2527
2528 static struct XGI330_CHTVDataStruct  XGI_CHTVONTSCData[] = {
2529         { 840, 525,  840, 525},
2530         { 840, 525,  840, 525},
2531         { 840, 525,  840, 525},
2532         { 840, 525,  840, 525},
2533         { 784, 525,  784, 525},
2534         {1040, 700, 1040, 700}
2535 };
2536
2537 static struct XGI330_CHTVDataStruct  XGI_CHTVUPALData[] = {
2538         {1008, 625, 1008, 625},
2539         {1008, 625, 1008, 625},
2540         {1008, 625, 1008, 625},
2541         {1008, 625, 1008, 625},
2542         { 840, 750,  840, 750},
2543         { 936, 836,  936, 836}
2544 };
2545
2546 static struct XGI330_CHTVDataStruct  XGI_CHTVOPALData[] = {
2547         {1008, 625, 1008, 625},
2548         {1008, 625, 1008, 625},
2549         {1008, 625, 1008, 625},
2550         {1008, 625, 1008, 625},
2551         {840,  625,  840, 625},
2552         {960,  750,  960, 750}
2553 };
2554
2555 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2556 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_1_H[] = {
2557         { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} }, /* 00 (320x) */
2558         { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} }, /* 01 (360x) */
2559         { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} }, /* 02 (400x) */
2560         { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2561         { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 04 (640x) */
2562         { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 05 (720x) */
2563         { {0x87, 0x63, 0x8B, 0x69, 0x1A, 0x00, 0x26, 0x00} }, /* 06 (800x) */
2564         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
2565 };
2566
2567 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2568 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_1_H[] = {
2569         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 00 (320x) */
2570         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 01 (360x) */
2571         { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00 } }, /* 02 (400x) */
2572         { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00 } }, /* 03 (512x) */
2573         { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 04 (640x) */
2574         { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 05 (720x) */
2575         { {0x92, 0x63, 0x96, 0x6C, 0x1A, 0x00, 0x06, 0x00 } }, /* 06 (800x) */
2576         { {0xAE, 0x7F, 0x92, 0x88, 0x96, 0x00, 0x02, 0x00 } }, /* 07 (1024x) */
2577         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00 } }  /* 08 (1280x) */
2578 };
2579
2580 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2581 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_2_H[] = {
2582         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 00 (320x) */
2583         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 01 (360x) */
2584         { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2585         { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2586         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 04 (640x) */
2587         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 05 (720x) */
2588         { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} }, /* 06 (800x) */
2589         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
2590 };
2591
2592 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2593 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_2_H[] = {
2594         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 00 (320x) */
2595         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 01 (360x) */
2596         { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2597         { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2598         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
2599         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
2600         { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} }, /* 06 (800x) */
2601         { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
2602         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} }  /* 08 (1280x) */
2603 };
2604
2605 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2606 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] = {
2607         { {0x47, 0x27, 0x8B, 0x2C, 0x1A, 0x00, 0x05, 0x00} }, /* 00 (320x) */
2608         { {0x47, 0x27, 0x8B, 0x30, 0x1E, 0x00, 0x05, 0x00} }, /* 01 (360x) */
2609         { {0x51, 0x31, 0x95, 0x36, 0x04, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2610         { {0x5F, 0x3F, 0x83, 0x44, 0x92, 0x00, 0x01, 0x00} }, /* 03 (512x) */
2611         { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 04 (640x) */
2612         { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 05 (720x) */
2613         { {0x83, 0x63, 0x87, 0x68, 0x16, 0x00, 0x06, 0x00} }, /* 06 (800x) */
2614         { {0x9F, 0x7F, 0x83, 0x84, 0x92, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
2615         { {0xBF, 0x9F, 0x83, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
2616         { {0xCE, 0xAE, 0x92, 0xB3, 0x01, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
2617 };
2618
2619 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2620 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] = {
2621         { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 00 (320x) */
2622         { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 01 (360x) */
2623         { {0x76, 0x31, 0x9A, 0x48, 0x9F, 0x00, 0x41, 0x00} }, /* 02 (400x) */
2624         { {0x76, 0x3F, 0x9A, 0x4F, 0x96, 0x00, 0x41, 0x00} }, /* 03 (512x) */
2625         { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
2626         { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
2627         { {0xCE, 0x63, 0x92, 0x96, 0x04, 0x00, 0x07, 0x00} }, /* 06 (800x) */
2628         { {0xCE, 0x7F, 0x92, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
2629         { {0xCE, 0x9F, 0x92, 0xB4, 0x02, 0x00, 0x03, 0x00} }, /* 08 (1280x) */
2630         { {0xCE, 0xAE, 0x92, 0xBC, 0x0A, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
2631 };
2632
2633 /* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */
2634 /* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2635 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] = {
2636         { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 00 (320x) */
2637         { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 01 (360x) */
2638         { {0x65, 0x31, 0x89, 0x3C, 0x94, 0x00, 0x01, 0x00} }, /* 02 (400x) */
2639         { {0x73, 0x3F, 0x97, 0x4A, 0x82, 0x00, 0x05, 0x00} }, /* 03 (512x) */
2640         { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 04 (640x) */
2641         { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 05 (720x) */
2642         { {0x97, 0x63, 0x9B, 0x65, 0x1D, 0x00, 0x06, 0xF0} }, /* 06 (800x) */
2643         { {0xB3, 0x7F, 0x97, 0x81, 0x99, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
2644         { {0xD3, 0x9F, 0x97, 0xA1, 0x19, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
2645         { {0xE2, 0xAE, 0x86, 0xB9, 0x91, 0x00, 0x03, 0x00} }, /* 09 (1400x) */
2646         { {0xFB, 0xC7, 0x9F, 0xC9, 0x81, 0x00, 0x07, 0x00} }  /* 0A (1600x) */
2647 };
2648
2649 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2650 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] = {
2651         { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} }, /* 00 (x350) */
2652         { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} }, /* 01 (x400) */
2653         { {0x04, 0x3E, 0xE2, 0x89, 0xDF, 0x05, 0x00} }, /* 02 (x480) */
2654         { {0x7C, 0xF0, 0x5A, 0x8F, 0x57, 0x7D, 0xA0} }, /* 03 (x600) */
2655         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
2656 };
2657
2658 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2659 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] = {
2660         { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} }, /* 00 (x350) */
2661         { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} }, /* 01 (x400) */
2662         { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} }, /* 02 (x480) */
2663         { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} }, /* 03 (x600) */
2664         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
2665 };
2666
2667 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2668 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] = {
2669         { {0x86, 0x1F, 0x5E, 0x82, 0x5D, 0x87, 0x00} }, /* 00 (x350) */
2670         { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} }, /* 01 (x400) */
2671         { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} }, /* 02 (x480) */
2672         { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} }, /* 03 (x600) */
2673         { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} }, /* 04 (x768) */
2674         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
2675 };
2676
2677 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2678 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] = {
2679         { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} }, /* 00 (x350) */
2680         { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} }, /* 01 (x400) */
2681         { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} }, /* 02 (x480) */
2682         { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} }, /* 03 (x600) */
2683         { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} }, /* 04 (x768) */
2684         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
2685 };
2686
2687 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2688 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] = {
2689         { {0x6C, 0x1F, 0x60, 0x84, 0x5D, 0x6D, 0x10} }, /* 00 (x350) */
2690         { {0x9E, 0x1F, 0x93, 0x86, 0x8F, 0x9F, 0x30} }, /* 01 (x400) */
2691         { {0xEE, 0x1F, 0xE2, 0x86, 0xDF, 0xEF, 0x10} }, /* 02 (x480) */
2692         { {0x66, 0xF0, 0x5A, 0x8e, 0x57, 0x67, 0xA0} }, /* 03 (x600) */
2693         { {0x0E, 0xF5, 0x02, 0x86, 0xFF, 0x0F, 0x90} }, /* 04 (x768) */
2694         { {0x0E, 0x5A, 0x02, 0x86, 0xFF, 0x0F, 0x89} }, /* 05 (x1024) */
2695         { {0x28, 0x10, 0x1A, 0x80, 0x19, 0x29, 0x0F} }  /* 06 (x1050) */
2696 };
2697
2698 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2699 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] = {
2700         { {0x28, 0x92, 0xB6, 0x83, 0xB5, 0xCF, 0x81} }, /* 00 (x350) */
2701         { {0x28, 0x92, 0xD5, 0x82, 0xD4, 0xEE, 0x81} }, /* 01 (x400) */
2702         { {0x28, 0x92, 0xFD, 0x8A, 0xFC, 0x16, 0xB1} }, /* 02 (x480) */
2703         { {0x28, 0xD4, 0x39, 0x86, 0x57, 0x29, 0x81} }, /* 03 (x600) */
2704         { {0x28, 0xD4, 0x8D, 0x9A, 0xFF, 0x29, 0xA1} }, /* 04 (x768) */
2705         { {0x28, 0x5A, 0x0D, 0x9A, 0xFF, 0x29, 0xA9} }, /* 05 (x1024) */
2706         { {0x28, 0x10, 0x1A, 0x87, 0x19, 0x29, 0x8F} }  /* 06 (x1050) */
2707 };
2708
2709 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2710 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] = {
2711         { {0xd4, 0x1F, 0x81, 0x84, 0x5D, 0xd5, 0x10} }, /* 00 (x350) */
2712         { {0x06, 0x3e, 0xb3, 0x86, 0x8F, 0x07, 0x20} }, /* 01 (x400) */
2713         { {0x56, 0xba, 0x03, 0x86, 0xDF, 0x57, 0x00} }, /* 02 (x480) */
2714         { {0xce, 0xF0, 0x7b, 0x8e, 0x57, 0xcf, 0xa0} }, /* 03 (x600) */
2715         { {0x76, 0xF5, 0x23, 0x86, 0xFF, 0x77, 0x90} }, /* 04 (x768) */
2716         { {0x76, 0x5A, 0x23, 0x86, 0xFF, 0x77, 0x89} }, /* 05 (x1024) */
2717         { {0x90, 0x10, 0x1A, 0x8E, 0x19, 0x91, 0x2F} }, /* 06 (x1050) */
2718         { {0x26, 0x11, 0xd3, 0x86, 0xaF, 0x27, 0x3f} }  /* 07 (x1200) */
2719 };
2720
2721 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2722 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] = {
2723         { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} },/* ; 00 (320x) */
2724         { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} },/* ; 01 (360x) */
2725         { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} },/* ; 02 (400x) */
2726         { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2727         { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 04 (640x) */
2728         { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 05 (720x) */
2729         { {0x83, 0x63, 0x87, 0x68, 0x14, 0x00, 0x26, 0x00} },/* ; 06 (800x) */
2730         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
2731 };
2732
2733 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2734 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] = {
2735         { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} },/* ; 00 (x350) */
2736         { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} },/* ; 01 (x400) */
2737         { {0xFE, 0x1F, 0xE0, 0x84, 0xDF, 0xFF, 0x10} },/* ; 02 (x480) */
2738         { {0x76, 0xF0, 0x58, 0x8C, 0x57, 0x77, 0xA0} },/* ; 03 (x600) */
2739         { {0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} } /* ; 04 (x768) */
2740 };
2741
2742 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2743 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] = {
2744         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
2745         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
2746         { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
2747         { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2748         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
2749         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
2750         { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
2751         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
2752 };
2753
2754 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2755 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] = {
2756         { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} },/* ; 00 (x350) */
2757         { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} },/* ; 01 (x400) */
2758         { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} },/* ; 02 (x480) */
2759         { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} },/* ; 03 (x600) */
2760         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* ; 04 (x768) */
2761 };
2762
2763 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2764 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] = {
2765         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 00 (320x) */
2766         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 01 (360x) */
2767         { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
2768         { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2769         { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
2770         { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
2771         { {0x92, 0x63, 0x96, 0x68, 0x1A, 0x00, 0x06, 0x00} },/* ; 06 (800x) */
2772         { {0xAE, 0x7F, 0x92, 0x84, 0x96, 0x00, 0x02, 0x00} },/* ; 07 (1024x) */
2773         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
2774 };
2775
2776 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2777 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] = {
2778         { {0x86, 0xD1, 0xBC, 0x80, 0xBB, 0xE5, 0x00} },/* ; 00 (x350) */
2779         { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} },/* ; 01 (x400) */
2780         { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} },/* ; 02 (x480) */
2781         { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} },/* ; 03 (x600) */
2782         { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} },/* ; 04 (x768) */
2783         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
2784 };
2785 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2786 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] = {
2787         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
2788         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
2789         { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
2790         { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
2791         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 04 (640x) */
2792         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 05 (720x) */
2793         { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
2794         { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} },/* ; 07 (1024x) */
2795         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
2796 };
2797
2798 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2799 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = {
2800         { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} },/* ; 00 (x350) */
2801         { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} },/* ; 01 (x400) */
2802         { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} },/* ; 02 (x480) */
2803         { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} },/* ; 03 (x600) */
2804         { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} },/* ; 04 (x768) */
2805         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
2806 };
2807
2808 #if 0
2809 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1UNTSC[] = {
2810         { {0x64, 0x4f, 0x88, 0x56, 0x9f, 0x56, 0x3e,
2811           0xe8, 0x84, 0x8f, 0x57, 0x20, 0x00, 0x01, 0x00 } },
2812         { {0x64, 0x4f, 0x88, 0x56, 0x9f, 0x56, 0x3e,
2813           0xd0, 0x82, 0x5d, 0x57, 0x00, 0x00, 0x01, 0x00 } },
2814         { {0x64, 0x4f, 0x88, 0x56, 0x9f, 0x56, 0x3e,
2815           0xe8, 0x84, 0x8f, 0x57, 0x20, 0x00, 0x01, 0x00 } },
2816         { {0x64, 0x4f, 0x88, 0x56, 0x9f, 0x56, 0x3e,
2817           0xd0, 0x82, 0x5d, 0x57, 0x00, 0x00, 0x01, 0x00 } },
2818         { {0x5d, 0x4f, 0x81, 0x53, 0x9c, 0x56, 0xba,
2819           0x18, 0x84, 0xdf, 0x57, 0x00, 0x00, 0x01, 0x00 } },
2820         { {0x80, 0x63, 0x84, 0x6c, 0x17, 0xec, 0xf0,
2821           x90, 0x8c, 0x57, 0xed, 0x20, 0x00, 0x06, 0x01 } }
2822 };
2823
2824 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1ONTSC[] = {
2825         { {0x64, 0x4f, 0x88, 0x5a, 0x9f, 0x0b, 0x3e,
2826           0xc0, 0x84, 0x8f, 0x0c, 0x20, 0x00, 0x01, 0x00 } },
2827         { {0x64, 0x4f, 0x88, 0x5a, 0x9f, 0x0b, 0x3e,
2828           0xb0, 0x8d, 0x5d, 0x0c, 0x00, 0x00, 0x01, 0x00 } },
2829         { {0x64, 0x4f, 0x88, 0x5a, 0x9f, 0x0b, 0x3e,
2830           0xc0, 0x84, 0x8f, 0x0c, 0x20, 0x00, 0x01, 0x00 } },
2831         { {0x64, 0x4f, 0x88, 0x5a, 0x9f, 0x0b, 0x3e,
2832           0xb0, 0x8d, 0x5d, 0x0c, 0x00, 0x00, 0x01, 0x00 } },
2833         { {0x5d, 0x4f, 0x81, 0x56, 0x9c, 0x0b, 0x3e,
2834           0xe8, 0x84, 0xdf, 0x0c, 0x00, 0x00, 0x01, 0x00 } },
2835         { {0x7d, 0x63, 0x81, 0x6a, 0x16, 0xba, 0xf0,
2836           x7f, 0x86, 0x57, 0xbb, 0x00, 0x00, 0x06, 0x01 } }
2837 };
2838
2839 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1UPAL[] = {
2840         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2841           0xf8, 0x83, 0x8f, 0x70, 0x20, 0x00, 0x05, 0x00 } },
2842         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2843           0xde, 0x81, 0x5d, 0x70, 0x00, 0x00, 0x05, 0x00 } },
2844         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2845           0xf8, 0x83, 0x8f, 0x70, 0x20, 0x00, 0x05, 0x00 } },
2846         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2847           0xde, 0x81, 0x5d, 0x70, 0x00, 0x00, 0x05, 0x00 } },
2848         { {0x64, 0x4f, 0x88, 0x55, 0x80, 0xec, 0xba,
2849           0x50, 0x84, 0xdf, 0xed, 0x00, 0x00, 0x05, 0x00 } },
2850         { {0x70, 0x63, 0x94, 0x68, 0x8d, 0x42, 0xf1,
2851           xc8, 0x8c, 0x57, 0xe9, 0x20, 0x00, 0x05, 0x01 } }
2852 };
2853
2854 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1OPAL[] = {
2855         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2856           0xf0, 0x83, 0x8f, 0x70, 0x20, 0x00, 0x05, 0x00 } },
2857         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2858           0xde, 0x81, 0x5d, 0x70, 0x00, 0x00, 0x05, 0x00 } },
2859         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2860           0xf0, 0x83, 0x8f, 0x70, 0x20, 0x00, 0x05, 0x00 } },
2861         { {0x79, 0x4f, 0x9d, 0x5a, 0x90, 0x6f, 0x3e,
2862           0xde, 0x81, 0x5d, 0x70, 0x00, 0x00, 0x05, 0x00 } },
2863         { {0x64, 0x4f, 0x88, 0x55, 0x80, 0x6f, 0xba,
2864           0x20, 0x83, 0xdf, 0x70, 0x00, 0x00, 0x05, 0x00 } },
2865         { {0x73, 0x63, 0x97, 0x69, 0x8e, 0xec, 0xf0,
2866           x90, 0x8c, 0x57, 0xed, 0x20, 0x00, 0x05, 0x01 } }
2867 };
2868 #endif
2869
2870 /*add for new UNIVGABIOS*/
2871 static struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = {
2872         {Panel1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCD1024x768Data */
2873         {Panel1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCD1024x768Data */
2874         {Panel1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCD1024x768Data */
2875         {Panel1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCD1280x1024Data */
2876         {Panel1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCD1280x1024Data */
2877         {Panel1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCD1280x1024Data */
2878         {Panel1400x1050, 0x0019, 0x0001, 6}, /* XGI_ExtLCD1400x1050Data */
2879         {Panel1400x1050, 0x0019, 0x0000, 7}, /* XGI_StLCD1400x1050Data */
2880         {Panel1400x1050, 0x0018, 0x0010, 8}, /* XGI_CetLCD1400x1050Data */
2881         {Panel1600x1200, 0x0019, 0x0001, 9}, /* XGI_ExtLCD1600x1200Data */
2882         {Panel1600x1200, 0x0019, 0x0000, 10}, /* XGI_StLCD1600x1200Data */
2883         {PanelRef60Hz, 0x0008, 0x0008, 11}, /* XGI_NoScalingData */
2884         {Panel1024x768x75, 0x0019, 0x0001, 12}, /* XGI_ExtLCD1024x768x75Data */
2885         {Panel1024x768x75, 0x0019, 0x0000, 13}, /* XGI_StLCD1024x768x75Data */
2886         {Panel1024x768x75, 0x0018, 0x0010, 14}, /* XGI_CetLCD1024x768x75Data */
2887         {Panel1280x1024x75, 0x0019, 0x0001, 15}, /* XGI_ExtLCD1280x1024x75Data*/
2888         {Panel1280x1024x75, 0x0019, 0x0000, 16}, /* XGI_StLCD1280x1024x75Data */
2889         {Panel1280x1024x75, 0x0018, 0x0010, 17}, /* XGI_CetLCD1280x1024x75Data*/
2890         {PanelRef75Hz, 0x0008, 0x0008, 18}, /* XGI_NoScalingDatax75 */
2891         {0xFF, 0x0000, 0x0000, 0} /* End of table */
2892 };
2893
2894 static struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = {
2895         {Panel1024x768, 0x0019, 0x0001, 0}, /* XGI_ExtLCDDes1024x768Data */
2896         {Panel1024x768, 0x0019, 0x0000, 1}, /* XGI_StLCDDes1024x768Data */
2897         {Panel1024x768, 0x0018, 0x0010, 2}, /* XGI_CetLCDDes1024x768Data */
2898         {Panel1280x1024, 0x0019, 0x0001, 3}, /* XGI_ExtLCDDes1280x1024Data */
2899         {Panel1280x1024, 0x0019, 0x0000, 4}, /* XGI_StLCDDes1280x1024Data */
2900         {Panel1280x1024, 0x0018, 0x0010, 5}, /* XGI_CetLCDDes1280x1024Data */
2901         {Panel1400x1050, 0x0019, 0x0001, 6}, /* XGI_ExtLCDDes1400x1050Data */
2902         {Panel1400x1050, 0x0019, 0x0000, 7}, /* XGI_StLCDDes1400x1050Data */
2903         {Panel1400x1050, 0x0418, 0x0010, 8}, /* XGI_CetLCDDes1400x1050Data */
2904         {Panel1400x1050, 0x0418, 0x0410, 9}, /* XGI_CetLCDDes1400x1050Data2 */
2905         {Panel1600x1200, 0x0019, 0x0001, 10}, /* XGI_ExtLCDDes1600x1200Data */
2906         {Panel1600x1200, 0x0019, 0x0000, 11}, /* XGI_StLCDDes1600x1200Data */
2907         {PanelRef60Hz, 0x0008, 0x0008, 12}, /* XGI_NoScalingDesData */
2908         {Panel1024x768x75, 0x0019, 0x0001, 13}, /*XGI_ExtLCDDes1024x768x75Data*/
2909         {Panel1024x768x75, 0x0019, 0x0000, 14}, /* XGI_StLCDDes1024x768x75Data*/
2910         {Panel1024x768x75, 0x0018, 0x0010, 15}, /*XGI_CetLCDDes1024x768x75Data*/
2911         /* XGI_ExtLCDDes1280x1024x75Data */
2912         {Panel1280x1024x75, 0x0019, 0x0001, 16},
2913         /* XGI_StLCDDes1280x1024x75Data */
2914         {Panel1280x1024x75, 0x0019, 0x0000, 17},
2915         /* XGI_CetLCDDes1280x1024x75Data */
2916         {Panel1280x1024x75, 0x0018, 0x0010, 18},
2917         {PanelRef75Hz, 0x0008, 0x0008, 19}, /* XGI_NoScalingDesDatax75 */
2918         {0xFF, 0x0000, 0x0000, 0}
2919 };
2920
2921 static struct XGI330_LCDDataTablStruct XGI_EPLLCDCRT1Ptr_H[] = {
2922         {Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDSCRT11024x768_1_H */
2923         {Panel1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDSCRT11024x768_2_H */
2924         {Panel1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDSCRT11280x1024_1_H */
2925         {Panel1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDSCRT11280x1024_2_H */
2926         {Panel1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDSCRT11400x1050_1_H */
2927         {Panel1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDSCRT11400x1050_2_H */
2928         {Panel1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDSCRT11600x1200_1_H */
2929         {Panel1024x768x75, 0x0018, 0x0000, 7}, /* XGI_LVDSCRT11024x768_1_Hx75 */
2930         {Panel1024x768x75, 0x0018, 0x0010, 8}, /* XGI_LVDSCRT11024x768_2_Hx75 */
2931         {Panel1280x1024x75, 0x0018, 0x0000, 9}, /*XGI_LVDSCRT11280x1024_1_Hx75*/
2932         {Panel1280x1024x75, 0x0018, 0x0010, 10},/*XGI_LVDSCRT11280x1024_2_Hx75*/
2933         {0xFF, 0x0000, 0x0000, 0}
2934 };
2935
2936 static struct XGI330_LCDDataTablStruct XGI_EPLLCDCRT1Ptr_V[] = {
2937         {Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDSCRT11024x768_1_V */
2938         {Panel1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDSCRT11024x768_2_V */
2939         {Panel1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDSCRT11280x1024_1_V */
2940         {Panel1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDSCRT11280x1024_2_V */
2941         {Panel1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDSCRT11400x1050_1_V */
2942         {Panel1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDSCRT11400x1050_2_V */
2943         {Panel1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDSCRT11600x1200_1_V */
2944         {Panel1024x768x75, 0x0018, 0x0000, 7}, /* XGI_LVDSCRT11024x768_1_Vx75 */
2945         {Panel1024x768x75, 0x0018, 0x0010, 8}, /* XGI_LVDSCRT11024x768_2_Vx75 */
2946         {Panel1280x1024x75, 0x0018, 0x0000, 9}, /*XGI_LVDSCRT11280x1024_1_Vx75*/
2947         {Panel1280x1024x75, 0x0018, 0x0010, 10},/*XGI_LVDSCRT11280x1024_2_Vx75*/
2948         {0xFF, 0x0000, 0x0000, 0}
2949 };
2950
2951 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = {
2952         {Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDS1024x768Data_1 */
2953         {Panel1024x768, 0x0018, 0x0010, 1}, /* XGI_LVDS1024x768Data_2 */
2954         {Panel1280x1024, 0x0018, 0x0000, 2}, /* XGI_LVDS1280x1024Data_1 */
2955         {Panel1280x1024, 0x0018, 0x0010, 3}, /* XGI_LVDS1280x1024Data_2 */
2956         {Panel1400x1050, 0x0018, 0x0000, 4}, /* XGI_LVDS1400x1050Data_1 */
2957         {Panel1400x1050, 0x0018, 0x0010, 5}, /* XGI_LVDS1400x1050Data_2 */
2958         {Panel1600x1200, 0x0018, 0x0000, 6}, /* XGI_LVDS1600x1200Data_1 */
2959         {PanelRef60Hz, 0x0008, 0x0008, 7}, /* XGI_LVDSNoScalingData */
2960         {Panel1024x768x75, 0x0018, 0x0000, 8}, /* XGI_LVDS1024x768Data_1x75 */
2961         {Panel1024x768x75, 0x0018, 0x0010, 9}, /* XGI_LVDS1024x768Data_2x75 */
2962         {Panel1280x1024x75, 0x0018, 0x0000, 10}, /* XGI_LVDS1280x1024Data_1x75*/
2963         {Panel1280x1024x75, 0x0018, 0x0010, 11},  /*XGI_LVDS1280x1024Data_2x75*/
2964         {PanelRef75Hz, 0x0008, 0x0008, 12}, /* XGI_LVDSNoScalingDatax75 */
2965         {0xFF, 0x0000, 0x0000, 0}
2966 };
2967
2968 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = {
2969         {Panel1024x768, 0x0018, 0x0000, 0}, /* XGI_LVDS1024x768Des_1 */
2970         {Panel1024x768, 0x0618, 0x0410, 1}, /* XGI_LVDS1024x768Des_3 */
2971         {Panel1024x768, 0x0018, 0x0010, 2}, /* XGI_LVDS1024x768Des_2 */
2972         {Panel1280x1024, 0x0018, 0x0000, 3}, /* XGI_LVDS1280x1024Des_1 */
2973         {Panel1280x1024, 0x0018, 0x0010, 4}, /* XGI_LVDS1280x1024Des_2 */
2974         {Panel1400x1050, 0x0018, 0x0000, 5}, /* XGI_LVDS1400x1050Des_1 */
2975         {Panel1400x1050, 0x0018, 0x0010, 6}, /* XGI_LVDS1400x1050Des_2 */
2976         {Panel1600x1200, 0x0018, 0x0000, 7}, /* XGI_LVDS1600x1200Des_1 */
2977         {PanelRef60Hz, 0x0008, 0x0008, 8},  /* XGI_LVDSNoScalingDesData */
2978         {Panel1024x768x75, 0x0018, 0x0000, 9}, /* XGI_LVDS1024x768Des_1x75 */
2979         {Panel1024x768x75, 0x0618, 0x0410, 10}, /* XGI_LVDS1024x768Des_3x75 */
2980         {Panel1024x768x75, 0x0018, 0x0010, 11}, /* XGI_LVDS1024x768Des_2x75 */
2981         {Panel1280x1024x75, 0x0018, 0x0000, 12}, /* XGI_LVDS1280x1024Des_1x75 */
2982         {Panel1280x1024x75, 0x0018, 0x0010, 13}, /* XGI_LVDS1280x1024Des_2x75 */
2983         {PanelRef75Hz, 0x0008, 0x0008, 14}, /* XGI_LVDSNoScalingDesDatax75 */
2984         {0xFF, 0x0000, 0x0000, 0}
2985 };
2986
2987 static struct XGI330_LCDDataTablStruct XGI_EPLCHLCDRegPtr[] = {
2988         {Panel1024x768, 0x0000, 0x0000, 0}, /* XGI_CH7017LV1024x768 */
2989         {Panel1400x1050, 0x0000, 0x0000, 1}, /* XGI_CH7017LV1400x1050 */
2990         {0xFF, 0x0000, 0x0000, 0}
2991 };
2992
2993 static struct XGI330_TVDataTablStruct XGI_TVDataTable[] = {
2994         {0x09E1, 0x0001, 0}, /* XGI_ExtPALData */
2995         {0x09E1, 0x0000, 1}, /* XGI_ExtNTSCData */
2996         {0x09E1, 0x0801, 2}, /* XGI_StPALData */
2997         {0x09E1, 0x0800, 3}, /* XGI_StNTSCData */
2998         {0x49E0, 0x0100, 4}, /* XGI_ExtHiTVData */
2999         {0x49E0, 0x4100, 5}, /* XGI_St2HiTVData */
3000         {0x49E0, 0x4900, 13}, /* XGI_St1HiTVData */
3001         {0x09E0, 0x0020, 6}, /* XGI_ExtYPbPr525iData */
3002         {0x09E0, 0x0040, 7}, /* XGI_ExtYPbPr525pData */
3003         {0x09E0, 0x0080, 8}, /* XGI_ExtYPbPr750pData */
3004         {0x09E0, 0x0820, 9}, /* XGI_StYPbPr525iData */
3005         {0x09E0, 0x0840, 10}, /* XGI_StYPbPr525pData */
3006         {0x09E0, 0x0880, 11}, /* XGI_StYPbPr750pData */
3007         {0xffff, 0x0000, 12}  /* END */
3008 };
3009
3010 #if 0
3011 static unsigned short TVLenList[] = {
3012         LVDSCRT1Len_H,
3013         LVDSCRT1Len_V,
3014         LVDSDataLen,
3015         0,
3016         TVDataLen,
3017         0,
3018         0,
3019         CHTVRegLen
3020 };
3021 #endif
3022
3023 /* Chrontel 7017 TV CRT1 Timing List */
3024 static struct XGI330_TVDataTablStruct XGI_EPLCHTVCRT1Ptr[] = {
3025         {0x0011, 0x0000, 0}, /* XGI_CHTVCRT1UNTSC */
3026         {0x0011, 0x0010, 1}, /* XGI_CHTVCRT1ONTSC */
3027         {0x0011, 0x0001, 2}, /* XGI_CHTVCRT1UPAL */
3028         {0x0011, 0x0011, 3}, /* XGI_CHTVCRT1OPAL */
3029         {0xFFFF, 0x0000, 4}
3030 };
3031
3032 /* ;;Chrontel 7017 TV Timing List */
3033 static struct XGI330_TVDataTablStruct XGI_EPLCHTVDataPtr[] = {
3034         {0x0011, 0x0000, 0}, /* XGI_CHTVUNTSCData */
3035         {0x0011, 0x0010, 1}, /* XGI_CHTVONTSCData */
3036         {0x0011, 0x0001, 2}, /* XGI_CHTVUPALData */
3037         {0x0011, 0x0011, 3}, /* XGI_CHTVOPALData */
3038         {0xFFFF, 0x0000, 4}
3039 };
3040
3041 /* ;;Chrontel 7017 TV Reg. List */
3042 static struct XGI330_TVDataTablStruct XGI_EPLCHTVRegPtr[] = {
3043         {0x0011, 0x0000, 0}, /* XGI_CHTVRegUNTSC */
3044         {0x0011, 0x0010, 1}, /* XGI_CHTVRegONTSC */
3045         {0x0011, 0x0001, 2}, /* XGI_CHTVRegUPAL */
3046         {0x0011, 0x0011, 3}, /* XGI_CHTVRegOPAL */
3047         {0xFFFF, 0x0000, 4}
3048 };
3049
3050 static unsigned short LCDLenList[] = {
3051         LVDSCRT1Len_H,
3052         LVDSCRT1Len_V,
3053         LVDSDataLen,
3054         LCDDesDataLen,
3055         LCDDataLen,
3056         LCDDesDataLen,
3057         0,
3058         LCDDesDataLen,
3059         LCDDesDataLen,
3060         0
3061 };
3062
3063 #if 0
3064 /* 660, Dual link */
3065 static struct XGI330_LCDCapStruct  XGI660_LCDDLCapList[] = {
3066 /* LCDCap1024x768 */
3067         {Panel1024x768, DefaultLCDCap, 0, 0x014, 0x88, 0x06, VCLK65,
3068          0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3069          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3070 /* LCDCap1280x1024 */
3071         {Panel1280x1024, LCDDualLink+DefaultLCDCap, StLCDBToA,
3072         0x053, 0x70, 0x03, VCLK108_2,
3073          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3074          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3075 /* LCDCap1400x1050 */
3076         {Panel1400x1050, LCDDualLink+DefaultLCDCap, StLCDBToA,
3077         0x053, 0x70, 0x03, VCLK108_2,
3078          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3079          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3080 /* LCDCap1600x1200 */
3081         {Panel1600x1200, LCDDualLink+DefaultLCDCap, LCDToFull,
3082         0x053, 0xC0, 0x03, VCLK162,
3083          0x43, 0x22, 0x70, 0x24, 0x02, 0x14, 0x0A, 0x02, 0x00,
3084          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3085 /* LCDCap1024x768x75 */
3086         {Panel1024x768x75, DefaultLCDCap, 0, 0x014, 0x60, 0, VCLK78_75,
3087          0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3088          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3089 /* LCDCap1280x1024x75 */
3090         {Panel1280x1024x75, LCDDualLink+DefaultLCDCap, StLCDBToA,
3091         0x053, 0x90, 0x03, VCLK135_5,
3092          0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3093          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3094 /* LCDCapDefault */
3095         {0xFF, DefaultLCDCap, 0, 0x053, 0x88, 0x06, VCLK65,
3096         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3097         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3098 };
3099 #endif
3100
3101 /* Dual link only */
3102 static struct XGI330_LCDCapStruct  XGI_LCDDLCapList[] = {
3103 /* LCDCap1024x768 */
3104         {Panel1024x768, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3105         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3106         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3107 /* LCDCap1280x1024 */
3108         {Panel1280x1024, LCDDualLink+DefaultLCDCap, StLCDBToA,
3109         0x012, 0x70, 0x03, VCLK108_2,
3110         0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3111         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3112 /* LCDCap1400x1050 */
3113         {Panel1400x1050, LCDDualLink+DefaultLCDCap, StLCDBToA,
3114         0x012, 0x70, 0x03, VCLK108_2,
3115          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3116          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3117 /* LCDCap1600x1200 */
3118         {Panel1600x1200, LCDDualLink+DefaultLCDCap, LCDToFull,
3119         0x012, 0xC0, 0x03, VCLK162,
3120          0x43, 0x22, 0x70, 0x24, 0x02, 0x14, 0x0A, 0x02, 0x00,
3121          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3122 /* LCDCap1024x768x75 */
3123         {Panel1024x768x75, DefaultLCDCap, 0, 0x012, 0x60, 0, VCLK78_75,
3124          0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3125          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3126 /* LCDCap1280x1024x75 */
3127         {Panel1280x1024x75, LCDDualLink+DefaultLCDCap, StLCDBToA,
3128         0x012, 0x90, 0x03, VCLK135_5,
3129          0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3130          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3131 /* LCDCapDefault */
3132         {0xFF, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3133         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3134         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3135 };
3136
3137 #if 0
3138 static struct XGI330_LCDCapStruct  XGI660_LCDCapList[] = {
3139 /* LCDCap1024x768 */
3140         {Panel1024x768, DefaultLCDCap, 0, 0x014, 0x88, 0x06, VCLK65,
3141         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3142         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3143 /* LCDCap1280x1024 */
3144         {Panel1280x1024, DefaultLCDCap, StLCDBToA, 0x053, 0x70, 0x03, VCLK108_2,
3145         0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3146         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3147 /* LCDCap1400x1050 */
3148         {Panel1400x1050, DefaultLCDCap, StLCDBToA, 0x053, 0x70, 0x03, VCLK108_2,
3149          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3150          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3151 /* LCDCap1600x1200 */
3152         {Panel1600x1200, DefaultLCDCap, LCDToFull, 0x053, 0xC0, 0x03, VCLK162,
3153          0x5A, 0x23, 0x5A, 0x23, 0x02, 0x14, 0x0A, 0x02, 0x00,
3154          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3155 /* LCDCap1024x768x75 */
3156         {Panel1024x768x75, DefaultLCDCap, 0, 0x014, 0x60, 0, VCLK78_75,
3157          0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3158          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3159 /* LCDCap1280x1024x75 */
3160         {Panel1280x1024x75, + DefaultLCDCap, StLCDBToA,
3161         0x053, 0x90, 0x03, VCLK135_5,
3162          0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3163          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3164 /* LCDCapDefault */
3165         {0xFF, DefaultLCDCap, 0, 0x053, 0x88, 0x06, VCLK65,
3166         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3167         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3168 };
3169 #endif
3170
3171 static struct XGI330_LCDCapStruct  XGI_LCDCapList[] = {
3172 /* LCDCap1024x768 */
3173         {Panel1024x768, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3174         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3175         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3176 /* LCDCap1280x1024 */
3177         {Panel1280x1024, DefaultLCDCap, StLCDBToA,
3178         0x012, 0x70, 0x03, VCLK108_2,
3179         0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3180         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3181 /* LCDCap1400x1050 */
3182         {Panel1400x1050, DefaultLCDCap, StLCDBToA,
3183         0x012, 0x70, 0x03, VCLK108_2,
3184          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3185          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3186 /* LCDCap1600x1200 */
3187         {Panel1600x1200, DefaultLCDCap, LCDToFull,
3188         0x012, 0xC0, 0x03, VCLK162,
3189          0x5A, 0x23, 0x5A, 0x23, 0x02, 0x14, 0x0A, 0x02, 0x00,
3190          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3191 /* LCDCap1024x768x75 */
3192         {Panel1024x768x75, DefaultLCDCap, 0, 0x012, 0x60, 0, VCLK78_75,
3193          0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3194          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3195 /* LCDCap1280x1024x75 */
3196         {Panel1280x1024x75, DefaultLCDCap, StLCDBToA,
3197         0x012, 0x90, 0x03, VCLK135_5,
3198          0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3199          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3200 /* LCDCapDefault */
3201         {0xFF, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3202         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3203         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3204 };
3205
3206 struct XGI21_LVDSCapStruct XGI21_LCDCapList[] = {
3207         {DisableLCD24bpp + LCDPolarity,
3208          2160, 1250, 1600, 1200,   64,    1,  192,    3,
3209          0x70, 0x24, 0x20, 0x04, 0x0A, 0x02, 0xC8
3210         },
3211         {DisableLCD24bpp + LCDPolarity,
3212          1688, 1066, 1280, 1024,   48,    1,   112,    3,
3213          0x70, 0x44, 0x20, 0x04, 0x0A, 0x02, 0xC8
3214         },
3215         {DisableLCD24bpp + LCDPolarity + (LCDPolarity << 8),
3216          1344,  806, 1024,  768,   24,    3,   136,    6,
3217          0x6C, 0x65, 0x20, 0x04, 0x0A, 0x02, 0xC8
3218         },
3219         {DisableLCD24bpp + LCDPolarity,
3220          1056,  628,  800,  600,   40,    1,  128,    4,
3221          0x42, 0xE2, 0x20, 0x14, 0x0A, 0x02, 0x00
3222         },
3223         {DisableLCD24bpp + LCDPolarity,
3224           928,  525,  800,  480,   40,   13,   48,    3,
3225          0x52, 0xC5, 0x20, 0x14, 0x0A, 0x02, 0x00
3226         },
3227         {DisableLCD24bpp + LCDPolarity + (LCDPolarity << 8),
3228           800,  525,  640,  480,   16,   10,   96,    2,
3229          0x1B, 0xE1, 0x20, 0x04, 0x0A, 0x02, 0xC8
3230         }
3231 };
3232
3233 static struct XGI_Ext2Struct XGI330_RefIndex[] = {
3234         {Support32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
3235         0x00, 0x10, 0x59, 320, 200},/* 00 */
3236         {Support32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
3237         0x00, 0x10, 0x00, 320, 400},/* 01 */
3238         {Support32Bpp + SupportAllCRT2 + SyncNN, RES320x240, VCLK25_175,
3239         0x04, 0x20, 0x50, 320, 240},/* 02 */
3240         {Support32Bpp + SupportAllCRT2 + SyncPP, RES400x300, VCLK40,
3241         0x05, 0x32, 0x51, 400, 300},/* 03 */
3242         {Support32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES512x384,
3243         VCLK65, 0x06, 0x43, 0x52, 512, 384},/* 04 */
3244         {Support32Bpp + SupportAllCRT2 + SyncPN, RES640x400, VCLK25_175,
3245         0x00, 0x14, 0x2f, 640, 400},/* 05 */
3246         {Support32Bpp + SupportAllCRT2 + SyncNN, RES640x480x60, VCLK25_175,
3247         0x04, 0x24, 0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */
3248         {Support32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x72, VCLK31_5,
3249         0x04, 0x24, 0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */
3250         {Support32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x75, VCLK31_5,
3251         0x47, 0x24, 0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */
3252         {Support32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x85, VCLK36,
3253         0x8A, 0x24, 0x2e, 640, 480},/* 09 640x480x85Hz */
3254         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x100, VCLK43_163,
3255         0x00, 0x24, 0x2e, 640, 480},/* 0a 640x480x100Hz */
3256         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x120, VCLK52_406,
3257         0x00, 0x24, 0x2e, 640, 480},/* 0b 640x480x120Hz */
3258         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x160, VCLK72_852,
3259         0x00, 0x24, 0x2e, 640, 480},/* 0c 640x480x160Hz */
3260         {Support32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x200, VCLK86_6,
3261         0x00, 0x24, 0x2e, 640, 480},/* 0d 640x480x200Hz */
3262         {Support32Bpp + NoSupportLCD + SyncPP, RES800x600x56, VCLK36,
3263         0x05, 0x36, 0x6a, 800, 600},/* 0e 800x600x56Hz */
3264         {Support32Bpp + NoSupportTV + SyncPP, RES800x600x60, VCLK40,
3265         0x05, 0x36, 0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */
3266         {Support32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x72, VCLK50,
3267         0x48, 0x36, 0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */
3268         {Support32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x75, VCLK49_5,
3269         0x8B, 0x36, 0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */
3270         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES800x600x85, VCLK56_25,
3271         0x00, 0x36, 0x6a, 800, 600},/* 12 800x600x85Hz */
3272         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x100, VCLK68_179,
3273         0x00, 0x36, 0x6a, 800, 600},/* 13 800x600x100Hz */
3274         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x120, VCLK83_95,
3275         0x00, 0x36, 0x6a, 800, 600},/* 14 800x600x120Hz */
3276         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x160, VCLK116_406,
3277         0x00, 0x36, 0x6a, 800, 600},/* 15 800x600x160Hz */
3278         {Support32Bpp + InterlaceMode + SyncPP, RES1024x768x43, VCLK44_9,
3279         0x00, 0x47, 0x37, 1024, 768},/* 16 1024x768x43Hz */
3280         /* 17 1024x768x60Hz (LCD 1024x768x60Hz) */
3281         {Support32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES1024x768x60,
3282         VCLK65, 0x06, 0x47, 0x37, 1024, 768},
3283         {Support32Bpp + NoSupportHiVisionTV + SyncNN, RES1024x768x70, VCLK75,
3284         0x49, 0x47, 0x37, 1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */
3285         {Support32Bpp + NoSupportHiVisionTV + SyncPP, RES1024x768x75, VCLK78_75,
3286         0x00, 0x47, 0x37, 1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */
3287         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1024x768x85, VCLK94_5,
3288         0x8C, 0x47, 0x37, 1024, 768},/* 1a 1024x768x85Hz */
3289         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x100, VCLK113_309,
3290         0x00, 0x47, 0x37, 1024, 768},/* 1b 1024x768x100Hz */
3291         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x120, VCLK139_054,
3292         0x00, 0x47, 0x37, 1024, 768},/* 1c 1024x768x120Hz */
3293         {Support32Bpp + SupportLCD + SyncPP, RES1280x960x60, VCLK108_2,
3294         0x08, 0x58, 0x7b, 1280, 960},/* 1d 1280x960x60Hz */
3295         {Support32Bpp + InterlaceMode + SyncPP, RES1280x1024x43, VCLK78_75,
3296         0x00, 0x58, 0x3a, 1280, 1024},/* 1e 1280x1024x43Hz */
3297         {Support32Bpp + NoSupportTV + SyncPP, RES1280x1024x60, VCLK108_2,
3298         0x07, 0x58, 0x3a, 1280, 1024},/*1f 1280x1024x60Hz (LCD 1280x1024x60Hz)*/
3299         {Support32Bpp + NoSupportTV + SyncPP, RES1280x1024x75, VCLK135_5,
3300         0x00, 0x58, 0x3a, 1280, 1024},/*20 1280x1024x75Hz (LCD 1280x1024x75Hz)*/
3301         {Support32Bpp + SyncPP, RES1280x1024x85, VCLK157_5,
3302         0x00, 0x58, 0x3a, 1280, 1024},/* 21 1280x1024x85Hz */
3303         /* 22 1600x1200x60Hz */
3304         {Support32Bpp + SupportLCD + SyncPP + SupportCRT2in301C,
3305         RES1600x1200x60, VCLK162, 0x09, 0x7A, 0x3c, 1600, 1200},
3306         {Support32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x65, VCLK175,
3307         0x00, 0x69, 0x3c, 1600, 1200},/* 23 1600x1200x65Hz */
3308         {Support32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x70, VCLK189,
3309         0x00, 0x69, 0x3c, 1600, 1200},/* 24 1600x1200x70Hz */
3310         {Support32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x75, VCLK202_5,
3311         0x00, 0x69, 0x3c, 1600, 1200},/* 25 1600x1200x75Hz */
3312         {Support32Bpp + SyncPP, RES1600x1200x85, VCLK229_5,
3313         0x00, 0x69, 0x3c, 1600, 1200},/* 26 1600x1200x85Hz */
3314         {Support32Bpp + SyncPP, RES1600x1200x100, VCLK269_655,
3315         0x00, 0x69, 0x3c, 1600, 1200},/* 27 1600x1200x100Hz */
3316         {Support32Bpp + SyncPP, RES1600x1200x120, VCLK323_586,
3317         0x00, 0x69, 0x3c, 1600, 1200},/* 28 1600x1200x120Hz */
3318         {Support32Bpp + SupportLCD + SyncNP, RES1920x1440x60, VCLK234,
3319         0x00, 0x00, 0x68, 1920, 1440},/* 29 1920x1440x60Hz */
3320         {Support32Bpp + SyncPN, RES1920x1440x65, VCLK254_817,
3321         0x00, 0x00, 0x68, 1920, 1440},/* 2a 1920x1440x65Hz */
3322         {Support32Bpp + SyncPN, RES1920x1440x70, VCLK277_015,
3323         0x00, 0x00, 0x68, 1920, 1440},/* 2b 1920x1440x70Hz */
3324         {Support32Bpp + SyncPN, RES1920x1440x75, VCLK291_132,
3325         0x00, 0x00, 0x68, 1920, 1440},/* 2c 1920x1440x75Hz */
3326         {Support32Bpp + SyncPN, RES1920x1440x85, VCLK330_615,
3327         0x00, 0x00, 0x68, 1920, 1440},/* 2d 1920x1440x85Hz */
3328         {Support16Bpp + SyncPN, RES1920x1440x100, VCLK388_631,
3329         0x00, 0x00, 0x68, 1920, 1440},/* 2e 1920x1440x100Hz */
3330         {Support32Bpp + SupportLCD + SyncPN, RES2048x1536x60, VCLK266_952,
3331         0x00, 0x00, 0x6c, 2048, 1536},/* 2f 2048x1536x60Hz */
3332         {Support32Bpp + SyncPN, RES2048x1536x65, VCLK291_766,
3333         0x00, 0x00, 0x6c, 2048, 1536},/* 30 2048x1536x65Hz */
3334         {Support32Bpp + SyncPN, RES2048x1536x70, VCLK315_195,
3335         0x00, 0x00, 0x6c, 2048, 1536},/* 31 2048x1536x70Hz */
3336         {Support32Bpp + SyncPN, RES2048x1536x75, VCLK340_477,
3337         0x00, 0x00, 0x6c, 2048, 1536},/* 32 2048x1536x75Hz */
3338         {Support16Bpp + SyncPN, RES2048x1536x85, VCLK375_847,
3339         0x00, 0x00, 0x6c, 2048, 1536},/* 33 2048x1536x85Hz */
3340         {Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 +
3341          SyncPP + SupportYPbPr, RES800x480x60, VCLK39_77,
3342          0x08, 0x00, 0x70, 800, 480},/* 34 800x480x60Hz */
3343         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x75, VCLK49_5,
3344         0x08, 0x00, 0x70, 800, 480},/* 35 800x480x75Hz */
3345         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x85, VCLK56_25,
3346         0x08, 0x00, 0x70, 800, 480},/* 36 800x480x85Hz */
3347         {Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 +
3348          SyncPP + SupportYPbPr, RES1024x576x60, VCLK65,
3349          0x09, 0x00, 0x71, 1024, 576},/* 37 1024x576x60Hz */
3350         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x75, VCLK78_75,
3351         0x09, 0x00, 0x71, 1024, 576},/* 38 1024x576x75Hz */
3352         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x85, VCLK94_5,
3353         0x09, 0x00, 0x71, 1024, 576},/* 39 1024x576x85Hz */
3354         {Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 +
3355         SyncPP + SupportYPbPr, RES1280x720x60, VCLK108_2,
3356         0x0A, 0x00, 0x75, 1280, 720},/* 3a 1280x720x60Hz*/
3357         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x75, VCLK135_5,
3358         0x0A, 0x00, 0x75, 1280, 720},/* 3b 1280x720x75Hz */
3359         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x85, VCLK157_5,
3360         0x0A, 0x00, 0x75, 1280, 720},/* 3c 1280x720x85Hz */
3361         {Support32Bpp + SupportTV + SyncNN, RES720x480x60, VCLK28_322,
3362         0x06, 0x00, 0x31,  720, 480},/* 3d 720x480x60Hz */
3363         {Support32Bpp + SupportTV + SyncPP, RES720x576x56, VCLK36,
3364         0x06, 0x00, 0x32, 720, 576},/* 3e 720x576x56Hz */
3365         {Support32Bpp + InterlaceMode + NoSupportLCD + SyncPP, RES856x480x79I,
3366         VCLK35_2, 0x00, 0x00, 0x00,  856, 480},/* 3f 856x480x79I */
3367         {Support32Bpp + NoSupportLCD + SyncNN, RES856x480x60, VCLK35_2,
3368         0x00, 0x00, 0x00,  856, 480},/* 40 856x480x60Hz */
3369         {Support32Bpp + NoSupportHiVisionTV + SyncPP, RES1280x768x60,
3370         VCLK79_411, 0x08, 0x48, 0x23, 1280, 768},/* 41 1280x768x60Hz */
3371         {Support32Bpp + NoSupportHiVisionTV + SyncPP, RES1400x1050x60,
3372         VCLK122_61, 0x08, 0x69, 0x26, 1400, 1050},/* 42 1400x1050x60Hz */
3373         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x60, VCLK80_350,
3374         0x37, 0x00, 0x20, 1152, 864},/* 43 1152x864x60Hz */
3375         {Support32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x75, VCLK107_385,
3376         0x37, 0x00, 0x20, 1152, 864},/* 44 1152x864x75Hz */
3377         {Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x75,
3378         VCLK125_999, 0x3A, 0x88, 0x7b, 1280, 960},/* 45 1280x960x75Hz */
3379         {Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x85,
3380         VCLK148_5, 0x0A, 0x88, 0x7b, 1280, 960},/* 46 1280x960x85Hz */
3381         {Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x120,
3382         VCLK217_325, 0x3A, 0x88, 0x7b, 1280, 960},/* 47 1280x960x120Hz */
3383         {Support32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x160, VCLK139_054,
3384         0x30, 0x47, 0x37, 1024, 768},/* 48 1024x768x160Hz */
3385 };
3386
3387
3388 #if 0
3389 static struct XGI330_VCLKDataStruct XGI330_VCLKData[] = {
3390         {0x1b, 0xe1,  25}, /* 0x0 */
3391         {0x4e, 0xe4,  28}, /* 0x1 */
3392         {0x57, 0xe4,  31}, /* 0x2 */
3393         {0xc3, 0xc8,  36}, /* 0x3 */
3394         {0x42, 0xe2,  40}, /* 0x4 */
3395         {0xfe, 0xcd,  43}, /* 0x5 */
3396         {0x5d, 0xc4,  44}, /* 0x6 */
3397         {0x52, 0xe2,  49}, /* 0x7 */
3398         {0x53, 0xe2,  50}, /* 0x8 */
3399         {0x74, 0x67,  52}, /* 0x9 */
3400         {0x6d, 0x66,  56}, /* 0xa */
3401         {0x6c, 0xc3,  65}, /* 0xb */
3402         {0x46, 0x44,  67}, /* 0xc */
3403         {0xb1, 0x46,  68}, /* 0xd */
3404         {0xd3, 0x4a,  72}, /* 0xe */
3405         {0x29, 0x61,  75}, /* 0xf */
3406         {0x6e, 0x46,  76}, /* 0x10 */
3407         {0x2b, 0x61,  78}, /* 0x11 */
3408         {0x31, 0x42,  79}, /* 0x12 */
3409         {0xab, 0x44,  83}, /* 0x13 */
3410         {0x46, 0x25,  84}, /* 0x14 */
3411         {0x78, 0x29,  86}, /* 0x15 */
3412         {0x62, 0x44,  94}, /* 0x16 */
3413         {0x2b, 0x41, 104}, /* 0x17 */
3414         {0x3a, 0x23, 105}, /* 0x18 */
3415         {0x70, 0x44, 108}, /* 0x19 */
3416         {0x3c, 0x23, 109}, /* 0x1a */
3417         {0x5e, 0x43, 113}, /* 0x1b */
3418         {0xbc, 0x44, 116}, /* 0x1c */
3419         {0xe0, 0x46, 132}, /* 0x1d */
3420         {0x54, 0x42, 135}, /* 0x1e */
3421         {0xea, 0x2a, 139}, /* 0x1f */
3422         {0x41, 0x22, 157}, /* 0x20 */
3423         {0x70, 0x24, 162}, /* 0x21 */
3424         {0x30, 0x21, 175}, /* 0x22 */
3425         {0x4e, 0x22, 189}, /* 0x23 */
3426         {0xde, 0x26, 194}, /* 0x24 */
3427         {0x62, 0x06, 202}, /* 0x25 */
3428         {0x3f, 0x03, 229}, /* 0x26 */
3429         {0xb8, 0x06, 234}, /* 0x27 */
3430         {0x34, 0x02, 253}, /* 0x28 */
3431         {0x58, 0x04, 255}, /* 0x29 */
3432         {0x24, 0x01, 265}, /* 0x2a */
3433         {0x9b, 0x02, 267}, /* 0x2b */
3434         {0x70, 0x05, 270}, /* 0x2c */
3435         {0x25, 0x01, 272}, /* 0x2d */
3436         {0x9c, 0x02, 277}, /* 0x2e */
3437         {0x27, 0x01, 286}, /* 0x2f */
3438         {0x3c, 0x02, 291}, /* 0x30 */
3439         {0xef, 0x0a, 292}, /* 0x31 */
3440         {0xf6, 0x0a, 310}, /* 0x32 */
3441         {0x95, 0x01, 315}, /* 0x33 */
3442         {0xf0, 0x09, 324}, /* 0x34 */
3443         {0xfe, 0x0a, 331}, /* 0x35 */
3444         {0xf3, 0x09, 332}, /* 0x36 */
3445         {0xea, 0x08, 340}, /* 0x37 */
3446         {0xe8, 0x07, 376}, /* 0x38 */
3447         {0xde, 0x06, 389}, /* 0x39 */
3448         {0x52, 0x2a,  54}, /* 0x3a */
3449         {0x52, 0x6a,  27}, /* 0x3b */
3450         {0x62, 0x24,  70}, /* 0x3c */
3451         {0x62, 0x64,  70}, /* 0x3d */
3452         {0xa8, 0x4c,  30}, /* 0x3e */
3453         {0x20, 0x26,  33}, /* 0x3f */
3454         {0x31, 0xc2,  39}, /* 0x40 */
3455         {0x60, 0x36,  30}, /* 0x41 */
3456         {0x40, 0x4A,  28}, /* 0x42 */
3457         {0x9F, 0x46,  44}, /* 0x43 */
3458         {0x97, 0x2C,  26}, /* 0x44 */
3459         {0x44, 0xE4,  25}, /* 0x45 */
3460         {0x7E, 0x32,  47}, /* 0x46 */
3461         {0x08, 0x24,  31}, /* 0x47 */
3462         {0x97, 0x2c,  26}, /* 0x48 */
3463         {0xCE, 0x3c,  39}, /* 0x49 */
3464         {0x52, 0x4A,  36}, /* 0x4a */
3465         {0x2C, 0x61,  95}, /* 0x4b */
3466         {0x78, 0x27, 108}, /* 0x4c */
3467         {0x66, 0x43, 123},  /* 0x4d */
3468         {0x2c, 0x61,  80},  /* 0x4e */
3469         {0x3b, 0x61, 108}  /* 0x4f */
3470 };
3471
3472 static struct XGI_VBVCLKDataStruct XGI330_VBVCLKData[] = {
3473         {0x1b, 0xe1,  25}, /* 0x0 */
3474         {0x4e, 0xe4,  28}, /* 0x1 */
3475         {0x57, 0xe4,  31}, /* 0x2 */
3476         {0xc3, 0xc8,  36}, /* 0x3 */
3477         {0x42, 0x47,  40}, /* 0x4 */
3478         {0xfe, 0xcd,  43}, /* 0x5 */
3479         {0x5d, 0xc4,  44}, /* 0x6 */
3480         {0x52, 0x47,  49}, /* 0x7 */
3481         {0x53, 0x47,  50}, /* 0x8 */
3482         {0x74, 0x67,  52}, /* 0x9 */
3483         {0x6d, 0x66,  56}, /* 0xa */
3484         {0x5a, 0x64,  65}, /* 0xb */
3485         {0x46, 0x44,  67}, /* 0xc */
3486         {0xb1, 0x46,  68}, /* 0xd */
3487         {0xd3, 0x4a,  72}, /* 0xe */
3488         {0x29, 0x61,  75}, /* 0xf */
3489         {0x6d, 0x46,  75}, /* 0x10 */
3490         {0x41, 0x43,  78}, /* 0x11 */
3491         {0x31, 0x42,  79}, /* 0x12 */
3492         {0xab, 0x44,  83}, /* 0x13 */
3493         {0x46, 0x25,  84}, /* 0x14 */
3494         {0x78, 0x29,  86}, /* 0x15 */
3495         {0x62, 0x44,  94}, /* 0x16 */
3496         {0x2b, 0x22, 104}, /* 0x17 */
3497         {0x49, 0x24, 105}, /* 0x18 */
3498         {0xf8, 0x2f, 108}, /* 0x19 */
3499         {0x3c, 0x23, 109}, /* 0x1a */
3500         {0x5e, 0x43, 113}, /* 0x1b */
3501         {0xbc, 0x44, 116}, /* 0x1c */
3502         {0xe0, 0x46, 132}, /* 0x1d */
3503         {0xd4, 0x28, 135}, /* 0x1e */
3504         {0xea, 0x2a, 139}, /* 0x1f */
3505         {0x41, 0x22, 157}, /* 0x20 */
3506         {0x70, 0x24, 162}, /* 0x21 */
3507         {0x30, 0x21, 175}, /* 0x22 */
3508         {0x4e, 0x22, 189}, /* 0x23 */
3509         {0xde, 0x26, 194}, /* 0x24 */
3510         {0x70, 0x07, 202}, /* 0x25 */
3511         {0x3f, 0x03, 229}, /* 0x26 */
3512         {0xb8, 0x06, 234}, /* 0x27 */
3513         {0x34, 0x02, 253}, /* 0x28 */
3514         {0x58, 0x04, 255}, /* 0x29 */
3515         {0x24, 0x01, 265}, /* 0x2a */
3516         {0x9b, 0x02, 267}, /* 0x2b */
3517         {0x70, 0x05, 270}, /* 0x2c */
3518         {0x25, 0x01, 272}, /* 0x2d */
3519         {0x9c, 0x02, 277}, /* 0x2e */
3520         {0x27, 0x01, 286}, /* 0x2f */
3521         {0x3c, 0x02, 291}, /* 0x30 */
3522         {0xef, 0x0a, 292}, /* 0x31 */
3523         {0xf6, 0x0a, 310}, /* 0x32 */
3524         {0x95, 0x01, 315}, /* 0x33 */
3525         {0xf0, 0x09, 324}, /* 0x34 */
3526         {0xfe, 0x0a, 331}, /* 0x35 */
3527         {0xf3, 0x09, 332}, /* 0x36 */
3528         {0xea, 0x08, 340}, /* 0x37 */
3529         {0xe8, 0x07, 376}, /* 0x38 */
3530         {0xde, 0x06, 389}, /* 0x39 */
3531         {0x52, 0x2a,  54}, /* 0x3a */
3532         {0x52, 0x6a,  27}, /* 0x3b */
3533         {0x62, 0x24,  70}, /* 0x3c */
3534         {0x62, 0x64,  70}, /* 0x3d */
3535         {0xa8, 0x4c,  30}, /* 0x3e */
3536         {0x20, 0x26,  33}, /* 0x3f */
3537         {0x31, 0xc2,  39}, /* 0x40 */
3538         {0x2e, 0x48,  25}, /* 0x41 */
3539         {0x24, 0x46,  25}, /* 0x42 */
3540         {0x26, 0x64,  28}, /* 0x43 */
3541         {0x37, 0x64,  40}, /* 0x44 */
3542         {0xa1, 0x42, 108}, /* 0x45 */
3543         {0x37, 0x61, 100}, /* 0x46 */
3544         {0x78, 0x27, 108}, /* 0x47 */
3545         {0x5e, 0x64, 68},  /* 0x48 chiawen for fuj1280x768*/
3546         {0x70, 0x44, 108}, /* 0x49 chiawen for 1400x1050*/
3547 };
3548 #endif
3549
3550 static unsigned char XGI330_ScreenOffset[] = {
3551         0x14, 0x19, 0x20, 0x28, 0x32, 0x40,
3552         0x50, 0x64, 0x78, 0x80, 0x2d, 0x35,
3553         0x57, 0x48
3554 };
3555
3556 static struct XGI_StResInfoStruct XGI330_StResInfo[] = {
3557         {640, 400},
3558         {640, 350},
3559         {720, 400},
3560         {720, 350},
3561         {640, 480}
3562 };
3563
3564 static struct XGI_ModeResInfoStruct XGI330_ModeResInfo[] = {
3565         { 320,  200, 8,  8},
3566         { 320,  240, 8,  8},
3567         { 320,  400, 8,  8},
3568         { 400,  300, 8,  8},
3569         { 512,  384, 8,  8},
3570         { 640,  400, 8, 16},
3571         { 640,  480, 8, 16},
3572         { 800,  600, 8, 16},
3573         {1024,  768, 8, 16},
3574         {1280, 1024, 8, 16},
3575         {1600, 1200, 8, 16},
3576         {1920, 1440, 8, 16},
3577         {2048, 1536, 8, 16},
3578         { 720,  480, 8, 16},
3579         { 720,  576, 8, 16},
3580         {1280,  960, 8, 16},
3581         { 800,  480, 8, 16},
3582         {1024,  576, 8, 16},
3583         {1280,  720, 8, 16},
3584         { 856,  480, 8, 16},
3585         {1280,  768, 8, 16},
3586         {1400, 1050, 8, 16},
3587         {1152,  864, 8, 16}
3588 };
3589
3590 static unsigned char XGI330_OutputSelect = 0x40;
3591 static unsigned char XGI330_SoftSetting = 0x30;
3592 static unsigned char XGI330_SR07 = 0x18;
3593
3594 #if 0
3595 static unsigned char XGI330New_SR15[8][8] = {
3596         { 0x0,  0x4, 0x60, 0x60},
3597         { 0xf,  0xf,  0xf,  0xf},
3598         {0xba, 0xba, 0xba, 0xba},
3599         {0xa9, 0xa9, 0xac, 0xac},
3600         {0xa0, 0xa0, 0xa0, 0xa8},
3601         { 0x0,  0x0,  0x2,  0x2},
3602         {0x30, 0x30, 0x40, 0x40},
3603         { 0x0, 0xa5, 0xfb, 0xf6}
3604 };
3605
3606 static unsigned char XGI330New_CR40[5][8] = {
3607         {0x77, 0x77, 0x44, 0x44},
3608         {0x77, 0x77, 0x44, 0x44},
3609         { 0x0,  0x0,  0x0,  0x0},
3610         {0x5b, 0x5b, 0xab, 0xab},
3611         { 0x0,  0x0, 0xf0, 0xf8}
3612 };
3613 #endif
3614
3615 static unsigned char XGI330_CR49[] = {0xaa, 0x88};
3616 static unsigned char XGI330_SR1F = 0x0;
3617 static unsigned char XGI330_SR21 = 0xa3;
3618 #if 0
3619 static unsigned char XGI330_650_SR21 = 0xa7;
3620 #endif
3621 static unsigned char XGI330_SR22 = 0xfb;
3622 static unsigned char XGI330_SR23 = 0xf6;
3623 static unsigned char XGI330_SR24 = 0xd;
3624
3625 #if 0
3626 static unsigned char XGI660_SR21 = 0xa3;/* 2003.0312 */
3627 static unsigned char XGI660_SR22 = 0xf3;/* 2003.0312 */
3628
3629 static unsigned char XGI330_LVDS_SR32 = 0x00;   /* ynlai for 650 LVDS */
3630 static unsigned char XGI330_LVDS_SR33 = 0x00;   /* chiawen for 650 LVDS */
3631 static unsigned char XGI330_650_SR31 = 0x40;
3632 static unsigned char XGI330_650_SR33 = 0x04;
3633 #endif
3634 static unsigned char XGI330_CRT2Data_1_2 = 0x0;
3635 static unsigned char XGI330_CRT2Data_4_D = 0x0;
3636 static unsigned char XGI330_CRT2Data_4_E = 0x0;
3637 static unsigned char XGI330_CRT2Data_4_10 = 0x80;
3638 static unsigned short XGI330_RGBSenseData = 0xd1;
3639 static unsigned short XGI330_VideoSenseData = 0xb9;
3640 static unsigned short XGI330_YCSenseData = 0xb3;
3641 static unsigned short XGI330_RGBSenseData2 = 0x0190;     /*301b*/
3642 static unsigned short XGI330_VideoSenseData2 = 0x0110;
3643 static unsigned short XGI330_YCSenseData2 = 0x016B;
3644 #if 0
3645 static unsigned char XGI330_NTSCPhase[] = {0x21, 0xed, 0x8a, 0x8};
3646 static unsigned char XGI330_PALPhase[] = {0x2a, 0x5, 0xd3, 0x0};
3647 static unsigned char XGI330_NTSCPhase2[] = {0x21, 0xF0, 0x7B, 0xD6};/*301b*/
3648 static unsigned char XGI330_PALPhase2[] = {0x2a, 0x09, 0x86, 0xe9};
3649 static unsigned char XGI330_PALMPhase[] = {0x21, 0xE4, 0x2E, 0x9B};   /*palmn*/
3650 static unsigned char XGI330_PALNPhase[] = {0x21, 0xF4, 0x3E, 0xBA};
3651 #endif
3652 static unsigned char XG40_I2CDefinition = 0x00 ;
3653 static unsigned char XG20_CR97 = 0x10 ;
3654
3655 static unsigned char XG21_DVOSetting = 0x00 ;
3656 static unsigned char XG21_CR2E = 0x00 ;
3657 static unsigned char XG21_CR2F = 0x00 ;
3658 static unsigned char XG21_CR46 = 0x00 ;
3659 static unsigned char XG21_CR47 = 0x00 ;
3660
3661 static unsigned char XG27_CR97 = 0xC1 ;
3662 static unsigned char XG27_SR36 = 0x30 ;
3663 static unsigned char XG27_CR8F = 0x0C ;
3664 static unsigned char XG27_CRD0[] = {
3665         0, 0, 0, 0, 0, 0, 0, 0x82, 0x00, 0x66, 0x01, 0x00
3666 };
3667 static unsigned char XG27_CRDE[] = {0, 0};
3668 static unsigned char XG27_SR40 = 0x04 ;
3669 static unsigned char XG27_SR41 = 0x00 ;
3670
3671 static unsigned char XGI330_CHTVVCLKUNTSC[] = {0x00};
3672
3673 static unsigned char XGI330_CHTVVCLKONTSC[] = {0x00};
3674
3675 static unsigned char XGI330_CHTVVCLKUPAL[] = {0x00};
3676
3677 static unsigned char XGI330_CHTVVCLKOPAL[] = {0x00};
3678
3679 static unsigned char XGI7007_CHTVVCLKUNTSC[] = {
3680         CH7007TVVCLK30_2,
3681         CH7007TVVCLK30_2,
3682         CH7007TVVCLK30_2,
3683         CH7007TVVCLK30_2,
3684         CH7007TVVCLK28_1,
3685         CH7007TVVCLK47_8
3686 };
3687
3688 static unsigned char XGI7007_CHTVVCLKONTSC[] = {
3689         CH7007TVVCLK26_4,
3690         CH7007TVVCLK26_4,
3691         CH7007TVVCLK26_4,
3692         CH7007TVVCLK26_4,
3693         CH7007TVVCLK24_6,
3694         CH7007TVVCLK43_6
3695 };
3696
3697 static unsigned char XGI7007_CHTVVCLKUPAL[] = {
3698         CH7007TVVCLK31_5,
3699         CH7007TVVCLK31_5,
3700         CH7007TVVCLK31_5,
3701         CH7007TVVCLK31_5,
3702         CH7007TVVCLK26_2,
3703         CH7007TVVCLK39
3704 };
3705
3706 static unsigned char XGI7007_CHTVVCLKOPAL[] = {
3707         CH7007TVVCLK31_5,
3708         CH7007TVVCLK31_5,
3709         CH7007TVVCLK31_5,
3710         CH7007TVVCLK31_5,
3711         CH7007TVVCLK26_2,
3712         CH7007TVVCLK36
3713 };
3714
3715 static struct XGI330_VCLKDataStruct XGI_CH7007VCLKData[] = {
3716         {0x60, 0x36, 30},  /* 0 30.2 MHZ */
3717         {0x40, 0x4A, 28},  /* 1 28.19 MHZ */
3718         {0x9F, 0x46, 44},  /* 2 43.6 MHZ */
3719         {0x97, 0x2C, 26},  /* 3 26.4 MHZ */
3720         {0x44, 0xE4, 25},  /* 4 24.6 MHZ */
3721         {0x7E, 0x32, 47},  /* 5 47.832 MHZ */
3722         {0x8A, 0x24, 31},  /* 6 31.5 MHZ */
3723         {0x97, 0x2C, 26},  /* 7 26.2 MHZ */
3724         {0xCE, 0x3C, 39},  /* 8 39 MHZ   */
3725         {0x52, 0x4A, 36},  /* 9 36 MHZ   */
3726         {0xFF, 0x00,  0}   /* End mark      */
3727 };
3728
3729 static struct XGI330_VCLKDataStruct XGI_VCLKData[] = {
3730         /* SR2B,SR2C,SR2D */
3731         {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
3732         {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
3733         {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
3734         {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
3735         {0x42, 0xE2,  40}, /* 04 (40.000MHz) */
3736         {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
3737         {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
3738         {0x52, 0xE2,  49}, /* 07 (49.500MHz) */
3739         {0x53, 0xE2,  50}, /* 08 (50.000MHz) */
3740         {0x74, 0x67,  52}, /* 09 (52.406MHz) */
3741         {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
3742         {0x6C, 0xC3,  65}, /* 0B (65.000MHz) */
3743         {0x46, 0x44,  67}, /* 0C (67.765MHz) */
3744         {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
3745         {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
3746         {0x29, 0x61,  75}, /* 0F (75.000MHz) */
3747         {0x6E, 0x46,  76}, /* 10 (75.800MHz) */
3748         {0x2B, 0x61,  78}, /* 11 (78.750MHz) */
3749         {0x31, 0x42,  79}, /* 12 (79.411MHz) */
3750         {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
3751         {0x46, 0x25,  84}, /* 14 (84.800MHz) */
3752         {0x78, 0x29,  86}, /* 15 (86.600MHz) */
3753         {0x62, 0x44,  94}, /* 16 (94.500MHz) */
3754         {0x2B, 0x41, 104}, /* 17 (104.998MHz) */
3755         {0x3A, 0x23, 105}, /* 18 (105.882MHz) */
3756         {0x70, 0x44, 108}, /* 19 (107.862MHz) */
3757         {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
3758         {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
3759         {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
3760         {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
3761         {0x54, 0x42, 135}, /* 1E (135.500MHz) */
3762         {0x9C, 0x22, 139}, /* 1F (139.275MHz) */
3763         {0x41, 0x22, 157}, /* 20 (157.500MHz) */
3764         {0x70, 0x24, 162}, /* 21 (161.793MHz) */
3765         {0x30, 0x21, 175}, /* 22 (175.000MHz) */
3766         {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
3767         {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
3768         {0x62, 0x06, 202}, /* 25 (202.500MHz) */
3769         {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
3770         {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
3771         {0x34, 0x02, 253}, /* 28 (252.699MHz) */
3772         {0x58, 0x04, 255}, /* 29 (254.817MHz) */
3773         {0x24, 0x01, 265}, /* 2A (265.728MHz) */
3774         {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
3775         {0x70, 0x05, 270}, /* 2C (269.65567MHz) */
3776         {0x25, 0x01, 272}, /* 2D (272.04199MHz) */
3777         {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
3778         {0x27, 0x01, 286}, /* 2F (286.359985MHz) */
3779         {0xB3, 0x04, 291}, /* 30 (291.13266MHz) */
3780         {0xBC, 0x05, 292}, /* 31 (291.766MHz) */
3781         {0xF6, 0x0A, 310}, /* 32 (309.789459MHz) */
3782         {0x95, 0x01, 315}, /* 33 (315.195MHz) */
3783         {0xF0, 0x09, 324}, /* 34 (323.586792MHz) */
3784         {0xFE, 0x0A, 331}, /* 35 (330.615631MHz) */
3785         {0xF3, 0x09, 332}, /* 36 (332.177612MHz) */
3786         {0x5E, 0x03, 340}, /* 37 (340.477MHz) */
3787         {0xE8, 0x07, 376}, /* 38 (375.847504MHz) */
3788         {0xDE, 0x06, 389}, /* 39 (388.631439MHz) */
3789         {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
3790         {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
3791         {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
3792         {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
3793         {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
3794         {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
3795         {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
3796         {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
3797         {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
3798         {0x24, 0x46,  25}, /* 43 (25.175MHz) */
3799         {0x26, 0x64,  28}, /* 44 (28.322MHz) */
3800         {0x37, 0x64,  40}, /* 45 (40.000MHz) */
3801         {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
3802         {0x37, 0x61, 100}, /* 47 (100.00MHz) */
3803         {0x78, 0x27, 108}, /* 48 (108.200MHz) */
3804         {0xBF, 0xC8,  35}, /* 49 (35.2MHz) */
3805         {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
3806         {0x2C, 0x61,  80}, /* 4B (80.350Mhz) */
3807         {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
3808 /*
3809         {0x60, 0x36, 30},// 4D (30.200MHz)   }// No use
3810         {0x60, 0x36, 30},// 4E (30.200MHz)   }// No use
3811         {0x60, 0x36, 30},// 4F (30.200MHz)   }// No use
3812         {0x60, 0x36, 30},// 50 (30.200MHz)   }// CHTV
3813         {0x40, 0x4A, 28},// 51 (28.190MHz)
3814         {0x9F, 0x46, 44},// 52 (43.600MHz)
3815         {0x97, 0x2C, 26},// 53 (26.400MHz)
3816         {0x44, 0xE4, 25},// 54 (24.600MHz)
3817         {0x7E, 0x32, 47},// 55 (47.832MHz)
3818         {0x8A, 0x24, 31},// 56 (31.500MHz)
3819         {0x97, 0x2C, 26},// 57 (26.200MHz)
3820         {0xCE, 0x3C, 39},// 58 (39.000MHz)
3821         {0x52, 0x4A, 36},// 59 (36.000MHz)
3822 */
3823         {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
3824         {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
3825         {0x28, 0x26, 322}, /* 4F (322.273MHz) */
3826         {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
3827         {0x57, 0x24, 126}, /* 51 (125.999MHz) */
3828         {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
3829         {0x42, 0x61, 120}, /* 53 (120.839MHz) */
3830         {0x62, 0x61, 178}, /* 54 (178.992MHz) */
3831         {0x59, 0x22, 217}, /* 55 (217.325MHz) */
3832         {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
3833         {0x52, 0x63,  74}, /* 57 (74.25MHz) */
3834         {0xFF, 0x00,   0}  /* End mark */
3835 };
3836
3837 static struct XGI330_VCLKDataStruct XGI_VBVCLKData[] = {
3838         {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
3839         {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
3840         {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
3841         {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
3842         {0x42, 0x47,  40}, /* 04 (40.000MHz) */
3843         {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
3844         {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
3845         {0x52, 0x47,  49}, /* 07 (49.500MHz) */
3846         {0x53, 0x47,  50}, /* 08 (50.000MHz) */
3847         {0x74, 0x67,  52}, /* 09 (52.406MHz) */
3848         {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
3849         {0x35, 0x62,  65}, /* 0B (65.000MHz) */
3850         {0x46, 0x44,  67}, /* 0C (67.765MHz) */
3851         {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
3852         {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
3853         {0x29, 0x61,  75}, /* 0F (75.000MHz) */
3854         {0x6D, 0x46,  75}, /* 10 (75.800MHz) */
3855         {0x41, 0x43,  78}, /* 11 (78.750MHz) */
3856         {0x31, 0x42,  79}, /* 12 (79.411MHz) */
3857         {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
3858         {0x46, 0x25,  84}, /* 14 (84.800MHz) */
3859         {0x78, 0x29,  86}, /* 15 (86.600MHz) */
3860         {0x62, 0x44,  94}, /* 16 (94.500MHz) */
3861         {0x2B, 0x22, 104}, /* 17 (104.998MHz) */
3862         {0x49, 0x24, 105}, /* 18 (105.882MHz) */
3863         {0xF8, 0x2F, 108}, /* 19 (108.279MHz) */
3864         {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
3865         {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
3866         {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
3867         {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
3868         {0xD4, 0x28, 135}, /* 1E (135.220MHz) */
3869         {0xEA, 0x2A, 139}, /* 1F (139.275MHz) */
3870         {0x41, 0x22, 157}, /* 20 (157.500MHz) */
3871         {0x70, 0x24, 162}, /* 21 (161.793MHz) */
3872         {0x30, 0x21, 175}, /* 22 (175.000MHz) */
3873         {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
3874         {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
3875         {0x70, 0x07, 202}, /* 25 (202.500MHz) */
3876         {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
3877         {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
3878         {0x34, 0x02, 253}, /* 28 (252.699997 MHz) */
3879         {0x58, 0x04, 255}, /* 29 (254.817MHz) */
3880         {0x24, 0x01, 265}, /* 2A (265.728MHz) */
3881         {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
3882         {0x70, 0x05, 270}, /* 2C (269.65567 MHz) */
3883         {0x25, 0x01, 272}, /* 2D (272.041992 MHz) */
3884         {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
3885         {0x27, 0x01, 286}, /* 2F (286.359985 MHz) */
3886         {0x3C, 0x02, 291}, /* 30 (291.132660 MHz) */
3887         {0xEF, 0x0A, 292}, /* 31 (291.766MHz) */
3888         {0xF6, 0x0A, 310}, /* 32 (309.789459 MHz) */
3889         {0x95, 0x01, 315}, /* 33 (315.195MHz) */
3890         {0xF0, 0x09, 324}, /* 34 (323.586792 MHz) */
3891         {0xFE, 0x0A, 331}, /* 35 (330.615631 MHz) */
3892         {0xF3, 0x09, 332}, /* 36 (332.177612 MHz) */
3893         {0xEA, 0x08, 340}, /* 37 (340.477MHz) */
3894         {0xE8, 0x07, 376}, /* 38 (375.847504 MHz) */
3895         {0xDE, 0x06, 389}, /* 39 (388.631439 MHz) */
3896         {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
3897         {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
3898         {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
3899         {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
3900         {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
3901         {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
3902         {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
3903         {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
3904         {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
3905         {0x24, 0x46,  25}, /* 43 (25.175MHz) */
3906         {0x26, 0x64,  28}, /* 44 (28.322MHz) */
3907         {0x37, 0x64,  40}, /* 45 (40.000MHz) */
3908         {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
3909         {0x37, 0x61, 100}, /* 47 (100.00MHz) */
3910         {0x78, 0x27, 108}, /* 48 (108.200MHz) */
3911         {0xBF, 0xC8, 35 }, /* 49 (35.2MHz) */
3912         {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
3913         {0x2C, 0x61, 80 }, /* 4B (80.350Mhz) */
3914         {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
3915 /*
3916         {0x60, 0x36, 30}, // 4D (30.200MHz)   }// No use
3917         {0x60, 0x36, 30}, // 4E (30.200MHz)   }// No use
3918         {0x60, 0x36, 30}, // 4F (30.200MHz)   }// No use
3919         {0x60, 0x36, 30}, // 50 (30.200MHz)   }// CHTV
3920         {0x40, 0x4A, 28}, // 51 (28.190MHz)
3921         {0x9F, 0x46, 44}, // 52 (43.600MHz)
3922         {0x97, 0x2C, 26}, // 53 (26.400MHz)
3923         {0x44, 0xE4, 25}, // 54 (24.600MHz)
3924         {0x7E, 0x32, 47}, // 55 (47.832MHz)
3925         {0x8A, 0x24, 31}, // 56 (31.500MHz)
3926         {0x97, 0x2C, 26}, // 57 (26.200MHz)
3927         {0xCE, 0x3C, 39}, // 58 (39.000MHz)
3928         {0x52, 0x4A, 36}, // 59 (36.000MHz)
3929 */
3930         {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
3931         {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
3932         {0x28, 0x26, 322}, /* 4F (322.273MHz) */
3933         {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
3934         {0x57, 0x24, 126}, /* 51 (125.999MHz) */
3935         {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
3936         {0x42, 0x61, 120}, /* 53 (120.839MHz) */
3937         {0x62, 0x61, 178}, /* 54 (178.992MHz) */
3938         {0x59, 0x22, 217}, /* 55 (217.325MHz) */
3939         {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
3940         {0x52, 0x63,  74}, /* 57 (74.25MHz) */
3941         {0xFF, 0x00,   0}  /* End mark */
3942 };
3943
3944 #if 0
3945 static unsigned char XGI660_TVDelayList[] = {
3946         0x44, /* ; 0 ExtNTSCDelay */
3947         0x44, /* ; 1 StNTSCDelay */
3948         0x44, /* ; 2 ExtPALDelay */
3949         0x44, /* ; 3 StPALDelay */
3950         0x44, /* ; 4 ExtHiTVDelay(1080i) */
3951         0x44, /* ; 5 StHiTVDelay(1080i) */
3952         0x44, /* ; 6 ExtYPbPrDelay(525i) */
3953         0x44, /* ; 7 StYPbPrDealy(525i) */
3954         0x44, /* ; 8 ExtYPbPrDelay(525p) */
3955         0x44, /* ; 9 StYPbPrDealy(525p) */
3956         0x44, /* ; A ExtYPbPrDelay(750p) */
3957         0x44  /* ; B StYPbPrDealy(750p) */
3958 };
3959
3960 static unsigned char XGI660_TVDelayList2[] = {
3961         0x44, /* ; 0 ExtNTSCDelay */
3962         0x44, /* ; 1 StNTSCDelay */
3963         0x44, /* ; 2 ExtPALDelay */
3964         0x44, /* ; 3 StPALDelay */
3965         0x44, /* ; 4 ExtHiTVDelay */
3966         0x44, /* ; 5 StHiTVDelay */
3967         0x44, /* ; 6 ExtYPbPrDelay(525i) */
3968         0x44, /* ; 7 StYPbPrDealy(525i) */
3969         0x44, /* ; 8 ExtYPbPrDelay(525p) */
3970         0x44, /* ; 9 StYPbPrDealy(525p) */
3971         0x44, /* ; A ExtYPbPrDelay(750p) */
3972         0x44  /* ; B StYPbPrDealy(750p) */
3973 };
3974 #endif
3975
3976 static unsigned char XGI301TVDelayList[] = {
3977         0x22, /* ; 0 ExtNTSCDelay */
3978         0x22, /* ; 1 StNTSCDelay */
3979         0x22, /* ; 2 ExtPALDelay */
3980         0x22, /* ; 3 StPALDelay */
3981         0x88, /* ; 4 ExtHiTVDelay(1080i) */
3982         0xBB, /* ; 5 StHiTVDelay(1080i) */
3983         0x22, /* ; 6 ExtYPbPrDelay(525i) */
3984         0x22, /* ; 7 StYPbPrDealy(525i) */
3985         0x22, /* ; 8 ExtYPbPrDelay(525p) */
3986         0x22, /* ; 9 StYPbPrDealy(525p) */
3987         0x22, /* ; A ExtYPbPrDelay(750p) */
3988         0x22  /* B StYPbPrDealy(750p) */
3989 };
3990
3991 static unsigned char XGI301TVDelayList2[] = {
3992         0x22, /* ; 0 ExtNTSCDelay */
3993         0x22, /* ; 1 StNTSCDelay */
3994         0x22, /* ; 2 ExtPALDelay */
3995         0x22, /* ; 3 StPALDelay */
3996         0x22, /* ; 4 ExtHiTVDelay */
3997         0x22, /* ; 5 StHiTVDelay */
3998         0x22, /* ; 6 ExtYPbPrDelay(525i) */
3999         0x22, /* ; 7 StYPbPrDealy(525i) */
4000         0x22, /* ; 8 ExtYPbPrDelay(525p) */
4001         0x22, /* ; 9 StYPbPrDealy(525p) */
4002         0x22, /* ; A ExtYPbPrDelay(750p) */
4003         0x22  /* ; B StYPbPrDealy(750p) */
4004 };
4005
4006
4007 static unsigned char TVAntiFlickList[] = {/* NTSCAntiFlicker */
4008         0x04, /* ; 0 Adaptive */
4009         0x00, /* ; 1 new anti-flicker ? */
4010
4011         0x04, /* ; 0 Adaptive */
4012         0x08, /* ; 1 new anti-flicker ? */
4013
4014         0x04, /* ; 0 ? */
4015         0x00  /* ; 1 new anti-flicker ? */
4016 };
4017
4018
4019 static unsigned char TVEdgeList[] = {
4020         0x00, /* ; 0 NTSC No Edge enhance */
4021         0x04, /* ; 1 NTSC Adaptive Edge enhance */
4022         0x00, /* ; 0 PAL No Edge enhance */
4023         0x04, /* ; 1 PAL Adaptive Edge enhance */
4024         0x00, /* ; 0 HiTV */
4025         0x00  /* ; 1 HiTV */
4026 };
4027
4028 static unsigned long TVPhaseList[] = {
4029         0x08BAED21, /* ; 0 NTSC phase */
4030         0x00E3052A, /* ; 1 PAL phase */
4031         0x9B2EE421, /* ; 2 PAL-M phase */
4032         0xBA3EF421, /* ; 3 PAL-N phase */
4033         0xA7A28B1E, /* ; 4 NTSC 1024x768 */
4034         0xE00A831E, /* ; 5 PAL-M 1024x768 */
4035         0x00000000, /* ; 6 reserved */
4036         0x00000000, /* ; 7 reserved */
4037         0xD67BF021, /* ; 8 NTSC phase */
4038         0xE986092A, /* ; 9 PAL phase */
4039         0xA4EFE621, /* ; A PAL-M phase */
4040         0x4694F621, /* ; B PAL-N phase */
4041         0x8BDE711C, /* ; C NTSC 1024x768 */
4042         0xE00A831E  /* ; D PAL-M 1024x768 */
4043 };
4044
4045 static unsigned char NTSCYFilter1[] = {
4046         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
4047         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
4048         0xEB, 0x04, 0x25, 0x18, /* 2 : 640x text mode */
4049         0xF1, 0x04, 0x1F, 0x18, /* 3 : 720x text mode */
4050         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
4051         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
4052         0xEB, 0x15, 0x25, 0xF6  /* 6 : 800x gra. mode */
4053 };
4054
4055 static unsigned char PALYFilter1[] = {
4056         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
4057         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
4058         0xF1, 0xF7, 0x1F, 0x32, /* 2 : 640x text mode */
4059         0xF3, 0x00, 0x1D, 0x20, /* 3 : 720x text mode */
4060         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
4061         0xF1, 0xF7, 0x1F, 0x32, /* 5 : 640x gra. mode */
4062         0xFC, 0xFB, 0x14, 0x2A  /* 6 : 800x gra. mode */
4063 };
4064
4065 static unsigned char PALMYFilter1[] = {
4066         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
4067         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
4068         0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */
4069         0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */
4070         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
4071         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
4072         0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */
4073         0xFF, 0xFF, 0xFF, 0xFF  /* End of Table */
4074 };
4075
4076 static unsigned char PALNYFilter1[] = {
4077         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
4078         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
4079         0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */
4080         0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */
4081         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
4082         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
4083         0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */
4084         0xFF, 0xFF, 0xFF, 0xFF  /* End of Table */
4085 };
4086
4087 static unsigned char NTSCYFilter2[] = {
4088         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
4089         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
4090         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
4091         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
4092         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
4093         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
4094         0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
4095         0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
4096 };
4097
4098 static unsigned char PALYFilter2[] = {
4099         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
4100         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
4101         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
4102         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
4103         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
4104         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
4105         0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
4106         0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
4107 };
4108
4109 static unsigned char PALMYFilter2[] = {
4110         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
4111         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
4112         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
4113         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
4114         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
4115         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
4116         0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
4117         0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
4118 };
4119
4120 static unsigned char PALNYFilter2[] = {
4121         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
4122         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
4123         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
4124         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
4125         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
4126         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
4127         0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
4128         0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
4129 };
4130
4131 static unsigned char XGI_NTSC1024AdjTime[] = {
4132         0xa7, 0x07, 0xf2, 0x6e, 0x17, 0x8b, 0x73, 0x53,
4133         0x13, 0x40, 0x34, 0xF4, 0x63, 0xBB, 0xCC, 0x7A,
4134         0x58, 0xe4, 0x73, 0xd0, 0x13
4135 };
4136
4137 static struct XGI301C_Tap4TimingStruct HiTVTap4Timing[] = {
4138         {0, {
4139         0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
4140         0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
4141         0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
4142         0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
4143         0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
4144         0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
4145         0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
4146         0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E  /* ; F8-FF */
4147         }
4148         }
4149 };
4150
4151 static struct XGI301C_Tap4TimingStruct EnlargeTap4Timing[] = {
4152         {0, {
4153         0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
4154         0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
4155         0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
4156         0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
4157         0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
4158         0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
4159         0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
4160         0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E   /* ; F8-FF */
4161         }
4162         }
4163 };
4164
4165 static struct XGI301C_Tap4TimingStruct NoScaleTap4Timing[] = {
4166         {0, {
4167         0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
4168         0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
4169         0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
4170         0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
4171         0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
4172         0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
4173         0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
4174         0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E  /* ; F8-FF */
4175         }
4176         }
4177 };
4178
4179 static struct XGI301C_Tap4TimingStruct PALTap4Timing[] = {
4180         {600,   {
4181                 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
4182                 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
4183                 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
4184                 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
4185                 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
4186                 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
4187                 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
4188                 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04  /* ; F8-FF */
4189                 }
4190         },
4191         {768,   {
4192                 0x08, 0x12, 0x08, 0x7E, 0x07, 0x12, 0x09, 0x7E, /* ; C0-C7 */
4193                 0x06, 0x12, 0x0A, 0x7E, 0x05, 0x11, 0x0B, 0x7F, /* ; C8-CF */
4194                 0x04, 0x11, 0x0C, 0x7F, 0x03, 0x11, 0x0C, 0x00, /* ; D0-D7 */
4195                 0x03, 0x10, 0x0D, 0x00, 0x02, 0x0F, 0x0E, 0x01, /* ; D8-DF */
4196                 0x01, 0x0F, 0x0F, 0x01, 0x01, 0x0E, 0x0F, 0x02, /* ; E0-E7 */
4197                 0x00, 0x0D, 0x10, 0x03, 0x7F, 0x0C, 0x11, 0x04, /* ; EA-EF */
4198                 0x7F, 0x0C, 0x11, 0x04, 0x7F, 0x0B, 0x11, 0x05, /* ; F0-F7 */
4199                 0x7E, 0x0A, 0x12, 0x06, 0x7E, 0x09, 0x12, 0x07  /* ; F8-FF */
4200                 }
4201         },
4202         {0xFFFF, {
4203                  0x04, 0x1A, 0x04, 0x7E, 0x02, 0x1B, 0x05, 0x7E, /* ; C0-C7 */
4204                  0x01, 0x1A, 0x07, 0x7E, 0x00, 0x1A, 0x09, 0x7D, /* ; C8-CF */
4205                  0x7F, 0x19, 0x0B, 0x7D, 0x7E, 0x18, 0x0D, 0x7D, /* ; D0-D7 */
4206                  0x7D, 0x17, 0x10, 0x7C, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
4207                  0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
4208                  0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0D, 0x18, 0x7F, /* ; EA-EF */
4209                  0x7D, 0x0B, 0x19, 0x7F, 0x7D, 0x09, 0x1A, 0x00, /* ; F0-F7 */
4210                  0x7D, 0x07, 0x1A, 0x02, 0x7E, 0x05, 0x1B, 0x02  /* ; F8-FF */
4211                  }
4212         }
4213 };
4214
4215 static struct XGI301C_Tap4TimingStruct NTSCTap4Timing[] = {
4216         {480,   {
4217                 0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
4218                 0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
4219                 0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
4220                 0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
4221                 0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
4222                 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
4223                 0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
4224                 0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
4225                 }
4226         },
4227         {600,   {
4228                 0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
4229                 0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
4230                 0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
4231                 0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
4232                 0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
4233                 0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
4234                 0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
4235                 0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
4236                 }
4237         },
4238         {0xFFFF, {
4239                  0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
4240                  0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
4241                  0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
4242                  0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
4243                  0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
4244                  0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
4245                  0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
4246                  0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
4247                  }
4248         }
4249 };
4250
4251 static struct XGI301C_Tap4TimingStruct YPbPr525pTap4Timing[] = {
4252         {480,   {
4253                 0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
4254                 0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
4255                 0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
4256                 0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
4257                 0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
4258                 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
4259                 0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
4260                 0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
4261                 }
4262         },
4263         {600,   {
4264                 0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
4265                 0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
4266                 0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
4267                 0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
4268                 0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
4269                 0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
4270                 0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
4271                 0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
4272                 }
4273         },
4274         {0xFFFF, {
4275                 0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
4276                 0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
4277                 0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
4278                 0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
4279                 0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
4280                 0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
4281                 0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
4282                 0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
4283                 }
4284         }
4285 };
4286
4287 static struct XGI301C_Tap4TimingStruct YPbPr525iTap4Timing[] = {
4288         {480,   {
4289                 0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
4290                 0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
4291                 0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
4292                 0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
4293                 0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
4294                 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
4295                 0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
4296                 0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
4297                 }
4298         },
4299         {600,   {
4300                 0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
4301                 0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
4302                 0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
4303                 0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
4304                 0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
4305                 0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
4306                 0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
4307                 0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
4308                 }
4309         },
4310         {0xFFFF, {
4311                 0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
4312                 0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
4313                 0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
4314                 0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
4315                 0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
4316                 0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
4317                 0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
4318                 0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
4319                 }
4320         }
4321 };
4322
4323 static struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] = {
4324         {0xFFFF, {
4325                  0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
4326                  0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
4327                  0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
4328                  0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
4329                  0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
4330                  0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
4331                  0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
4332                  0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* F8-FF */
4333                  }
4334         }
4335 };