4
* OEM Data for 315/330/340 series
6
* Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
8
* If distributed as part of the Linux kernel, the following license terms
11
* * This program is free software; you can redistribute it and/or modify
12
* * it under the terms of the GNU General Public License as published by
13
* * the Free Software Foundation; either version 2 of the named License,
14
* * or any later version.
16
* * This program is distributed in the hope that it will be useful,
17
* * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* * GNU General Public License for more details.
21
* * You should have received a copy of the GNU General Public License
22
* * along with this program; if not, write to the Free Software
23
* * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
25
* Otherwise, the following license terms apply:
27
* * Redistribution and use in source and binary forms, with or without
28
* * modification, are permitted provided that the following conditions
30
* * 1) Redistributions of source code must retain the above copyright
31
* * notice, this list of conditions and the following disclaimer.
32
* * 2) Redistributions in binary form must reproduce the above copyright
33
* * notice, this list of conditions and the following disclaimer in the
34
* * documentation and/or other materials provided with the distribution.
35
* * 3) The name of the author may not be used to endorse or promote products
36
* * derived from this software without specific prior written permission.
38
* * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
39
* * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
40
* * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
41
* * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
42
* * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
43
* * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
44
* * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
45
* * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
46
* * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
47
* * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49
* Author: Thomas Winischhofer <thomas@winischhofer.net>
53
static const unsigned char SiS310_LCDDelayCompensation_301[] = /* 301 */
55
0x00,0x00,0x00, /* 800x600 */
56
0x0b,0x0b,0x0b, /* 1024x768 */
57
0x08,0x08,0x08, /* 1280x1024 */
58
0x00,0x00,0x00, /* 640x480 (unknown) */
59
0x00,0x00,0x00, /* 1024x600 (unknown) */
60
0x00,0x00,0x00, /* 1152x864 (unknown) */
61
0x08,0x08,0x08, /* 1280x960 (guessed) */
62
0x00,0x00,0x00, /* 1152x768 (unknown) */
63
0x08,0x08,0x08, /* 1400x1050 */
64
0x08,0x08,0x08, /* 1280x768 (guessed) */
65
0x00,0x00,0x00, /* 1600x1200 */
66
0x00,0x00,0x00, /* 320x480 (unknown) */
72
/* This is contained in 650+301B BIOSes, but it is wrong - so we don't use it */
73
static const unsigned char SiS310_LCDDelayCompensation_650301LV[] = /* 650 + 30xLV */
75
0x01,0x01,0x01, /* 800x600 */
76
0x01,0x01,0x01, /* 1024x768 */
77
0x01,0x01,0x01, /* 1280x1024 */
78
0x01,0x01,0x01, /* 640x480 (unknown) */
79
0x01,0x01,0x01, /* 1024x600 (unknown) */
80
0x01,0x01,0x01, /* 1152x864 (unknown) */
81
0x01,0x01,0x01, /* 1280x960 (guessed) */
82
0x01,0x01,0x01, /* 1152x768 (unknown) */
83
0x01,0x01,0x01, /* 1400x1050 */
84
0x01,0x01,0x01, /* 1280x768 (guessed) */
85
0x01,0x01,0x01, /* 1600x1200 */
92
static const unsigned char SiS310_LCDDelayCompensation_651301LV[] = /* M650/651 301LV */
94
0x33,0x33,0x33, /* 800x600 (guessed) - new: PanelType, not PanelRes ! */
95
0x33,0x33,0x33, /* 1024x768 */
96
0x33,0x33,0x33, /* 1280x1024 */
97
0x33,0x33,0x33, /* 640x480 (unknown) */
98
0x33,0x33,0x33, /* 1024x600 (unknown) */
99
0x33,0x33,0x33, /* 1152x864 (unknown) */
100
0x33,0x33,0x33, /* 1280x960 (guessed) */
101
0x33,0x33,0x33, /* 1152x768 (unknown) */
102
0x33,0x33,0x33, /* 1400x1050 */
103
0x33,0x33,0x33, /* 1280x768 (guessed) */
104
0x33,0x33,0x33, /* 1600x1200 */
111
static const unsigned char SiS310_LCDDelayCompensation_651302LV[] = /* M650/651 302LV */
113
0x33,0x33,0x33, /* 800x600 (guessed) */
114
0x33,0x33,0x33, /* 1024x768 */
115
0x33,0x33,0x33, /* 1280x1024 */
116
0x33,0x33,0x33, /* 640x480 (unknown) */
117
0x33,0x33,0x33, /* 1024x600 (unknown) */
118
0x33,0x33,0x33, /* 1152x864 (unknown) */
119
0x33,0x33,0x33, /* 1280x960 (guessed) */
120
0x33,0x33,0x33, /* 1152x768 (unknown) */
121
0x33,0x33,0x33, /* 1400x1050 */
122
0x33,0x33,0x33, /* 1280x768 (guessed) */
123
0x33,0x33,0x33, /* 1600x1200 */
130
static const unsigned char SiS310_LCDDelayCompensation_3xx301B[] = /* 30xB */
132
0x01,0x01,0x01, /* 800x600 */
133
0x0C,0x0C,0x0C, /* 1024x768 */
134
0x0C,0x0C,0x0C, /* 1280x1024 */
135
0x08,0x08,0x08, /* 640x480 */
136
0x0C,0x0C,0x0C, /* 1024x600 (guessed) */
137
0x0C,0x0C,0x0C, /* 1152x864 (guessed) */
138
0x0C,0x0C,0x0C, /* 1280x960 (guessed) */
139
0x0C,0x0C,0x0C, /* 1152x768 (guessed) */
140
0x0C,0x0C,0x0C, /* 1400x1050 (guessed) */
141
0x0C,0x0C,0x0C, /* 1280x768 (guessed) */
142
0x0C,0x0C,0x0C, /* 1600x1200 (guessed) */
149
static const unsigned char SiS310_LCDDelayCompensation_3xx301LV[] = /* 315+30xLV */
151
0x01,0x01,0x01, /* 800x600 */
152
0x04,0x04,0x04, /* 1024x768 (A531/BIOS 1.14.05f: 4 - works with 6 */
153
0x0C,0x0C,0x0C, /* 1280x1024 */
154
0x08,0x08,0x08, /* 640x480 */
155
0x0C,0x0C,0x0C, /* 1024x600 (guessed) */
156
0x0C,0x0C,0x0C, /* 1152x864 (guessed) */
157
0x0C,0x0C,0x0C, /* 1280x960 (guessed) */
158
0x0C,0x0C,0x0C, /* 1152x768 (guessed) */
159
0x0C,0x0C,0x0C, /* 1400x1050 (guessed) */
160
0x0C,0x0C,0x0C, /* 1280x768 (guessed) */
161
0x0C,0x0C,0x0C, /* 1600x1200 (guessed) */
168
static const unsigned char SiS310_TVDelayCompensation_301[] = /* 301 */
170
0x02,0x02, /* NTSC Enhanced, Standard */
172
0x08,0x0b /* HiVision */
175
static const unsigned char SiS310_TVDelayCompensation_301B[] = /* 30xB, 30xLV */
182
static const unsigned char SiS310_TVDelayCompensation_740301B[] = /* 740 + 30xB (30xLV?) */
189
static const unsigned char SiS310_TVDelayCompensation_651301LV[] = /* M650, 651, 301LV */
196
static const unsigned char SiS310_TVDelayCompensation_651302LV[] = /* M650, 651, 302LV */
203
static const unsigned char SiS_TVDelay661_301[] = /* 661, 301 */
213
static const unsigned char SiS_TVDelay661_301B[] = /* 661, 301B et al */
223
static const unsigned char SiS310_TVDelayCompensation_LVDS[] = /* LVDS */
230
static const unsigned char SiS310_TVAntiFlick1[6][2] =
240
static const unsigned char SiS310_TVEdge1[6][2] =
250
static const unsigned char SiS310_TVYFilter1[5][8][4] =
253
{0x00,0xf4,0x10,0x38}, /* NTSC */
254
{0x00,0xf4,0x10,0x38},
255
{0xeb,0x04,0x25,0x18},
256
{0xf1,0x04,0x1f,0x18},
257
{0x00,0xf4,0x10,0x38},
258
{0xeb,0x04,0x25,0x18},
259
{0xee,0x0c,0x22,0x08},
260
{0xeb,0x15,0x25,0xf6}
263
{0x00,0xf4,0x10,0x38}, /* PAL */
264
{0x00,0xf4,0x10,0x38},
265
{0xf1,0xf7,0x1f,0x32},
266
{0xf3,0x00,0x1d,0x20},
267
{0x00,0xf4,0x10,0x38},
268
{0xf1,0xf7,0x1f,0x32},
269
{0xf3,0x00,0x1d,0x20},
270
{0xfc,0xfb,0x14,0x2a}
273
{0x00,0x00,0x00,0x00}, /* HiVision */
274
{0x00,0xf4,0x10,0x38},
275
{0x00,0xf4,0x10,0x38},
276
{0xeb,0x04,0x25,0x18},
277
{0xf7,0x06,0x19,0x14},
278
{0x00,0xf4,0x10,0x38},
279
{0xeb,0x04,0x25,0x18},
280
{0xee,0x0c,0x22,0x08}
283
{0x00,0xf4,0x10,0x38}, /* PAL-M */
284
{0x00,0xf4,0x10,0x38},
285
{0xeb,0x04,0x10,0x18},
286
{0xf7,0x06,0x19,0x14},
287
{0x00,0xf4,0x10,0x38},
288
{0xeb,0x04,0x25,0x18},
289
{0xeb,0x04,0x25,0x18},
290
{0xeb,0x15,0x25,0xf6}
293
{0x00,0xf4,0x10,0x38}, /* PAL-N */
294
{0x00,0xf4,0x10,0x38},
295
{0xeb,0x04,0x10,0x18},
296
{0xf7,0x06,0x19,0x14},
297
{0x00,0xf4,0x10,0x38},
298
{0xeb,0x04,0x25,0x18},
299
{0xeb,0x04,0x25,0x18},
300
{0xeb,0x15,0x25,0xf6}
304
static const unsigned char SiS310_TVYFilter2[5][9][7] =
307
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46}, /* NTSC */
308
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
309
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
310
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
311
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
312
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
313
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
314
{0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
315
{0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
318
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46}, /* PAL */
319
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
320
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
321
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
322
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
323
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
324
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
325
{0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
326
{0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
329
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22}, /* HiVision */
330
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
331
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
332
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
333
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
334
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
335
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
336
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
337
{0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22}
340
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46}, /* PAL-M */
341
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
342
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
343
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
344
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
345
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
346
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
347
{0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
348
{0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
351
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46}, /* PAL-N */
352
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
353
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
354
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
355
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
356
{0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
357
{0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
358
{0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
359
{0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
363
static const unsigned char SiS310_TVPhaseIncr1[3][2][4] =
366
{0x21,0xed,0xba,0x08},
367
{0x21,0xed,0xba,0x08}
370
{0x2a,0x05,0xe3,0x00},
371
{0x2a,0x05,0xe3,0x00}
374
{0x2a,0x05,0xd3,0x00},
375
{0x2a,0x05,0xd3,0x00}
379
static const unsigned char SiS310_TVPhaseIncr2[3][2][4] =
382
{0x21,0xf0,0x7b,0xd6},
383
{0x21,0xf0,0x7b,0xd6}
386
{0x2a,0x0a,0x41,0xe9},
387
{0x2a,0x0a,0x41,0xe9}
390
{0x2a,0x05,0xd3,0x00},
391
{0x2a,0x05,0xd3,0x00}
395
/**************************************************************/
396
/* CUSTOM TIMING DATA --------------------------------------- */
397
/**************************************************************/
399
/* Inventec / Compaq Presario 3045US, 3017 */
401
static const struct SiS_LCDData SiS310_ExtCompaq1280x1024Data[] =
403
{ 211, 60,1024, 501,1688,1066},
404
{ 211, 60,1024, 508,1688,1066},
405
{ 211, 60,1024, 501,1688,1066},
406
{ 211, 60,1024, 508,1688,1066},
407
{ 32, 15,1696, 501,1696,1066},
408
{ 212, 75,1024, 621,1696,1066},
409
{ 4, 3,1696, 810,1696,1066},
410
{ 1, 1,1696,1066,1696,1066}
415
static const struct SiS_Part2PortTbl SiS310_CRT2Part2_Asus1024x768_3[] =
417
{{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
418
{{0x2c,0x13,0x9a,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
419
{{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
420
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
421
{{0x38,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
422
{{0x38,0x13,0x16,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}},
423
{{0x36,0x13,0x13,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}},
424
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
425
{{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}}