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