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