ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / drivers / video / sis / oem310.h
1 /* $XFree86$ */
2 /*
3  * OEM Data for 315/330 series
4  *
5  * Copyright (C) 2001-2004 by Thomas Winischhofer, Vienna, Austria
6  *
7  * If distributed as part of the Linux kernel, the following license terms
8  * apply:
9  *
10  * * This program is free software; you can redistribute it and/or modify
11  * * it under the terms of the GNU General Public License as published by
12  * * the Free Software Foundation; either version 2 of the named License,
13  * * or any later version.
14  * *
15  * * This program is distributed in the hope that it will be useful,
16  * * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * * GNU General Public License for more details.
19  * *
20  * * You should have received a copy of the GNU General Public License
21  * * along with this program; if not, write to the Free Software
22  * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
23  *
24  * Otherwise, the following license terms apply:
25  *
26  * * Redistribution and use in source and binary forms, with or without
27  * * modification, are permitted provided that the following conditions
28  * * are met:
29  * * 1) Redistributions of source code must retain the above copyright
30  * *    notice, this list of conditions and the following disclaimer.
31  * * 2) Redistributions in binary form must reproduce the above copyright
32  * *    notice, this list of conditions and the following disclaimer in the
33  * *    documentation and/or other materials provided with the distribution.
34  * * 3) All advertising materials mentioning features or use of this software
35  * *    must display the following acknowledgement: "This product includes
36  * *    software developed by Thomas Winischhofer, Vienna, Austria."
37  * * 4) The name of the author may not be used to endorse or promote products
38  * *    derived from this software without specific prior written permission.
39  * *
40  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
41  * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
43  * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
44  * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45  * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
46  * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
47  * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
48  * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
49  * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50  *
51  * Author:      Thomas Winischhofer <thomas@winischhofer.net>
52  *
53  */
54
55 static const UCHAR SiS310_LCDDelayCompensation_301[] =                  /* 301 */
56 {
57                  0x00,0x00,0x00,    /*   800x600 */
58                  0x0b,0x0b,0x0b,    /*  1024x768 */
59                  0x08,0x08,0x08,    /* 1280x1024 */
60                  0x00,0x00,0x00,    /*   640x480 (unknown) */
61                  0x00,0x00,0x00,    /*  1024x600 (unknown) */
62                  0x00,0x00,0x00,    /*  1152x864 (unknown) */
63                  0x08,0x08,0x08,    /*  1280x960 (guessed) */
64                  0x00,0x00,0x00,    /*  1152x768 (unknown) */
65                  0x08,0x08,0x08,    /* 1400x1050 */
66                  0x08,0x08,0x08,    /*  1280x768  (guessed) */
67                  0x00,0x00,0x00,    /* 1600x1200 */
68                  0x00,0x00,0x00,    /*   320x480 (unknown) */
69                  0x00,0x00,0x00,
70                  0x00,0x00,0x00,
71                  0x00,0x00,0x00
72 };
73
74 /* This is contained in 650+301B BIOSes, but it is wrong - so we don't use it */
75 static const UCHAR SiS310_LCDDelayCompensation_650301LV[] =             /* 650 + 30xLV */
76 {
77                  0x01,0x01,0x01,    /*   800x600 */
78                  0x01,0x01,0x01,    /*  1024x768 */
79                  0x01,0x01,0x01,    /* 1280x1024 */
80                  0x01,0x01,0x01,    /*   640x480 (unknown) */
81                  0x01,0x01,0x01,    /*  1024x600 (unknown) */
82                  0x01,0x01,0x01,    /*  1152x864 (unknown) */
83                  0x01,0x01,0x01,    /*  1280x960 (guessed) */
84                  0x01,0x01,0x01,    /*  1152x768 (unknown) */
85                  0x01,0x01,0x01,    /* 1400x1050 */
86                  0x01,0x01,0x01,    /*  1280x768  (guessed) */
87                  0x01,0x01,0x01,    /* 1600x1200 */
88                  0x02,0x02,0x02,
89                  0x02,0x02,0x02,
90                  0x02,0x02,0x02,
91                  0x02,0x02,0x02
92 };
93
94 static const UCHAR SiS310_LCDDelayCompensation_651301LV[] =       /* M650/651 301LV */
95 {
96                  0x33,0x33,0x33,    /*   800x600 (guessed) - new: PanelType, not PanelRes ! */
97                  0x33,0x33,0x33,    /*  1024x768 */
98                  0x33,0x33,0x33,    /* 1280x1024 */
99                  0x33,0x33,0x33,    /*   640x480 (unknown) */
100                  0x33,0x33,0x33,    /*  1024x600 (unknown) */
101                  0x33,0x33,0x33,    /*  1152x864 (unknown) */
102                  0x33,0x33,0x33,    /*  1280x960 (guessed) */
103                  0x33,0x33,0x33,    /*  1152x768 (unknown) */
104                  0x33,0x33,0x33,    /* 1400x1050 */
105                  0x33,0x33,0x33,    /*  1280x768  (guessed) */
106                  0x33,0x33,0x33,    /* 1600x1200 */
107                  0x33,0x33,0x33,
108                  0x33,0x33,0x33,
109                  0x33,0x33,0x33,
110                  0x33,0x33,0x33
111 };
112
113 static const UCHAR SiS310_LCDDelayCompensation_651302LV[] =        /* M650/651 302LV */
114 {
115                  0x33,0x33,0x33,    /*   800x600 (guessed) */
116                  0x33,0x33,0x33,    /*  1024x768 */
117                  0x33,0x33,0x33,    /* 1280x1024 */
118                  0x33,0x33,0x33,    /*   640x480 (unknown) */
119                  0x33,0x33,0x33,    /*  1024x600 (unknown) */
120                  0x33,0x33,0x33,    /*  1152x864 (unknown) */
121                  0x33,0x33,0x33,    /*  1280x960 (guessed) */
122                  0x33,0x33,0x33,    /*  1152x768 (unknown) */
123                  0x33,0x33,0x33,    /* 1400x1050 */
124                  0x33,0x33,0x33,    /*  1280x768  (guessed) */
125                  0x33,0x33,0x33,    /* 1600x1200 */
126                  0x33,0x33,0x33,
127                  0x33,0x33,0x33,
128                  0x33,0x33,0x33,
129                  0x33,0x33,0x33
130 };
131
132 static const UCHAR SiS310_LCDDelayCompensation_3xx301B[] =              /* 30xB,LV */
133 {
134                  0x01,0x01,0x01,    /*   800x600 */
135                  0x0C,0x0C,0x0C,    /*  1024x768 */
136                  0x0C,0x0C,0x0C,    /* 1280x1024 */
137                  0x08,0x08,0x08,    /*   640x480 */
138                  0x0C,0x0C,0x0C,    /*  1024x600 (guessed) */
139                  0x0C,0x0C,0x0C,    /*  1152x864 (guessed) */
140                  0x0C,0x0C,0x0C,    /*  1280x960 (guessed) */
141                  0x0C,0x0C,0x0C,    /*  1152x768 (guessed) */
142                  0x0C,0x0C,0x0C,    /* 1400x1050 (guessed) */
143                  0x0C,0x0C,0x0C,    /*  1280x768 (guessed) */
144                  0x0C,0x0C,0x0C,    /* 1600x1200 (guessed) */
145                  0x02,0x02,0x02,
146                  0x02,0x02,0x02,
147                  0x02,0x02,0x02,
148                  0x02,0x02,0x02
149 };
150
151 static const UCHAR SiS310_TVDelayCompensation_301[] =           /* 301 */
152 {
153                  0x02,0x02,    /* NTSC Enhanced, Standard */
154                  0x02,0x02,    /* PAL */
155                  0x08,0x0b     /* HiVision */
156 };
157
158 static const UCHAR SiS310_TVDelayCompensation_301B[] =          /* 30xB, 30xLV */
159 {
160                  0x03,0x03,
161                  0x03,0x03,
162                  0x03,0x03
163 };
164
165 static const UCHAR SiS310_TVDelayCompensation_740301B[] =       /* 740 + 30xB (30xLV?) */
166 {
167                  0x05,0x05,
168                  0x05,0x05,
169                  0x05,0x05
170 };
171
172 static const UCHAR SiS310_TVDelayCompensation_LVDS[] =          /* LVDS */
173 {
174                  0x0a,0x0a,
175                  0x0a,0x0a,
176                  0x0a,0x0a
177 };
178
179 static const UCHAR SiS310_TVDelayCompensation_651301LV[] =      /* M650, 651, 301LV */
180 {
181                  0x33,0x33,
182                  0x33,0x33,
183                  0x33,0x33
184 };
185
186 static const UCHAR SiS310_TVDelayCompensation_651302LV[] =      /* M650, 651, 302LV */
187 {
188                  0x33,0x33,
189                  0x33,0x33,
190                  0x33,0x33
191 };
192
193 static const UCHAR SiS_TVDelay661_301[] =                       /* 661, 301 */
194 {
195                  0x44,0x44,
196                  0x44,0x44,
197                  0x00,0x00,
198                  0x44,0x44,
199                  0x44,0x44,
200                  0x44,0x44
201 };
202
203 static const UCHAR SiS_TVDelay661_301B[] =                      /* 661, 301B et al */
204 {
205                  0x44,0x44,
206                  0x44,0x44,
207                  0x00,0x00,
208                  0x44,0x44,
209                  0x44,0x44,
210                  0x44,0x44
211 };
212
213 static const UCHAR SiS310_TVAntiFlick1[6][2] =
214 {
215             {0x4,0x0},
216             {0x4,0x8},
217             {0x0,0x0},
218             {0x0,0x0},
219             {0x0,0x0},
220             {0x0,0x0}
221 };
222
223 static const UCHAR SiS310_TVEdge1[6][2] =
224 {
225             {0x0,0x4},
226             {0x0,0x4},
227             {0x0,0x0},
228             {0x0,0x0},
229             {0x0,0x0},
230             {0x0,0x0}
231 };
232
233 static const UCHAR SiS310_TVYFilter1[5][8][4] =
234 {
235  {
236         {0x00,0xf4,0x10,0x38},  /* NTSC */
237         {0x00,0xf4,0x10,0x38},
238         {0xeb,0x04,0x25,0x18},
239         {0xf1,0x04,0x1f,0x18},
240         {0x00,0xf4,0x10,0x38},
241         {0xeb,0x04,0x25,0x18},
242         {0xee,0x0c,0x22,0x08},
243         {0xeb,0x15,0x25,0xf6}
244  },
245  {
246         {0x00,0xf4,0x10,0x38},  /* PAL */
247         {0x00,0xf4,0x10,0x38},
248         {0xf1,0xf7,0x1f,0x32},
249         {0xf3,0x00,0x1d,0x20},
250         {0x00,0xf4,0x10,0x38},
251         {0xf1,0xf7,0x1f,0x32},
252         {0xf3,0x00,0x1d,0x20},
253         {0xfc,0xfb,0x14,0x2a}
254  },
255  {
256         {0x00,0x00,0x00,0x00},  /* HiVision */
257         {0x00,0xf4,0x10,0x38},
258         {0x00,0xf4,0x10,0x38},
259         {0xeb,0x04,0x25,0x18},
260         {0xf7,0x06,0x19,0x14},
261         {0x00,0xf4,0x10,0x38},
262         {0xeb,0x04,0x25,0x18},
263         {0xee,0x0c,0x22,0x08}
264  },
265  {
266         {0x00,0xf4,0x10,0x38},  /* PAL-M */
267         {0x00,0xf4,0x10,0x38},
268         {0xeb,0x04,0x10,0x18},
269         {0xf7,0x06,0x19,0x14},
270         {0x00,0xf4,0x10,0x38},
271         {0xeb,0x04,0x25,0x18},
272         {0xeb,0x04,0x25,0x18},
273         {0xeb,0x15,0x25,0xf6}
274  },
275  {
276         {0x00,0xf4,0x10,0x38},  /* PAL-N */
277         {0x00,0xf4,0x10,0x38},
278         {0xeb,0x04,0x10,0x18},
279         {0xf7,0x06,0x19,0x14},
280         {0x00,0xf4,0x10,0x38},
281         {0xeb,0x04,0x25,0x18},
282         {0xeb,0x04,0x25,0x18},
283         {0xeb,0x15,0x25,0xf6}
284  }
285 };
286
287 static const UCHAR SiS310_TVYFilter2[5][9][7] =
288 {
289  {
290         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* NTSC */
291         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
292         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
293         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
294         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
295         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
296         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
297         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
298         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
299  },
300  {
301         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* PAL */
302         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
303         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
304         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
305         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
306         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
307         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
308         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
309         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
310  },
311  {
312         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},   /* HiVision */
313         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
314         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
315         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
316         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
317         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
318         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
319         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
320         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22}
321  },
322  {
323         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* PAL-M */
324         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
325         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
326         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
327         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
328         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
329         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
330         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
331         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
332  },
333  {
334         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* PAL-N */
335         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
336         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
337         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
338         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
339         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
340         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
341         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
342         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
343  }
344 };
345
346 static const UCHAR SiS310_TVPhaseIncr1[3][2][4] =
347 {
348  {
349         {0x21,0xed,0xba,0x08},
350         {0x21,0xed,0xba,0x08}
351  },
352  {
353         {0x2a,0x05,0xe3,0x00},
354         {0x2a,0x05,0xe3,0x00}
355  },
356  {
357         {0x2a,0x05,0xd3,0x00},
358         {0x2a,0x05,0xd3,0x00}
359  }
360 };
361
362 static const UCHAR SiS310_TVPhaseIncr2[3][2][4] =
363 {
364  {
365         {0x21,0xf0,0x7b,0xd6},
366         {0x21,0xf0,0x7b,0xd6}
367  },
368  {
369         {0x2a,0x0a,0x41,0xe9},
370         {0x2a,0x0a,0x41,0xe9}
371  },
372  {
373         {0x2a,0x05,0xd3,0x00},
374         {0x2a,0x05,0xd3,0x00}
375  }
376 };
377
378 static const UCHAR SiS661_TVPhase[] = {
379     0x21,0xED,0xBA,0x08,
380     0x2A,0x05,0xE3,0x00,
381     0x21,0xE4,0x2E,0x9B,
382     0x21,0xF4,0x3E,0xBA,
383     0x1E,0x8B,0xA2,0xA7,
384     0x1E,0x83,0x0A,0xE0,
385     0x00,0x00,0x00,0x00,
386     0x00,0x00,0x00,0x00,
387     0x21,0xF0,0x7B,0xD6,
388     0x2A,0x09,0x86,0xE9,
389     0x21,0xE6,0xEF,0xA4,
390     0x21,0xF6,0x94,0x46,
391     0x1E,0x8B,0xA2,0xA7,
392     0x1E,0x83,0x0A,0xE0,
393     0x00,0x00,0x00,0x00,
394     0x00,0x00,0x00,0x00
395 };
396
397 /**************************************************************/
398 /* CUSTOM TIMING DATA --------------------------------------- */
399 /**************************************************************/
400
401 /* Inventec / Compaq Presario 3045US, 3017 */
402
403 static const SiS_LCDDataStruct  SiS310_ExtCompaq1280x1024Data[] =
404 {
405         {  211,  60,1024, 501,1688,1066},
406         {  211,  60,1024, 508,1688,1066},
407         {  211,  60,1024, 501,1688,1066},
408         {  211,  60,1024, 508,1688,1066},
409         {   32,  15,1696, 501,1696,1066},
410         {  212,  75,1024, 621,1696,1066},
411         {    4,   3,1696, 810,1696,1066},
412         {    1,   1,1696,1066,1696,1066}
413 };
414
415 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Compaq1280x1024_1[] =
416 {
417  {{0x3F,0x1B,0xD0,0xF0,0xB0,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
418  {{0x35,0x1B,0xA0,0xC0,0x80,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
419  {{0x3F,0x1B,0xD0,0xF0,0xB0,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
420  {{0x3F,0x1B,0xD0,0xF0,0xB0,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
421  {{0x45,0x1C,0x20,0x3F,0xFF,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
422  {{0x49,0x1C,0x40,0x7F,0xFF,0xAD,0x23,0x0A,0x07,0xF3,0x8A,0x12}},
423  {{0x4C,0x1C,0x18,0x2F,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
424  {{0x48,0x1C,0x15,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}}
425 };
426
427 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Compaq1280x1024_2[] =
428 {
429  {{0x2B,0x12,0xD9,0xE5,0xD5,0x2C,0x23,0x98,0x27,0x3E,0x08,0x42}},
430  {{0x22,0x12,0xC0,0xCC,0xBC,0x2C,0x23,0x98,0x27,0x3E,0x08,0x42}},
431  {{0x2B,0x12,0xD9,0xE5,0xD5,0x2C,0x23,0x98,0x27,0x3E,0x08,0x42}},
432  {{0x22,0x12,0xC0,0xCC,0xBC,0x2C,0x23,0x98,0x27,0x3E,0x08,0x42}},
433  {{0x33,0x13,0x01,0x0D,0xFD,0x2C,0x23,0x98,0x27,0x3E,0x08,0x42}},
434  {{0x3F,0x1B,0x3D,0x49,0x39,0x54,0x23,0xC0,0x27,0x66,0x30,0x42}},
435  {{0x33,0x1B,0x91,0x9D,0x8D,0x8C,0x23,0xF8,0x27,0x9E,0x68,0x42}},
436  {{0x43,0x24,0x11,0x1D,0x0D,0xCC,0x23,0x38,0x37,0xDE,0xA8,0x42}},
437  {{0x43,0x24,0x21,0x29,0x19,0xEA,0x23,0x0A,0x07,0x32,0xC6,0x42}}
438 };
439
440 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Compaq1280x1024_3[] =
441 {
442  {{0x47,0x1C,0x14,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
443  {{0x47,0x1C,0x14,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
444  {{0x47,0x1C,0x14,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
445  {{0x47,0x1C,0x14,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
446  {{0x47,0x1C,0x14,0x29,0xFF,0xBE,0x23,0x0A,0x07,0x26,0x8A,0x42}},
447  {{0x47,0x1C,0x14,0x29,0xFF,0xBE,0x23,0x0A,0x07,0x26,0x8A,0x42}},
448  {{0x47,0x1C,0x14,0x29,0xFF,0xBE,0x23,0x0A,0x07,0x26,0x8A,0x42}},
449  {{0x47,0x1C,0x14,0x29,0xFF,0xBE,0x23,0x0A,0x07,0x26,0x8A,0x42}}
450 };
451
452 /* LCDA CRT2 data is std */
453
454 static const SiS_LVDSDesStruct Compaq1280x1024Des_1[] =
455 {
456   { 0, 0 },
457   { 0, 0 },
458   { 0, 0 },
459   { 0, 0 },
460   { 0, 0 },
461   { 0, 0 },
462   { 0, 0 },
463   { 0, 0 }
464 };
465
466 static const SiS_LVDSDesStruct Compaq1280x1024Des_2[] =
467 {
468   { 0, 0 },
469   { 0, 0 },
470   { 0, 0 },
471   { 0, 0 },
472   { 0, 0 },
473   { 0, 0 },
474   { 0, 0 },
475   { 0, 0 }
476 };
477
478 /* Clevo L285/287 (dual-link 1024x768) */
479
480 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Clevo1024x768_1[] =
481 {
482  {{0x25,0x12,0xC9,0xDC,0xB6,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}},
483  {{0x2C,0x12,0x9A,0xAE,0x88,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}},
484  {{0x25,0x12,0xC9,0xDC,0xB6,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}},
485  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
486  {{0x38,0x13,0x16,0x0C,0xE6,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}},
487  {{0x38,0x18,0x16,0x00,0x00,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}},
488  {{0x36,0x13,0x13,0x25,0xFF,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}},
489  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
490  {{0x25,0x12,0xC9,0xDC,0xB6,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}}
491 };
492
493 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Clevo1024x768_2[] =
494 {
495  {{0x25,0x12,0x51,0x6E,0x48,0xCC,0x12,0x89,0x47,0x1C,0x49,0x33}},
496  {{0x2C,0x12,0x38,0x55,0x2F,0xCC,0x12,0x89,0x47,0x1C,0x49,0x33}},
497  {{0x25,0x12,0x51,0x6E,0x48,0xCC,0x12,0x89,0x47,0x1C,0x49,0x33}},
498  {{0x2C,0x12,0x38,0x55,0x2F,0xE0,0x12,0xB1,0x47,0x30,0x71,0x33}},
499  {{0x2D,0x12,0x79,0x96,0x70,0xCC,0x12,0x89,0x47,0x1C,0x49,0x33}},
500  {{0x29,0x12,0xB5,0xD2,0xAC,0xF4,0x12,0xD9,0x47,0x44,0x99,0x33}},
501  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}},
502 #if 0
503  {{0x25,0x12,0x51,0x6E,0x48,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
504  {{0x2C,0x12,0x38,0x55,0x2F,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
505  {{0x25,0x12,0x51,0x6E,0x48,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
506  {{0x2C,0x12,0x38,0x55,0x2F,0xC1,0x35,0xB1,0x47,0xE9,0x71,0x33}},
507  {{0x2D,0x12,0x79,0x96,0x70,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
508  {{0x29,0x12,0xB5,0xD2,0xAC,0xE9,0x35,0xD9,0x47,0x11,0x99,0x33}},
509  {{0x36,0x13,0x13,0x25,0xFF,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}}
510 #endif
511 };
512
513 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Clevo1024x768_3[] =
514 {
515  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}}, /* Corrected */
516  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}},
517  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}},
518  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
519  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}},
520  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}},
521  {{0x36,0x13,0x13,0x25,0xFF,0x32,0x22,0x0A,0x07,0x82,0x0A,0x12}},
522  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
523  {{0x25,0x13,0xC9,0x25,0xFF,0x59,0x45,0x09,0x07,0xF9,0x09,0x24}}
524 };
525
526 /* CRT2 data is std */
527
528 static const SiS_LVDSDesStruct Clevo1024x768Des_1[] =
529 {
530   { 0, 0 },
531   { 0, 0 },
532   { 0, 0 },
533   { 0, 0 },
534   { 0, 0 },
535   { 0, 0 },
536   { 0, 0 }
537 };
538
539 static const SiS_LVDSDesStruct Clevo1024x768Des_2[] =
540 {
541   { 1184, 622 },
542   { 1184, 597 },
543   { 1184, 622 },
544   { 1184, 597 },
545   { 1152, 622 },
546   { 1232, 722 },
547   {    0,   0 }
548 };
549
550 /* Asus A2xxxH _2 */
551
552 static const SiS_Part2PortTblStruct SiS310_CRT2Part2_Asus1024x768_3[] =
553 {
554  {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
555  {{0x2c,0x13,0x9a,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
556  {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
557  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
558  {{0x38,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
559  {{0x38,0x13,0x16,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}},
560  {{0x36,0x13,0x13,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}},
561  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
562  {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}}
563 };
564
565 static const SiS_LVDSDesStruct Asus1024x768Des_1[] =
566 {
567   { 0, 0 },
568   { 0, 0 },
569   { 0, 0 },
570   { 0, 0 },
571   { 0, 0 },
572   { 0, 0 },
573   { 0, 0 }
574 };
575
576 static const SiS_LVDSDesStruct Asus1024x768Des_2[] =
577 {
578   { 1184, 622 },
579   { 1184, 597 },
580   { 1184, 622 },
581   { 1184, 597 },
582   { 1152, 622 },
583   { 1232, 722 },
584   {    0,   0 }
585 };
586
587 /* CRT2 data is std */
588
589 /* Uniwill N243S9, ECS A928 */
590
591 static const SiS_LVDSDesStruct Uniwill1024x768Des_1[] =
592 {
593   { 0, 0 },
594   { 0, 0 },
595   { 0, 0 },
596   { 0, 0 },
597   { 0, 0 },
598   { 0, 0 },
599   { 0, 805 }
600 };
601
602 static const SiS_LVDSDesStruct Uniwill1024x768Des_2[] =
603 {
604   { 1184, 622 },
605   { 1184, 597 },
606   { 1184, 622 },
607   { 1184, 597 },
608   { 1152, 650 },
609   { 1232, 722 },
610   {    0, 805 },
611 };
612
613