]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/staging/xgifb/vb_table.h
Merge tag 'armsoc-dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[karo-tx-linux.git] / 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 static const struct SiS_LVDSData XGI_LVDS1024x768Data_2[] = {
1144         {1344, 806, 1344, 806},
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         {800,  449, 1280, 801},
1152         {800,  525, 1280, 813}
1153 };
1154
1155 static const struct SiS_LVDSData XGI_LVDS1280x1024Data_1[] = {
1156         {1048, 442,  1688, 1066},
1157         {1048, 392,  1688, 1066},
1158         {1048, 442,  1688, 1066},
1159         {1048, 392,  1688, 1066},
1160         {1048, 522,  1688, 1066},
1161         {1208, 642,  1688, 1066},
1162         {1432, 810,  1688, 1066},
1163         {1688, 1066, 1688, 1066}
1164 };
1165
1166 #define XGI_LVDS1280x1024Data_2 XGI_LVDS1024x768Data_2
1167
1168 static const struct SiS_LVDSData XGI_LVDS1400x1050Data_1[] = {
1169         {928,   416, 1688, 1066},
1170         {928,   366, 1688, 1066},
1171         {928,   416, 1688, 1066},
1172         {928,   366, 1688, 1066},
1173         {928,   496, 1688, 1066},
1174         {1088,  616, 1688, 1066},
1175         {1312,  784, 1688, 1066},
1176         {1568, 1040, 1688, 1066},
1177         {1688, 1066, 1688, 1066}
1178 };
1179
1180 static const struct SiS_LVDSData XGI_LVDS1400x1050Data_2[] = {
1181         {1688, 1066, 1688, 1066},
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 };
1191
1192 /* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */
1193 static const struct SiS_LVDSData XGI_LVDS1600x1200Data_1[] = {
1194         {1088, 520,  2048, 1320}, /* 00 (320x200,320x400,640x200,640x400) */
1195         {1088, 470,  2048, 1320}, /* 01 (320x350,640x350) */
1196         {1088, 520,  2048, 1320}, /* 02 (360x400,720x400) */
1197         {1088, 470,  2048, 1320}, /* 03 (720x350) */
1198         {1088, 600,  2048, 1320}, /* 04 (320x240,640x480) */
1199         {1248, 720,  2048, 1320}, /* 05 (400x300,800x600) */
1200         {1472, 888,  2048, 1320}, /* 06 (512x384,1024x768) */
1201         {1728, 1144, 2048, 1320}, /* 07 (640x512,1280x1024) */
1202         {1848, 1170, 2048, 1320}, /* 08 (1400x1050) */
1203         {2048, 1320, 2048, 1320}  /* 09 (1600x1200) */
1204 };
1205
1206 static const struct SiS_LVDSData XGI_LVDSNoScalingData[] = {
1207         { 800,  449,  800,  449}, /* 00 (320x200,320x400,640x200,640x400) */
1208         { 800,  449,  800,  449}, /* 01 (320x350,640x350) */
1209         { 800,  449,  800,  449}, /* 02 (360x400,720x400) */
1210         { 800,  449,  800,  449}, /* 03 (720x350) */
1211         { 800,  525,  800,  525}, /* 04 (640x480x60Hz) */
1212         {1056,  628, 1056,  628}, /* 05 (800x600x60Hz) */
1213         {1344,  806, 1344,  806}, /* 06 (1024x768x60Hz) */
1214         {1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1215         {1688, 1066, 1688, 1066}, /* 08 (1400x1050x60Hz) */
1216         {2160, 1250, 2160, 1250}, /* 09 (1600x1200x60Hz) */
1217         {1688,  806, 1688,  806}  /* 0A (1280x768x60Hz) */
1218 };
1219
1220 static const struct SiS_LVDSData XGI_LVDS1024x768Data_1x75[] = {
1221         { 960, 438, 1312, 800}, /* 00 (320x200,320x400,640x200,640x400) */
1222         { 960, 388, 1312, 800}, /* 01 (320x350,640x350) */
1223         {1040, 438, 1312, 800}, /* 02 (360x400,720x400) */
1224         {1040, 388, 1312, 800}, /* 03 (720x350) */
1225         { 928, 512, 1312, 800}, /* 04 (320x240,640x480) */
1226         {1088, 632, 1312, 800}, /* 05 (400x300,800x600) */
1227         {1312, 800, 1312, 800}, /* 06 (512x384,1024x768) */
1228 };
1229
1230 static const struct SiS_LVDSData XGI_LVDS1024x768Data_2x75[] = {
1231         {1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,640x200,640x400) */
1232         {1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
1233         {1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
1234         {1312, 800, 1312, 800}, /* ; 03 (720x350) */
1235         {1312, 800, 1312, 800}, /* ; 04 (320x240,640x480) */
1236         {1312, 800, 1312, 800}, /* ; 05 (400x300,800x600) */
1237         {1312, 800, 1312, 800}, /* ; 06 (512x384,1024x768) */
1238 };
1239
1240 static const struct SiS_LVDSData XGI_LVDS1280x1024Data_1x75[] = {
1241         {1048,  442, 1688, 1066  }, /* ; 00 (320x200,320x400,640x200,640x400) */
1242         {1048,  392, 1688, 1066  }, /* ; 01 (320x350,640x350) */
1243         {1128,  442, 1688, 1066  }, /* ; 02 (360x400,720x400) */
1244         {1128,  392, 1688, 1066  }, /* ; 03 (720x350) */
1245         {1048,  522, 1688, 1066  }, /* ; 04 (320x240,640x480) */
1246         {1208,  642, 1688, 1066  }, /* ; 05 (400x300,800x600) */
1247         {1432,  810, 1688, 1066  }, /* ; 06 (512x384,1024x768) */
1248         {1688, 1066, 1688, 1066 },  /* ; 06; 07 (640x512,1280x1024) */
1249 };
1250
1251 static const struct SiS_LVDSData XGI_LVDS1280x1024Data_2x75[] = {
1252         {1688, 1066, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1253         {1688, 1066, 1688, 1066 }, /* ; 01 (320x350,640x350) */
1254         {1688, 1066, 1688, 1066 }, /* ; 02 (360x400,720x400) */
1255         {1688, 1066, 1688, 1066 }, /* ; 03 (720x350) */
1256         {1688, 1066, 1688, 1066 }, /* ; 04 (320x240,640x480) */
1257         {1688, 1066, 1688, 1066 }, /* ; 05 (400x300,800x600) */
1258         {1688, 1066, 1688, 1066 }, /* ; 06 (512x384,1024x768) */
1259         {1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */
1260 };
1261
1262 static const struct SiS_LVDSData XGI_LVDSNoScalingDatax75[] = {
1263         { 800,  449,  800, 449},  /* ; 00 (320x200,320x400,640x200,640x400) */
1264         { 800,  449,  800, 449},  /* ; 01 (320x350,640x350) */
1265         { 900,  449,  900, 449},  /* ; 02 (360x400,720x400) */
1266         { 900,  449,  900, 449},  /* ; 03 (720x350) */
1267         { 800,  500,  800, 500},  /* ; 04 (640x480x75Hz) */
1268         {1056,  625, 1056, 625},  /* ; 05 (800x600x75Hz) */
1269         {1312,  800, 1312, 800},  /* ; 06 (1024x768x75Hz) */
1270         {1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
1271         {1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
1272                                      ;;[ycchen] 12/19/02 */
1273         {2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
1274         {1688,  806, 1688, 806},  /* ; 0A (1280x768x75Hz) */
1275 };
1276
1277 static const struct SiS_LVDSData XGI_LVDS1024x768Des_1[] = {
1278         {0, 1048,   0, 771}, /* 00 (320x200,320x400,640x200,640x400) */
1279         {0, 1048,   0, 771}, /* 01 (320x350,640x350) */
1280         {0, 1048,   0, 771}, /* 02 (360x400,720x400) */
1281         {0, 1048,   0, 771}, /* 03 (720x350) */
1282         {0, 1048,   0, 771}, /* 04 (640x480x60Hz) */
1283         {0, 1048,   0, 771}, /* 05 (800x600x60Hz) */
1284         {0, 1048, 805, 770}  /* 06 (1024x768x60Hz) */
1285 };
1286
1287 static const struct SiS_LVDSData XGI_LVDS1024x768Des_2[] = {
1288         {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1289         {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1290         {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1291         {1142,  856, 597, 562}, /* 03 (720x350) */
1292         {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1293         {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1294         {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1295 };
1296
1297 static const struct SiS_LVDSData XGI_LVDS1024x768Des_3[] = {
1298         {320, 24, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1299         {320, 24, 597, 562}, /* 01 (320x350,640x350) */
1300         {320, 24, 622, 587}, /* 02 (360x400,720x400) */
1301         {320, 24, 597, 562}, /* 03 (720x350) */
1302         {320, 24, 722, 687}  /* 04 (640x480x60Hz) */
1303 };
1304
1305 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_1[] = {
1306         {0, 1328,    0, 1025}, /* 00 (320x200,320x400,640x200,640x400) */
1307         {0, 1328,    0, 1025}, /* 01 (320x350,640x350) */
1308         {0, 1328,    0, 1025}, /* 02 (360x400,720x400) */
1309         {0, 1328,    0, 1025}, /* 03 (720x350) */
1310         {0, 1328,    0, 1025}, /* 04 (640x480x60Hz) */
1311         {0, 1328,    0, 1025}, /* 05 (800x600x60Hz) */
1312         {0, 1328,    0, 1025}, /* 06 (1024x768x60Hz) */
1313         {0, 1328, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1314 };
1315
1316  /* The Display setting for DE Mode Panel */
1317 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_2[] = {
1318         {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */
1319         {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */
1320         {1408, 1048, 752, 711}, /* 02 (360x400,720x400) */
1321         {1408, 1048, 729, 688}, /* 03 (720x350) */
1322         {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */
1323         {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */
1324         {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */
1325         {0000, 1328,   0, 1025} /* 07 (1280x1024x60Hz) */
1326 };
1327
1328 static const struct SiS_LVDSData XGI_LVDS1400x1050Des_1[] = {
1329         {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
1330         {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
1331         {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
1332         {0, 1448, 0, 1051}, /* 03 (720x350) */
1333         {0, 1448, 0, 1051}, /* 04 (640x480x60Hz) */
1334         {0, 1448, 0, 1051}, /* 05 (800x600x60Hz) */
1335         {0, 1448, 0, 1051}, /* 06 (1024x768x60Hz) */
1336         {0, 1448, 0, 1051}, /* 07 (1280x1024x60Hz) */
1337         {0, 1448, 0, 1051}  /* 08 (1400x1050x60Hz) */
1338 };
1339
1340 static const struct SiS_LVDSData XGI_LVDS1400x1050Des_2[] = {
1341         {1308, 1068,  781,  766}, /* 00 (320x200,320x400,640x200,640x400) */
1342         {1308, 1068,  781,  766}, /* 01 (320x350,640x350) */
1343         {1308, 1068,  781,  766}, /* 02 (360x400,720x400) */
1344         {1308, 1068,  781,  766}, /* 03 (720x350) */
1345         {1308, 1068,  781,  766}, /* 04 (640x480x60Hz) */
1346         {1388, 1148,  841,  826}, /* 05 (800x600x60Hz) */
1347         {1490, 1250,  925,  910}, /* 06 (1024x768x60Hz) */
1348         {1608, 1368, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1349         {   0, 1448,    0, 1051}  /* 08 (1400x1050x60Hz) */
1350 };
1351
1352 static const struct SiS_LVDSData XGI_LVDS1600x1200Des_1[] = {
1353         {0, 1664, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1354         {0, 1664, 0, 1201}, /* 01 (320x350,640x350) */
1355         {0, 1664, 0, 1201}, /* 02 (360x400,720x400) */
1356         {0, 1664, 0, 1201}, /* 03 (720x350) */
1357         {0, 1664, 0, 1201}, /* 04 (640x480x60Hz) */
1358         {0, 1664, 0, 1201}, /* 05 (800x600x60Hz) */
1359         {0, 1664, 0, 1201}, /* 06 (1024x768x60Hz) */
1360         {0, 1664, 0, 1201}, /* 07 (1280x1024x60Hz) */
1361         {0, 1664, 0, 1201}, /* 08 (1400x1050x60Hz) */
1362         {0, 1664, 0, 1201}  /* 09 (1600x1200x60Hz) */
1363 };
1364
1365 static const struct XGI330_LCDDataDesStruct2  XGI_LVDSNoScalingDesData[] = {
1366         {0,  648,  448,  405,  96, 2}, /* 00 (320x200,320x400,
1367                                               640x200,640x400) */
1368         {0,  648,  448,  355,  96, 2}, /* 01 (320x350,640x350) */
1369         {0,  648,  448,  405,  96, 2}, /* 02 (360x400,720x400) */
1370         {0,  648,  448,  355,  96, 2}, /* 03 (720x350) */
1371         {0,  648,    1,  483,  96, 2}, /* 04 (640x480x60Hz) */
1372         {0,  840,  627,  600, 128, 4}, /* 05 (800x600x60Hz) */
1373         {0, 1048,  805,  770, 136, 6}, /* 06 (1024x768x60Hz) */
1374         {0, 1328,    0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */
1375         {0, 1438,    0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)*/
1376         {0, 1664,    0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */
1377         {0, 1328,    0, 0771, 112, 6}  /* 0A (1280x768x60Hz) */
1378 };
1379
1380 /* ; 1024x768 Full-screen */
1381 static const struct SiS_LVDSData XGI_LVDS1024x768Des_1x75[] = {
1382         {0, 1040, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1383         {0, 1040, 0, 769}, /* ; 01 (320x350,640x350) */
1384         {0, 1040, 0, 769}, /* ; 02 (360x400,720x400) */
1385         {0, 1040, 0, 769}, /* ; 03 (720x350) */
1386         {0, 1040, 0, 769}, /* ; 04 (640x480x75Hz) */
1387         {0, 1040, 0, 769}, /* ; 05 (800x600x75Hz) */
1388         {0, 1040, 0, 769}  /* ; 06 (1024x768x75Hz) */
1389 };
1390
1391 /* ; 1024x768 center-screen (Enh. Mode) */
1392 static const struct SiS_LVDSData XGI_LVDS1024x768Des_2x75[] = {
1393         {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1394         {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1395         {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1396         {1142,  856, 597, 562}, /* 03 (720x350) */
1397         {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1398         {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1399         {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1400 };
1401
1402 /* ; 1024x768 center-screen (St.Mode) */
1403 static const struct SiS_LVDSData XGI_LVDS1024x768Des_3x75[] =  {
1404         {320, 24, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1405         {320, 24, 597, 562}, /* ; 01 (320x350,640x350) */
1406         {320, 24, 622, 587}, /* ; 02 (360x400,720x400) */
1407         {320, 24, 597, 562}, /* ; 03 (720x350) */
1408         {320, 24, 722, 687}  /* ; 04 (640x480x60Hz) */
1409 };
1410
1411 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_1x75[] = {
1412         {0, 1296, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1413         {0, 1296, 0, 1025}, /* ; 01 (320x350,640x350) */
1414         {0, 1296, 0, 1025}, /* ; 02 (360x400,720x400) */
1415         {0, 1296, 0, 1025}, /* ; 03 (720x350) */
1416         {0, 1296, 0, 1025}, /* ; 04 (640x480x75Hz) */
1417         {0, 1296, 0, 1025}, /* ; 05 (800x600x75Hz) */
1418         {0, 1296, 0, 1025}, /* ; 06 (1024x768x75Hz) */
1419         {0, 1296, 0, 1025}  /* ; 07 (1280x1024x75Hz) */
1420 };
1421
1422 /* The Display setting for DE Mode Panel */
1423 /* Set DE as default */
1424 static const struct SiS_LVDSData XGI_LVDS1280x1024Des_2x75[] = {
1425         {1368,  976, 752,  711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1426         {1368,  976, 729,  688}, /* ; 01 (320x350,640x350) */
1427         {1408,  976, 752,  711}, /* ; 02 (360x400,720x400) */
1428         {1408,  976, 729,  688}, /* ; 03 (720x350) */
1429         {1368,  976, 794,  753}, /* ; 04 (640x480x75Hz) */
1430         {1448, 1036, 854,  813}, /* ; 05 (800x600x75Hz) */
1431         {1560, 1168, 938,  897}, /* ; 06 (1024x768x75Hz) */
1432         {   0, 1296,   0, 1025}  /* ; 07 (1280x1024x75Hz) */
1433 };
1434
1435 /* Scaling LCD 75Hz */
1436 static const struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] = {
1437         {0,  648, 448,  405,  96, 2}, /* ; 00 (320x200,320x400,
1438                                                640x200,640x400) */
1439         {0,  648, 448,  355,  96, 2}, /* ; 01 (320x350,640x350) */
1440         {0,  729, 448,  405, 108, 2}, /* ; 02 (360x400,720x400) */
1441         {0,  729, 448,  355, 108, 2}, /* ; 03 (720x350) */
1442         {0,  656,   0,  481,  64, 3}, /* ; 04 (640x480x75Hz) */
1443         {0,  816,   0,  601,  80, 3}, /* ; 05 (800x600x75Hz) */
1444         {0, 1040,   0,  769,  96, 3}, /* ; 06 (1024x768x75Hz) */
1445         {0, 1296,   0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
1446         {0, 1448,   0, 1051, 112, 3}, /* ; 08 (1400x1050x75Hz) */
1447         {0, 1664,   0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
1448         {0, 1328,   0,  771, 112, 6}  /* ; 0A (1280x768x75Hz) */
1449 };
1450
1451 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1452 static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_1_H[] = {
1453         { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} }, /* 00 (320x) */
1454         { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} }, /* 01 (360x) */
1455         { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} }, /* 02 (400x) */
1456         { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1457         { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 04 (640x) */
1458         { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 05 (720x) */
1459         { {0x87, 0x63, 0x8B, 0x69, 0x1A, 0x00, 0x26, 0x00} }, /* 06 (800x) */
1460         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
1461 };
1462
1463 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1464 static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_1_H[] = {
1465         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 00 (320x) */
1466         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 01 (360x) */
1467         { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00 } }, /* 02 (400x) */
1468         { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00 } }, /* 03 (512x) */
1469         { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 04 (640x) */
1470         { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 05 (720x) */
1471         { {0x92, 0x63, 0x96, 0x6C, 0x1A, 0x00, 0x06, 0x00 } }, /* 06 (800x) */
1472         { {0xAE, 0x7F, 0x92, 0x88, 0x96, 0x00, 0x02, 0x00 } }, /* 07 (1024x) */
1473         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00 } }  /* 08 (1280x) */
1474 };
1475
1476 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1477 static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_2_H[] = {
1478         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1479         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1480         { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1481         { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1482         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 04 (640x) */
1483         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 05 (720x) */
1484         { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} }, /* 06 (800x) */
1485         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
1486 };
1487
1488 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1489 static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_2_H[] = {
1490         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1491         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1492         { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1493         { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1494         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
1495         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
1496         { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} }, /* 06 (800x) */
1497         { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
1498         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} }  /* 08 (1280x) */
1499 };
1500
1501 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1502 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] = {
1503         { {0x47, 0x27, 0x8B, 0x2C, 0x1A, 0x00, 0x05, 0x00} }, /* 00 (320x) */
1504         { {0x47, 0x27, 0x8B, 0x30, 0x1E, 0x00, 0x05, 0x00} }, /* 01 (360x) */
1505         { {0x51, 0x31, 0x95, 0x36, 0x04, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1506         { {0x5F, 0x3F, 0x83, 0x44, 0x92, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1507         { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 04 (640x) */
1508         { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 05 (720x) */
1509         { {0x83, 0x63, 0x87, 0x68, 0x16, 0x00, 0x06, 0x00} }, /* 06 (800x) */
1510         { {0x9F, 0x7F, 0x83, 0x84, 0x92, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
1511         { {0xBF, 0x9F, 0x83, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
1512         { {0xCE, 0xAE, 0x92, 0xB3, 0x01, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
1513 };
1514
1515 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1516 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] = {
1517         { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 00 (320x) */
1518         { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 01 (360x) */
1519         { {0x76, 0x31, 0x9A, 0x48, 0x9F, 0x00, 0x41, 0x00} }, /* 02 (400x) */
1520         { {0x76, 0x3F, 0x9A, 0x4F, 0x96, 0x00, 0x41, 0x00} }, /* 03 (512x) */
1521         { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
1522         { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
1523         { {0xCE, 0x63, 0x92, 0x96, 0x04, 0x00, 0x07, 0x00} }, /* 06 (800x) */
1524         { {0xCE, 0x7F, 0x92, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
1525         { {0xCE, 0x9F, 0x92, 0xB4, 0x02, 0x00, 0x03, 0x00} }, /* 08 (1280x) */
1526         { {0xCE, 0xAE, 0x92, 0xBC, 0x0A, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
1527 };
1528
1529 /* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */
1530 /* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1531 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] = {
1532         { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1533         { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1534         { {0x65, 0x31, 0x89, 0x3C, 0x94, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1535         { {0x73, 0x3F, 0x97, 0x4A, 0x82, 0x00, 0x05, 0x00} }, /* 03 (512x) */
1536         { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 04 (640x) */
1537         { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 05 (720x) */
1538         { {0x97, 0x63, 0x9B, 0x65, 0x1D, 0x00, 0x06, 0xF0} }, /* 06 (800x) */
1539         { {0xB3, 0x7F, 0x97, 0x81, 0x99, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
1540         { {0xD3, 0x9F, 0x97, 0xA1, 0x19, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
1541         { {0xE2, 0xAE, 0x86, 0xB9, 0x91, 0x00, 0x03, 0x00} }, /* 09 (1400x) */
1542         { {0xFB, 0xC7, 0x9F, 0xC9, 0x81, 0x00, 0x07, 0x00} }  /* 0A (1600x) */
1543 };
1544
1545 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1546 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] = {
1547         { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} }, /* 00 (x350) */
1548         { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} }, /* 01 (x400) */
1549         { {0x04, 0x3E, 0xE2, 0x89, 0xDF, 0x05, 0x00} }, /* 02 (x480) */
1550         { {0x7C, 0xF0, 0x5A, 0x8F, 0x57, 0x7D, 0xA0} }, /* 03 (x600) */
1551         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
1552 };
1553
1554 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1555 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] = {
1556         { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} }, /* 00 (x350) */
1557         { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} }, /* 01 (x400) */
1558         { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} }, /* 02 (x480) */
1559         { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} }, /* 03 (x600) */
1560         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
1561 };
1562
1563 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1564 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] = {
1565         { {0x86, 0x1F, 0x5E, 0x82, 0x5D, 0x87, 0x00} }, /* 00 (x350) */
1566         { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} }, /* 01 (x400) */
1567         { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} }, /* 02 (x480) */
1568         { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} }, /* 03 (x600) */
1569         { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} }, /* 04 (x768) */
1570         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
1571 };
1572
1573 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1574 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] = {
1575         { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} }, /* 00 (x350) */
1576         { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} }, /* 01 (x400) */
1577         { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} }, /* 02 (x480) */
1578         { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} }, /* 03 (x600) */
1579         { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} }, /* 04 (x768) */
1580         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
1581 };
1582
1583 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1584 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] = {
1585         { {0x6C, 0x1F, 0x60, 0x84, 0x5D, 0x6D, 0x10} }, /* 00 (x350) */
1586         { {0x9E, 0x1F, 0x93, 0x86, 0x8F, 0x9F, 0x30} }, /* 01 (x400) */
1587         { {0xEE, 0x1F, 0xE2, 0x86, 0xDF, 0xEF, 0x10} }, /* 02 (x480) */
1588         { {0x66, 0xF0, 0x5A, 0x8e, 0x57, 0x67, 0xA0} }, /* 03 (x600) */
1589         { {0x0E, 0xF5, 0x02, 0x86, 0xFF, 0x0F, 0x90} }, /* 04 (x768) */
1590         { {0x0E, 0x5A, 0x02, 0x86, 0xFF, 0x0F, 0x89} }, /* 05 (x1024) */
1591         { {0x28, 0x10, 0x1A, 0x80, 0x19, 0x29, 0x0F} }  /* 06 (x1050) */
1592 };
1593
1594 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1595 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] = {
1596         { {0x28, 0x92, 0xB6, 0x83, 0xB5, 0xCF, 0x81} }, /* 00 (x350) */
1597         { {0x28, 0x92, 0xD5, 0x82, 0xD4, 0xEE, 0x81} }, /* 01 (x400) */
1598         { {0x28, 0x92, 0xFD, 0x8A, 0xFC, 0x16, 0xB1} }, /* 02 (x480) */
1599         { {0x28, 0xD4, 0x39, 0x86, 0x57, 0x29, 0x81} }, /* 03 (x600) */
1600         { {0x28, 0xD4, 0x8D, 0x9A, 0xFF, 0x29, 0xA1} }, /* 04 (x768) */
1601         { {0x28, 0x5A, 0x0D, 0x9A, 0xFF, 0x29, 0xA9} }, /* 05 (x1024) */
1602         { {0x28, 0x10, 0x1A, 0x87, 0x19, 0x29, 0x8F} }  /* 06 (x1050) */
1603 };
1604
1605 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1606 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] = {
1607         { {0xd4, 0x1F, 0x81, 0x84, 0x5D, 0xd5, 0x10} }, /* 00 (x350) */
1608         { {0x06, 0x3e, 0xb3, 0x86, 0x8F, 0x07, 0x20} }, /* 01 (x400) */
1609         { {0x56, 0xba, 0x03, 0x86, 0xDF, 0x57, 0x00} }, /* 02 (x480) */
1610         { {0xce, 0xF0, 0x7b, 0x8e, 0x57, 0xcf, 0xa0} }, /* 03 (x600) */
1611         { {0x76, 0xF5, 0x23, 0x86, 0xFF, 0x77, 0x90} }, /* 04 (x768) */
1612         { {0x76, 0x5A, 0x23, 0x86, 0xFF, 0x77, 0x89} }, /* 05 (x1024) */
1613         { {0x90, 0x10, 0x1A, 0x8E, 0x19, 0x91, 0x2F} }, /* 06 (x1050) */
1614         { {0x26, 0x11, 0xd3, 0x86, 0xaF, 0x27, 0x3f} }  /* 07 (x1200) */
1615 };
1616
1617 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1618 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] = {
1619         { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} },/* ; 00 (320x) */
1620         { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} },/* ; 01 (360x) */
1621         { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} },/* ; 02 (400x) */
1622         { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1623         { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 04 (640x) */
1624         { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 05 (720x) */
1625         { {0x83, 0x63, 0x87, 0x68, 0x14, 0x00, 0x26, 0x00} },/* ; 06 (800x) */
1626         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
1627 };
1628
1629 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1630 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] = {
1631         { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} },/* ; 00 (x350) */
1632         { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} },/* ; 01 (x400) */
1633         { {0xFE, 0x1F, 0xE0, 0x84, 0xDF, 0xFF, 0x10} },/* ; 02 (x480) */
1634         { {0x76, 0xF0, 0x58, 0x8C, 0x57, 0x77, 0xA0} },/* ; 03 (x600) */
1635         { {0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} } /* ; 04 (x768) */
1636 };
1637
1638 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1639 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] = {
1640         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
1641         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
1642         { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1643         { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1644         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
1645         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
1646         { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
1647         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
1648 };
1649
1650 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1651 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] = {
1652         { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} },/* ; 00 (x350) */
1653         { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} },/* ; 01 (x400) */
1654         { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} },/* ; 02 (x480) */
1655         { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} },/* ; 03 (x600) */
1656         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* ; 04 (x768) */
1657 };
1658
1659 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1660 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] = {
1661         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 00 (320x) */
1662         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 01 (360x) */
1663         { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1664         { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1665         { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
1666         { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
1667         { {0x92, 0x63, 0x96, 0x68, 0x1A, 0x00, 0x06, 0x00} },/* ; 06 (800x) */
1668         { {0xAE, 0x7F, 0x92, 0x84, 0x96, 0x00, 0x02, 0x00} },/* ; 07 (1024x) */
1669         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
1670 };
1671
1672 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1673 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] = {
1674         { {0x86, 0xD1, 0xBC, 0x80, 0xBB, 0xE5, 0x00} },/* ; 00 (x350) */
1675         { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} },/* ; 01 (x400) */
1676         { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} },/* ; 02 (x480) */
1677         { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} },/* ; 03 (x600) */
1678         { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} },/* ; 04 (x768) */
1679         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
1680 };
1681 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1682 static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] = {
1683         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
1684         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
1685         { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1686         { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1687         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 04 (640x) */
1688         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 05 (720x) */
1689         { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
1690         { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} },/* ; 07 (1024x) */
1691         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
1692 };
1693
1694 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1695 static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = {
1696         { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} },/* ; 00 (x350) */
1697         { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} },/* ; 01 (x400) */
1698         { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} },/* ; 02 (x480) */
1699         { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} },/* ; 03 (x600) */
1700         { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} },/* ; 04 (x768) */
1701         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
1702 };
1703
1704 /*add for new UNIVGABIOS*/
1705 static const struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = {
1706         {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCD1024x768Data },
1707         {Panel_1024x768, 0x0019, 0x0000, XGI_StLCD1024x768Data },
1708         {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCD1024x768Data },
1709         {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCD1280x1024Data },
1710         {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCD1280x1024Data },
1711         {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCD1280x1024Data },
1712         {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcd_1400x1050 },
1713         {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcd_1400x1050 },
1714         {Panel_1400x1050, 0x0018, 0x0010, XGI_CetLCD1400x1050Data },
1715         {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCD1600x1200Data },
1716         {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCD1600x1200Data },
1717         {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingData },
1718         {Panel_1024x768x75, 0x0019, 0x0001, XGI_ExtLCD1024x768x75Data },
1719         {Panel_1024x768x75, 0x0019, 0x0000, XGI_ExtLCD1024x768x75Data },
1720         {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCD1024x768x75Data },
1721         {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcd_1280x1024x75 },
1722         {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcd_1280x1024x75 },
1723         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCD1280x1024x75Data },
1724         {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDatax75 },
1725         {0xFF, 0x0000, 0x0000, NULL } /* End of table */
1726 };
1727
1728 static const struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = {
1729         {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
1730         {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
1731         {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
1732         {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDes1280x1024Data },
1733         {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDes1280x1024Data },
1734         {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDes1280x1024Data },
1735         {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddes_1400x1050 },
1736         {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddes_1400x1050 },
1737         {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
1738         {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
1739         {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDes1600x1200Data },
1740         {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDes1600x1200Data },
1741         {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
1742         {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
1743         {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
1744         {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
1745         {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddes_1280x1024x75 },
1746         {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddes_1280x1024x75 },
1747         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDes1280x1024x75Data },
1748         {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
1749         {0xFF, 0x0000, 0x0000, NULL }
1750 };
1751
1752 static const struct XGI330_LCDDataTablStruct xgifb_lcddldes[] = {
1753         {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
1754         {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
1755         {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
1756         {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDLDes1280x1024Data },
1757         {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDLDes1280x1024Data },
1758         {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024Data },
1759         {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddldes_1400x1050 },
1760         {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddldes_1400x1050 },
1761         {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
1762         {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
1763         {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDLDes1600x1200Data },
1764         {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDLDes1600x1200Data },
1765         {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
1766         {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
1767         {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
1768         {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
1769         {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddldes_1280x1024x75 },
1770         {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddldes_1280x1024x75 },
1771         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024x75Data },
1772         {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
1773         {0xFF, 0x0000, 0x0000, NULL }
1774 };
1775
1776 static const struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_h[] = {
1777         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_H },
1778         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_H },
1779         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_H },
1780         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_H },
1781         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_H },
1782         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_H },
1783         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_H },
1784         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Hx75 },
1785         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Hx75 },
1786         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Hx75 },
1787         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Hx75 },
1788         {0xFF, 0x0000, 0x0000, NULL }
1789 };
1790
1791 static const struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_v[] = {
1792         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_V },
1793         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_V },
1794         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_V },
1795         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_V },
1796         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_V },
1797         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_V },
1798         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_V },
1799         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Vx75 },
1800         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Vx75 },
1801         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Vx75 },
1802         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Vx75 },
1803         {0xFF, 0x0000, 0x0000, NULL }
1804 };
1805
1806 static const struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = {
1807         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Data_1 },
1808         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Data_2 },
1809         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1 },
1810         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2 },
1811         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Data_1 },
1812         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Data_2 },
1813         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Data_1 },
1814         {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingData },
1815         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Data_1x75 },
1816         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Data_2x75 },
1817         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1x75 },
1818         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2x75 },
1819         {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDatax75 },
1820         {0xFF, 0x0000, 0x0000, NULL }
1821 };
1822
1823 static const struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = {
1824         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Des_1 },
1825         {Panel_1024x768, 0x0618, 0x0410, XGI_LVDS1024x768Des_3 },
1826         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Des_2 },
1827         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1 },
1828         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2 },
1829         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Des_1 },
1830         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Des_2 },
1831         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Des_1 },
1832         {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesData },
1833         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Des_1x75 },
1834         {Panel_1024x768x75, 0x0618, 0x0410, XGI_LVDS1024x768Des_3x75 },
1835         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Des_2x75 },
1836         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1x75 },
1837         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2x75 },
1838         {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesDatax75 },
1839         {0xFF, 0x0000, 0x0000, NULL }
1840 };
1841
1842 static const struct XGI330_TVDataTablStruct XGI_TVDataTable[] = {
1843         {0x09E1, 0x0001, XGI_ExtPALData},
1844         {0x09E1, 0x0000, XGI_ExtNTSCData},
1845         {0x09E1, 0x0801, XGI_StPALData},
1846         {0x09E1, 0x0800, XGI_StNTSCData},
1847         {0x49E0, 0x0100, XGI_ExtHiTVData},
1848         {0x49E0, 0x4100, XGI_St2HiTVData},
1849         {0x49E0, 0x4900, XGI_St1HiTVData},
1850         {0x09E0, 0x0020, XGI_ExtYPbPr525iData},
1851         {0x09E0, 0x0040, XGI_ExtYPbPr525pData},
1852         {0x09E0, 0x0080, XGI_ExtYPbPr750pData},
1853         {0x09E0, 0x0820, XGI_StYPbPr525iData},
1854         {0x09E0, 0x0840, XGI_StYPbPr525pData},
1855         {0x09E0, 0x0880, XGI_StYPbPr750pData},
1856         {0xffff, 0x0000, XGI_ExtNTSCData},
1857 };
1858
1859 /* Dual link only */
1860 static const struct XGI330_LCDCapStruct XGI_LCDDLCapList[] = {
1861 /* LCDCap1024x768 */
1862         {Panel_1024x768, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1863         0x6C, 0xC3, 0x35, 0x62,
1864         0x0A, 0xC0, 0x28, 0x10},
1865 /* LCDCap1280x1024 */
1866         {Panel_1280x1024, XGI_LCDDualLink+DefaultLCDCap,
1867         0x70, 0x03, VCLK108_2_315,
1868         0x70, 0x44, 0xF8, 0x2F,
1869         0x0A, 0xC0, 0x30, 0x10},
1870 /* LCDCap1400x1050 */
1871         {Panel_1400x1050, XGI_LCDDualLink+DefaultLCDCap,
1872         0x70, 0x03, VCLK108_2_315,
1873          0x70, 0x44, 0xF8, 0x2F,
1874          0x0A, 0xC0, 0x30, 0x10},
1875 /* LCDCap1600x1200 */
1876         {Panel_1600x1200, XGI_LCDDualLink+DefaultLCDCap,
1877         0xC0, 0x03, VCLK162,
1878          0x43, 0x22, 0x70, 0x24,
1879          0x0A, 0xC0, 0x30, 0x10},
1880 /* LCDCap1024x768x75 */
1881         {Panel_1024x768x75, DefaultLCDCap, 0x60, 0, VCLK78_75,
1882          0x2B, 0x61, 0x2B, 0x61,
1883          0x0A, 0xC0, 0x28, 0x10},
1884 /* LCDCap1280x1024x75 */
1885         {Panel_1280x1024x75, XGI_LCDDualLink+DefaultLCDCap,
1886          0x90, 0x03, VCLK135_5,
1887          0x54, 0x42, 0x4A, 0x61,
1888          0x0A, 0xC0, 0x30, 0x10},
1889 /* LCDCapDefault */
1890         {0xFF, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1891         0x6C, 0xC3, 0x35, 0x62,
1892         0x0A, 0xC0, 0x28, 0x10}
1893 };
1894
1895 static const struct XGI330_LCDCapStruct XGI_LCDCapList[] = {
1896 /* LCDCap1024x768 */
1897         {Panel_1024x768, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1898         0x6C, 0xC3, 0x35, 0x62,
1899         0x0A, 0xC0, 0x28, 0x10},
1900 /* LCDCap1280x1024 */
1901         {Panel_1280x1024, DefaultLCDCap,
1902         0x70, 0x03, VCLK108_2_315,
1903         0x70, 0x44, 0xF8, 0x2F,
1904         0x0A, 0xC0, 0x30, 0x10},
1905 /* LCDCap1400x1050 */
1906         {Panel_1400x1050, DefaultLCDCap,
1907          0x70, 0x03, VCLK108_2_315,
1908          0x70, 0x44, 0xF8, 0x2F,
1909          0x0A, 0xC0, 0x30, 0x10},
1910 /* LCDCap1600x1200 */
1911         {Panel_1600x1200, DefaultLCDCap,
1912          0xC0, 0x03, VCLK162,
1913          0x5A, 0x23, 0x5A, 0x23,
1914          0x0A, 0xC0, 0x30, 0x10},
1915 /* LCDCap1024x768x75 */
1916         {Panel_1024x768x75, DefaultLCDCap, 0x60, 0, VCLK78_75,
1917          0x2B, 0x61, 0x2B, 0x61,
1918          0x0A, 0xC0, 0x28, 0x10},
1919 /* LCDCap1280x1024x75 */
1920         {Panel_1280x1024x75, DefaultLCDCap,
1921          0x90, 0x03, VCLK135_5,
1922          0x54, 0x42, 0x4A, 0x61,
1923          0x0A, 0xC0, 0x30, 0x10},
1924 /* LCDCapDefault */
1925         {0xFF, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1926         0x6C, 0xC3, 0x35, 0x62,
1927         0x0A, 0xC0, 0x28, 0x10}
1928 };
1929
1930 const struct XGI_Ext2Struct XGI330_RefIndex[] = {
1931         {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
1932         0x00, 0x10, 0x59, 320, 200},/* 00 */
1933         {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
1934         0x00, 0x10, 0x00, 320, 400},/* 01 */
1935         {Mode32Bpp + SupportAllCRT2 + SyncNN, RES320x240, VCLK25_175,
1936         0x04, 0x20, 0x50, 320, 240},/* 02 */
1937         {Mode32Bpp + SupportAllCRT2 + SyncPP, RES400x300, VCLK40,
1938         0x05, 0x32, 0x51, 400, 300},/* 03 */
1939         {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES512x384,
1940         VCLK65_315, 0x06, 0x43, 0x52, 512, 384},/* 04 */
1941         {Mode32Bpp + SupportAllCRT2 + SyncPN, RES640x400, VCLK25_175,
1942         0x00, 0x14, 0x2f, 640, 400},/* 05 */
1943         {Mode32Bpp + SupportAllCRT2 + SyncNN, RES640x480x60, VCLK25_175,
1944         0x04, 0x24, 0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */
1945         {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x72, VCLK31_5,
1946         0x04, 0x24, 0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */
1947         {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x75, VCLK31_5,
1948         0x47, 0x24, 0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */
1949         {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x85, VCLK36,
1950         0x8A, 0x24, 0x2e, 640, 480},/* 09 640x480x85Hz */
1951         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x100, VCLK43_163,
1952         0x00, 0x24, 0x2e, 640, 480},/* 0a 640x480x100Hz */
1953         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x120, VCLK52_406,
1954         0x00, 0x24, 0x2e, 640, 480},/* 0b 640x480x120Hz */
1955         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x160, VCLK72_852,
1956         0x00, 0x24, 0x2e, 640, 480},/* 0c 640x480x160Hz */
1957         {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x200, VCLK86_6,
1958         0x00, 0x24, 0x2e, 640, 480},/* 0d 640x480x200Hz */
1959         {Mode32Bpp + NoSupportLCD + SyncPP, RES800x600x56, VCLK36,
1960         0x05, 0x36, 0x6a, 800, 600},/* 0e 800x600x56Hz */
1961         {Mode32Bpp + NoSupportTV + SyncPP, RES800x600x60, VCLK40,
1962         0x05, 0x36, 0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */
1963         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x72, VCLK50,
1964         0x48, 0x36, 0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */
1965         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x75, VCLK49_5,
1966         0x8B, 0x36, 0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */
1967         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x600x85, VCLK56_25,
1968         0x00, 0x36, 0x6a, 800, 600},/* 12 800x600x85Hz */
1969         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x100, VCLK68_179,
1970         0x00, 0x36, 0x6a, 800, 600},/* 13 800x600x100Hz */
1971         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x120, VCLK83_95,
1972         0x00, 0x36, 0x6a, 800, 600},/* 14 800x600x120Hz */
1973         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x160, VCLK116_406,
1974         0x00, 0x36, 0x6a, 800, 600},/* 15 800x600x160Hz */
1975         {Mode32Bpp + InterlaceMode + SyncPP, RES1024x768x43, VCLK44_9,
1976         0x00, 0x47, 0x37, 1024, 768},/* 16 1024x768x43Hz */
1977         /* 17 1024x768x60Hz (LCD 1024x768x60Hz) */
1978         {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES1024x768x60,
1979         VCLK65_315, 0x06, 0x47, 0x37, 1024, 768},
1980         {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES1024x768x70, VCLK75,
1981         0x49, 0x47, 0x37, 1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */
1982         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1024x768x75, VCLK78_75,
1983         0x00, 0x47, 0x37, 1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */
1984         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x768x85, VCLK94_5,
1985         0x8C, 0x47, 0x37, 1024, 768},/* 1a 1024x768x85Hz */
1986         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x100, VCLK113_309,
1987         0x00, 0x47, 0x37, 1024, 768},/* 1b 1024x768x100Hz */
1988         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x120, VCLK139_054,
1989         0x00, 0x47, 0x37, 1024, 768},/* 1c 1024x768x120Hz */
1990         {Mode32Bpp + SupportLCD + SyncPP, RES1280x960x60, VCLK108_2_315,
1991         0x08, 0x58, 0x7b, 1280, 960},/* 1d 1280x960x60Hz */
1992         {Mode32Bpp + InterlaceMode + SyncPP, RES1280x1024x43, VCLK78_75,
1993         0x00, 0x58, 0x3a, 1280, 1024},/* 1e 1280x1024x43Hz */
1994         {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x60, VCLK108_2_315,
1995         0x07, 0x58, 0x3a, 1280, 1024},/*1f 1280x1024x60Hz (LCD 1280x1024x60Hz)*/
1996         {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x75, VCLK135_5,
1997         0x00, 0x58, 0x3a, 1280, 1024},/*20 1280x1024x75Hz (LCD 1280x1024x75Hz)*/
1998         {Mode32Bpp + SyncPP, RES1280x1024x85, VCLK157_5,
1999         0x00, 0x58, 0x3a, 1280, 1024},/* 21 1280x1024x85Hz */
2000         /* 22 1600x1200x60Hz */
2001         {Mode32Bpp + SupportLCD + SyncPP + SupportCRT2in301C,
2002         RES1600x1200x60, VCLK162, 0x09, 0x7A, 0x3c, 1600, 1200},
2003         {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x65, VCLK175,
2004         0x00, 0x69, 0x3c, 1600, 1200},/* 23 1600x1200x65Hz */
2005         {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x70, VCLK189,
2006         0x00, 0x69, 0x3c, 1600, 1200},/* 24 1600x1200x70Hz */
2007         {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x75, VCLK202_5,
2008         0x00, 0x69, 0x3c, 1600, 1200},/* 25 1600x1200x75Hz */
2009         {Mode32Bpp + SyncPP, RES1600x1200x85, VCLK229_5,
2010         0x00, 0x69, 0x3c, 1600, 1200},/* 26 1600x1200x85Hz */
2011         {Mode32Bpp + SyncPP, RES1600x1200x100, VCLK269_655,
2012         0x00, 0x69, 0x3c, 1600, 1200},/* 27 1600x1200x100Hz */
2013         {Mode32Bpp + SyncPP, RES1600x1200x120, VCLK323_586,
2014         0x00, 0x69, 0x3c, 1600, 1200},/* 28 1600x1200x120Hz */
2015         {Mode32Bpp + SupportLCD + SyncNP, RES1920x1440x60, VCLK234,
2016         0x00, 0x00, 0x68, 1920, 1440},/* 29 1920x1440x60Hz */
2017         {Mode32Bpp + SyncPN, RES1920x1440x65, VCLK254_817,
2018         0x00, 0x00, 0x68, 1920, 1440},/* 2a 1920x1440x65Hz */
2019         {Mode32Bpp + SyncPN, RES1920x1440x70, VCLK277_015,
2020         0x00, 0x00, 0x68, 1920, 1440},/* 2b 1920x1440x70Hz */
2021         {Mode32Bpp + SyncPN, RES1920x1440x75, VCLK291_132,
2022         0x00, 0x00, 0x68, 1920, 1440},/* 2c 1920x1440x75Hz */
2023         {Mode32Bpp + SyncPN, RES1920x1440x85, VCLK330_615,
2024         0x00, 0x00, 0x68, 1920, 1440},/* 2d 1920x1440x85Hz */
2025         {Mode16Bpp + SyncPN, RES1920x1440x100, VCLK388_631,
2026         0x00, 0x00, 0x68, 1920, 1440},/* 2e 1920x1440x100Hz */
2027         {Mode32Bpp + SupportLCD + SyncPN, RES2048x1536x60, VCLK266_952,
2028         0x00, 0x00, 0x6c, 2048, 1536},/* 2f 2048x1536x60Hz */
2029         {Mode32Bpp + SyncPN, RES2048x1536x65, VCLK291_766,
2030         0x00, 0x00, 0x6c, 2048, 1536},/* 30 2048x1536x65Hz */
2031         {Mode32Bpp + SyncPN, RES2048x1536x70, VCLK315_195,
2032         0x00, 0x00, 0x6c, 2048, 1536},/* 31 2048x1536x70Hz */
2033         {Mode32Bpp + SyncPN, RES2048x1536x75, VCLK340_477,
2034         0x00, 0x00, 0x6c, 2048, 1536},/* 32 2048x1536x75Hz */
2035         {Mode16Bpp + SyncPN, RES2048x1536x85, VCLK375_847,
2036         0x00, 0x00, 0x6c, 2048, 1536},/* 33 2048x1536x85Hz */
2037         {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2038          SyncPP + SupportYPbPr750p, RES800x480x60, VCLK39_77,
2039          0x08, 0x00, 0x70, 800, 480},/* 34 800x480x60Hz */
2040         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x75, VCLK49_5,
2041         0x08, 0x00, 0x70, 800, 480},/* 35 800x480x75Hz */
2042         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x85, VCLK56_25,
2043         0x08, 0x00, 0x70, 800, 480},/* 36 800x480x85Hz */
2044         {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2045          SyncPP + SupportYPbPr750p, RES1024x576x60, VCLK65_315,
2046          0x09, 0x00, 0x71, 1024, 576},/* 37 1024x576x60Hz */
2047         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x75, VCLK78_75,
2048         0x09, 0x00, 0x71, 1024, 576},/* 38 1024x576x75Hz */
2049         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x85, VCLK94_5,
2050         0x09, 0x00, 0x71, 1024, 576},/* 39 1024x576x85Hz */
2051         {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2052         SyncPP + SupportYPbPr750p, RES1280x720x60, VCLK108_2_315,
2053         0x0A, 0x00, 0x75, 1280, 720},/* 3a 1280x720x60Hz*/
2054         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x75, VCLK135_5,
2055         0x0A, 0x00, 0x75, 1280, 720},/* 3b 1280x720x75Hz */
2056         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x85, VCLK157_5,
2057         0x0A, 0x00, 0x75, 1280, 720},/* 3c 1280x720x85Hz */
2058         {Mode32Bpp + SupportTV + SyncNN, RES720x480x60, VCLK28_322,
2059         0x06, 0x00, 0x31,  720, 480},/* 3d 720x480x60Hz */
2060         {Mode32Bpp + SupportTV + SyncPP, RES720x576x56, VCLK36,
2061         0x06, 0x00, 0x32, 720, 576},/* 3e 720x576x56Hz */
2062         {Mode32Bpp + InterlaceMode + NoSupportLCD + SyncPP, RES856x480x79I,
2063         VCLK35_2, 0x00, 0x00, 0x00,  856, 480},/* 3f 856x480x79I */
2064         {Mode32Bpp + NoSupportLCD + SyncNN, RES856x480x60, VCLK35_2,
2065         0x00, 0x00, 0x00,  856, 480},/* 40 856x480x60Hz */
2066         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1280x768x60,
2067         VCLK79_411, 0x08, 0x48, 0x23, 1280, 768},/* 41 1280x768x60Hz */
2068         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1400x1050x60,
2069         VCLK122_61, 0x08, 0x69, 0x26, 1400, 1050},/* 42 1400x1050x60Hz */
2070         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x60, VCLK80_350,
2071         0x37, 0x00, 0x20, 1152, 864},/* 43 1152x864x60Hz */
2072         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x75, VCLK107_385,
2073         0x37, 0x00, 0x20, 1152, 864},/* 44 1152x864x75Hz */
2074         {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x75,
2075         VCLK125_999, 0x3A, 0x88, 0x7b, 1280, 960},/* 45 1280x960x75Hz */
2076         {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x85,
2077         VCLK148_5, 0x0A, 0x88, 0x7b, 1280, 960},/* 46 1280x960x85Hz */
2078         {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x120,
2079         VCLK217_325, 0x3A, 0x88, 0x7b, 1280, 960},/* 47 1280x960x120Hz */
2080         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x160, VCLK139_054,
2081         0x30, 0x47, 0x37, 1024, 768},/* 48 1024x768x160Hz */
2082 };
2083
2084 static const unsigned char XGI330_ScreenOffset[] = {
2085         0x14, 0x19, 0x20, 0x28, 0x32, 0x40,
2086         0x50, 0x64, 0x78, 0x80, 0x2d, 0x35,
2087         0x57, 0x48
2088 };
2089
2090 static const struct SiS_ModeResInfo_S XGI330_ModeResInfo[] = {
2091         { 320,  200, 8,  8},
2092         { 320,  240, 8,  8},
2093         { 320,  400, 8,  8},
2094         { 400,  300, 8,  8},
2095         { 512,  384, 8,  8},
2096         { 640,  400, 8, 16},
2097         { 640,  480, 8, 16},
2098         { 800,  600, 8, 16},
2099         {1024,  768, 8, 16},
2100         {1280, 1024, 8, 16},
2101         {1600, 1200, 8, 16},
2102         {1920, 1440, 8, 16},
2103         {2048, 1536, 8, 16},
2104         { 720,  480, 8, 16},
2105         { 720,  576, 8, 16},
2106         {1280,  960, 8, 16},
2107         { 800,  480, 8, 16},
2108         {1024,  576, 8, 16},
2109         {1280,  720, 8, 16},
2110         { 856,  480, 8, 16},
2111         {1280,  768, 8, 16},
2112         {1400, 1050, 8, 16},
2113         {1152,  864, 8, 16}
2114 };
2115
2116 const struct SiS_VCLKData XGI_VCLKData[] = {
2117         /* SR2B,SR2C,SR2D */
2118         {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2119         {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2120         {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2121         {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2122         {0x42, 0xE2,  40}, /* 04 (40.000MHz) */
2123         {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2124         {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2125         {0x52, 0xE2,  49}, /* 07 (49.500MHz) */
2126         {0x53, 0xE2,  50}, /* 08 (50.000MHz) */
2127         {0x74, 0x67,  52}, /* 09 (52.406MHz) */
2128         {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2129         {0x6C, 0xC3,  65}, /* 0B (65.000MHz) */
2130         {0x46, 0x44,  67}, /* 0C (67.765MHz) */
2131         {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2132         {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2133         {0x29, 0x61,  75}, /* 0F (75.000MHz) */
2134         {0x6E, 0x46,  76}, /* 10 (75.800MHz) */
2135         {0x2B, 0x61,  78}, /* 11 (78.750MHz) */
2136         {0x31, 0x42,  79}, /* 12 (79.411MHz) */
2137         {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2138         {0x46, 0x25,  84}, /* 14 (84.800MHz) */
2139         {0x78, 0x29,  86}, /* 15 (86.600MHz) */
2140         {0x62, 0x44,  94}, /* 16 (94.500MHz) */
2141         {0x2B, 0x41, 104}, /* 17 (104.998MHz) */
2142         {0x3A, 0x23, 105}, /* 18 (105.882MHz) */
2143         {0x70, 0x44, 108}, /* 19 (107.862MHz) */
2144         {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2145         {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2146         {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2147         {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2148         {0x54, 0x42, 135}, /* 1E (135.500MHz) */
2149         {0x9C, 0x22, 139}, /* 1F (139.275MHz) */
2150         {0x41, 0x22, 157}, /* 20 (157.500MHz) */
2151         {0x70, 0x24, 162}, /* 21 (161.793MHz) */
2152         {0x30, 0x21, 175}, /* 22 (175.000MHz) */
2153         {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2154         {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2155         {0x62, 0x06, 202}, /* 25 (202.500MHz) */
2156         {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2157         {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2158         {0x34, 0x02, 253}, /* 28 (252.699MHz) */
2159         {0x58, 0x04, 255}, /* 29 (254.817MHz) */
2160         {0x24, 0x01, 265}, /* 2A (265.728MHz) */
2161         {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2162         {0x70, 0x05, 270}, /* 2C (269.65567MHz) */
2163         {0x25, 0x01, 272}, /* 2D (272.04199MHz) */
2164         {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2165         {0x27, 0x01, 286}, /* 2F (286.359985MHz) */
2166         {0xB3, 0x04, 291}, /* 30 (291.13266MHz) */
2167         {0xBC, 0x05, 292}, /* 31 (291.766MHz) */
2168         {0xF6, 0x0A, 310}, /* 32 (309.789459MHz) */
2169         {0x95, 0x01, 315}, /* 33 (315.195MHz) */
2170         {0xF0, 0x09, 324}, /* 34 (323.586792MHz) */
2171         {0xFE, 0x0A, 331}, /* 35 (330.615631MHz) */
2172         {0xF3, 0x09, 332}, /* 36 (332.177612MHz) */
2173         {0x5E, 0x03, 340}, /* 37 (340.477MHz) */
2174         {0xE8, 0x07, 376}, /* 38 (375.847504MHz) */
2175         {0xDE, 0x06, 389}, /* 39 (388.631439MHz) */
2176         {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2177         {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2178         {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2179         {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2180         {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2181         {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2182         {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2183         {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2184         {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2185         {0x24, 0x46,  25}, /* 43 (25.175MHz) */
2186         {0x26, 0x64,  28}, /* 44 (28.322MHz) */
2187         {0x37, 0x64,  40}, /* 45 (40.000MHz) */
2188         {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2189         {0x37, 0x61, 100}, /* 47 (100.00MHz) */
2190         {0x78, 0x27, 108}, /* 48 (108.200MHz) */
2191         {0xBF, 0xC8,  35}, /* 49 (35.2MHz) */
2192         {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2193         {0x2C, 0x61,  80}, /* 4B (80.350Mhz) */
2194         {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2195         {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2196         {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2197         {0x28, 0x26, 322}, /* 4F (322.273MHz) */
2198         {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2199         {0x57, 0x24, 126}, /* 51 (125.999MHz) */
2200         {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2201         {0x42, 0x61, 120}, /* 53 (120.839MHz) */
2202         {0x62, 0x61, 178}, /* 54 (178.992MHz) */
2203         {0x59, 0x22, 217}, /* 55 (217.325MHz) */
2204         {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2205         {0x52, 0x63,  74}, /* 57 (74.25MHz) */
2206         {0xFF, 0x00,   0}  /* End mark */
2207 };
2208
2209 static const struct SiS_VBVCLKData XGI_VBVCLKData[] = {
2210         {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2211         {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2212         {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2213         {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2214         {0x42, 0x47,  40}, /* 04 (40.000MHz) */
2215         {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2216         {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2217         {0x52, 0x47,  49}, /* 07 (49.500MHz) */
2218         {0x53, 0x47,  50}, /* 08 (50.000MHz) */
2219         {0x74, 0x67,  52}, /* 09 (52.406MHz) */
2220         {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2221         {0x35, 0x62,  65}, /* 0B (65.000MHz) */
2222         {0x46, 0x44,  67}, /* 0C (67.765MHz) */
2223         {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2224         {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2225         {0x29, 0x61,  75}, /* 0F (75.000MHz) */
2226         {0x6D, 0x46,  75}, /* 10 (75.800MHz) */
2227         {0x41, 0x43,  78}, /* 11 (78.750MHz) */
2228         {0x31, 0x42,  79}, /* 12 (79.411MHz) */
2229         {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2230         {0x46, 0x25,  84}, /* 14 (84.800MHz) */
2231         {0x78, 0x29,  86}, /* 15 (86.600MHz) */
2232         {0x62, 0x44,  94}, /* 16 (94.500MHz) */
2233         {0x2B, 0x22, 104}, /* 17 (104.998MHz) */
2234         {0x49, 0x24, 105}, /* 18 (105.882MHz) */
2235         {0xF8, 0x2F, 108}, /* 19 (108.279MHz) */
2236         {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2237         {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2238         {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2239         {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2240         {0xD4, 0x28, 135}, /* 1E (135.220MHz) */
2241         {0xEA, 0x2A, 139}, /* 1F (139.275MHz) */
2242         {0x41, 0x22, 157}, /* 20 (157.500MHz) */
2243         {0x70, 0x24, 162}, /* 21 (161.793MHz) */
2244         {0x30, 0x21, 175}, /* 22 (175.000MHz) */
2245         {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2246         {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2247         {0x70, 0x07, 202}, /* 25 (202.500MHz) */
2248         {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2249         {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2250         {0x34, 0x02, 253}, /* 28 (252.699997 MHz) */
2251         {0x58, 0x04, 255}, /* 29 (254.817MHz) */
2252         {0x24, 0x01, 265}, /* 2A (265.728MHz) */
2253         {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2254         {0x70, 0x05, 270}, /* 2C (269.65567 MHz) */
2255         {0x25, 0x01, 272}, /* 2D (272.041992 MHz) */
2256         {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2257         {0x27, 0x01, 286}, /* 2F (286.359985 MHz) */
2258         {0x3C, 0x02, 291}, /* 30 (291.132660 MHz) */
2259         {0xEF, 0x0A, 292}, /* 31 (291.766MHz) */
2260         {0xF6, 0x0A, 310}, /* 32 (309.789459 MHz) */
2261         {0x95, 0x01, 315}, /* 33 (315.195MHz) */
2262         {0xF0, 0x09, 324}, /* 34 (323.586792 MHz) */
2263         {0xFE, 0x0A, 331}, /* 35 (330.615631 MHz) */
2264         {0xF3, 0x09, 332}, /* 36 (332.177612 MHz) */
2265         {0xEA, 0x08, 340}, /* 37 (340.477MHz) */
2266         {0xE8, 0x07, 376}, /* 38 (375.847504 MHz) */
2267         {0xDE, 0x06, 389}, /* 39 (388.631439 MHz) */
2268         {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2269         {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2270         {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2271         {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2272         {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2273         {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2274         {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2275         {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2276         {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2277         {0x24, 0x46,  25}, /* 43 (25.175MHz) */
2278         {0x26, 0x64,  28}, /* 44 (28.322MHz) */
2279         {0x37, 0x64,  40}, /* 45 (40.000MHz) */
2280         {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2281         {0x37, 0x61, 100}, /* 47 (100.00MHz) */
2282         {0x78, 0x27, 108}, /* 48 (108.200MHz) */
2283         {0xBF, 0xC8, 35 }, /* 49 (35.2MHz) */
2284         {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2285         {0x2C, 0x61, 80 }, /* 4B (80.350Mhz) */
2286         {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2287         {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2288         {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2289         {0x28, 0x26, 322}, /* 4F (322.273MHz) */
2290         {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2291         {0x57, 0x24, 126}, /* 51 (125.999MHz) */
2292         {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2293         {0x42, 0x61, 120}, /* 53 (120.839MHz) */
2294         {0x62, 0x61, 178}, /* 54 (178.992MHz) */
2295         {0x59, 0x22, 217}, /* 55 (217.325MHz) */
2296         {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2297         {0x52, 0x63,  74}, /* 57 (74.25MHz) */
2298         {0xFF, 0x00,   0}  /* End mark */
2299 };
2300
2301 #define XGI301TVDelay 0x22
2302 #define XGI301LCDDelay 0x12
2303
2304 static const unsigned char TVAntiFlickList[] = {/* NTSCAntiFlicker */
2305         0x04, /* ; 0 Adaptive */
2306         0x00, /* ; 1 new anti-flicker ? */
2307
2308         0x04, /* ; 0 Adaptive */
2309         0x08, /* ; 1 new anti-flicker ? */
2310
2311         0x04, /* ; 0 ? */
2312         0x00  /* ; 1 new anti-flicker ? */
2313 };
2314
2315 static const unsigned char TVEdgeList[] = {
2316         0x00, /* ; 0 NTSC No Edge enhance */
2317         0x04, /* ; 1 NTSC Adaptive Edge enhance */
2318         0x00, /* ; 0 PAL No Edge enhance */
2319         0x04, /* ; 1 PAL Adaptive Edge enhance */
2320         0x00, /* ; 0 HiTV */
2321         0x00  /* ; 1 HiTV */
2322 };
2323
2324 static const unsigned long TVPhaseList[] = {
2325         0x08BAED21, /* ; 0 NTSC phase */
2326         0x00E3052A, /* ; 1 PAL phase */
2327         0x9B2EE421, /* ; 2 PAL-M phase */
2328         0xBA3EF421, /* ; 3 PAL-N phase */
2329         0xA7A28B1E, /* ; 4 NTSC 1024x768 */
2330         0xE00A831E, /* ; 5 PAL-M 1024x768 */
2331         0x00000000, /* ; 6 reserved */
2332         0x00000000, /* ; 7 reserved */
2333         0xD67BF021, /* ; 8 NTSC phase */
2334         0xE986092A, /* ; 9 PAL phase */
2335         0xA4EFE621, /* ; A PAL-M phase */
2336         0x4694F621, /* ; B PAL-N phase */
2337         0x8BDE711C, /* ; C NTSC 1024x768 */
2338         0xE00A831E  /* ; D PAL-M 1024x768 */
2339 };
2340
2341 static const unsigned char NTSCYFilter1[] = {
2342         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2343         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2344         0xEB, 0x04, 0x25, 0x18, /* 2 : 640x text mode */
2345         0xF1, 0x04, 0x1F, 0x18, /* 3 : 720x text mode */
2346         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2347         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
2348         0xEB, 0x15, 0x25, 0xF6  /* 6 : 800x gra. mode */
2349 };
2350
2351 static const unsigned char PALYFilter1[] = {
2352         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2353         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2354         0xF1, 0xF7, 0x1F, 0x32, /* 2 : 640x text mode */
2355         0xF3, 0x00, 0x1D, 0x20, /* 3 : 720x text mode */
2356         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2357         0xF1, 0xF7, 0x1F, 0x32, /* 5 : 640x gra. mode */
2358         0xFC, 0xFB, 0x14, 0x2A  /* 6 : 800x gra. mode */
2359 };
2360
2361 static const unsigned char xgifb_palmn_yfilter1[] = {
2362         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2363         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2364         0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */
2365         0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */
2366         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2367         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
2368         0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */
2369         0xFF, 0xFF, 0xFF, 0xFF  /* End of Table */
2370 };
2371
2372 static const unsigned char xgifb_yfilter2[] = {
2373         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
2374         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
2375         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
2376         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
2377         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
2378         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
2379         0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
2380         0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
2381 };
2382
2383 static const unsigned char XGI_NTSC1024AdjTime[] = {
2384         0xa7, 0x07, 0xf2, 0x6e, 0x17, 0x8b, 0x73, 0x53,
2385         0x13, 0x40, 0x34, 0xF4, 0x63, 0xBB, 0xCC, 0x7A,
2386         0x58, 0xe4, 0x73, 0xd0, 0x13
2387 };
2388
2389 static const struct XGI301C_Tap4TimingStruct xgifb_tap4_timing[] = {
2390         {0, {
2391         0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
2392         0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
2393         0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
2394         0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
2395         0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
2396         0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
2397         0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
2398         0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E  /* ; F8-FF */
2399         }
2400         }
2401 };
2402
2403 static const struct XGI301C_Tap4TimingStruct PALTap4Timing[] = {
2404         {600,   {
2405                 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
2406                 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
2407                 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
2408                 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
2409                 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
2410                 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
2411                 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
2412                 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04  /* ; F8-FF */
2413                 }
2414         },
2415         {768,   {
2416                 0x08, 0x12, 0x08, 0x7E, 0x07, 0x12, 0x09, 0x7E, /* ; C0-C7 */
2417                 0x06, 0x12, 0x0A, 0x7E, 0x05, 0x11, 0x0B, 0x7F, /* ; C8-CF */
2418                 0x04, 0x11, 0x0C, 0x7F, 0x03, 0x11, 0x0C, 0x00, /* ; D0-D7 */
2419                 0x03, 0x10, 0x0D, 0x00, 0x02, 0x0F, 0x0E, 0x01, /* ; D8-DF */
2420                 0x01, 0x0F, 0x0F, 0x01, 0x01, 0x0E, 0x0F, 0x02, /* ; E0-E7 */
2421                 0x00, 0x0D, 0x10, 0x03, 0x7F, 0x0C, 0x11, 0x04, /* ; EA-EF */
2422                 0x7F, 0x0C, 0x11, 0x04, 0x7F, 0x0B, 0x11, 0x05, /* ; F0-F7 */
2423                 0x7E, 0x0A, 0x12, 0x06, 0x7E, 0x09, 0x12, 0x07  /* ; F8-FF */
2424                 }
2425         },
2426         {0xFFFF, {
2427                  0x04, 0x1A, 0x04, 0x7E, 0x02, 0x1B, 0x05, 0x7E, /* ; C0-C7 */
2428                  0x01, 0x1A, 0x07, 0x7E, 0x00, 0x1A, 0x09, 0x7D, /* ; C8-CF */
2429                  0x7F, 0x19, 0x0B, 0x7D, 0x7E, 0x18, 0x0D, 0x7D, /* ; D0-D7 */
2430                  0x7D, 0x17, 0x10, 0x7C, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
2431                  0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
2432                  0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0D, 0x18, 0x7F, /* ; EA-EF */
2433                  0x7D, 0x0B, 0x19, 0x7F, 0x7D, 0x09, 0x1A, 0x00, /* ; F0-F7 */
2434                  0x7D, 0x07, 0x1A, 0x02, 0x7E, 0x05, 0x1B, 0x02  /* ; F8-FF */
2435                  }
2436         }
2437 };
2438
2439 static const struct XGI301C_Tap4TimingStruct xgifb_ntsc_525_tap4_timing[] = {
2440         {480,   {
2441                 0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
2442                 0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
2443                 0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
2444                 0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
2445                 0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
2446                 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
2447                 0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
2448                 0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
2449                 }
2450         },
2451         {600,   {
2452                 0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
2453                 0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
2454                 0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
2455                 0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
2456                 0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
2457                 0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
2458                 0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
2459                 0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
2460                 }
2461         },
2462         {0xFFFF, {
2463                  0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
2464                  0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
2465                  0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
2466                  0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
2467                  0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
2468                  0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
2469                  0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
2470                  0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
2471                  }
2472         }
2473 };
2474
2475 static const struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] = {
2476         {0xFFFF, {
2477                  0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
2478                  0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
2479                  0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
2480                  0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
2481                  0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
2482                  0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
2483                  0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
2484                  0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* F8-FF */
2485                  }
2486         }
2487 };
2488 #endif