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