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