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