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