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