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