aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/fbdev/sis/oem310.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/fbdev/sis/oem310.h')
-rw-r--r--drivers/video/fbdev/sis/oem310.h430
1 files changed, 430 insertions, 0 deletions
diff --git a/drivers/video/fbdev/sis/oem310.h b/drivers/video/fbdev/sis/oem310.h
new file mode 100644
index 000000000000..8fce56e4482c
--- /dev/null
+++ b/drivers/video/fbdev/sis/oem310.h
@@ -0,0 +1,430 @@
1/* $XFree86$ */
2/* $XdotOrg$ */
3/*
4 * OEM Data for 315/330/340 series
5 *
6 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
7 *
8 * If distributed as part of the Linux kernel, the following license terms
9 * apply:
10 *
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.
15 * *
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.
20 * *
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
24 *
25 * Otherwise, the following license terms apply:
26 *
27 * * Redistribution and use in source and binary forms, with or without
28 * * modification, are permitted provided that the following conditions
29 * * are met:
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.
37 * *
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.
48 *
49 * Author: Thomas Winischhofer <thomas@winischhofer.net>
50 *
51 */
52
53static const unsigned char SiS310_LCDDelayCompensation_301[] = /* 301 */
54{
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) */
67 0x00,0x00,0x00,
68 0x00,0x00,0x00,
69 0x00,0x00,0x00
70};
71
72/* This is contained in 650+301B BIOSes, but it is wrong - so we don't use it */
73static const unsigned char SiS310_LCDDelayCompensation_650301LV[] = /* 650 + 30xLV */
74{
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 */
86 0x02,0x02,0x02,
87 0x02,0x02,0x02,
88 0x02,0x02,0x02,
89 0x02,0x02,0x02
90};
91
92static const unsigned char SiS310_LCDDelayCompensation_651301LV[] = /* M650/651 301LV */
93{
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 */
105 0x33,0x33,0x33,
106 0x33,0x33,0x33,
107 0x33,0x33,0x33,
108 0x33,0x33,0x33
109};
110
111static const unsigned char SiS310_LCDDelayCompensation_651302LV[] = /* M650/651 302LV */
112{
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 */
124 0x33,0x33,0x33,
125 0x33,0x33,0x33,
126 0x33,0x33,0x33,
127 0x33,0x33,0x33
128};
129
130static const unsigned char SiS310_LCDDelayCompensation_3xx301B[] = /* 30xB */
131{
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) */
143 0x02,0x02,0x02,
144 0x02,0x02,0x02,
145 0x02,0x02,0x02,
146 0x02,0x02,0x02
147};
148
149static const unsigned char SiS310_LCDDelayCompensation_3xx301LV[] = /* 315+30xLV */
150{
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) */
162 0x02,0x02,0x02,
163 0x02,0x02,0x02,
164 0x02,0x02,0x02,
165 0x02,0x02,0x02
166};
167
168static const unsigned char SiS310_TVDelayCompensation_301[] = /* 301 */
169{
170 0x02,0x02, /* NTSC Enhanced, Standard */
171 0x02,0x02, /* PAL */
172 0x08,0x0b /* HiVision */
173};
174
175static const unsigned char SiS310_TVDelayCompensation_301B[] = /* 30xB, 30xLV */
176{
177 0x03,0x03,
178 0x03,0x03,
179 0x03,0x03
180};
181
182static const unsigned char SiS310_TVDelayCompensation_740301B[] = /* 740 + 30xB (30xLV?) */
183{
184 0x05,0x05,
185 0x05,0x05,
186 0x05,0x05
187};
188
189static const unsigned char SiS310_TVDelayCompensation_651301LV[] = /* M650, 651, 301LV */
190{
191 0x33,0x33,
192 0x33,0x33,
193 0x33,0x33
194};
195
196static const unsigned char SiS310_TVDelayCompensation_651302LV[] = /* M650, 651, 302LV */
197{
198 0x33,0x33,
199 0x33,0x33,
200 0x33,0x33
201};
202
203static const unsigned char SiS_TVDelay661_301[] = /* 661, 301 */
204{
205 0x44,0x44,
206 0x44,0x44,
207 0x00,0x00,
208 0x44,0x44,
209 0x44,0x44,
210 0x44,0x44
211};
212
213static const unsigned char SiS_TVDelay661_301B[] = /* 661, 301B et al */
214{
215 0x44,0x44,
216 0x44,0x44,
217 0x00,0x00,
218 0x44,0x44,
219 0x44,0x44,
220 0x44,0x44
221};
222
223static const unsigned char SiS310_TVDelayCompensation_LVDS[] = /* LVDS */
224{
225 0x0a,0x0a,
226 0x0a,0x0a,
227 0x0a,0x0a
228};
229
230static const unsigned char SiS310_TVAntiFlick1[6][2] =
231{
232 {0x4,0x0},
233 {0x4,0x8},
234 {0x0,0x0},
235 {0x0,0x0},
236 {0x0,0x0},
237 {0x0,0x0}
238};
239
240static const unsigned char SiS310_TVEdge1[6][2] =
241{
242 {0x0,0x4},
243 {0x0,0x4},
244 {0x0,0x0},
245 {0x0,0x0},
246 {0x0,0x0},
247 {0x0,0x0}
248};
249
250static const unsigned char SiS310_TVYFilter1[5][8][4] =
251{
252 {
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}
261 },
262 {
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}
271 },
272 {
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}
281 },
282 {
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}
291 },
292 {
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}
301 }
302};
303
304static const unsigned char SiS310_TVYFilter2[5][9][7] =
305{
306 {
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}
316 },
317 {
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}
327 },
328 {
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}
338 },
339 {
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}
349 },
350 {
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}
360 }
361};
362
363static const unsigned char SiS310_TVPhaseIncr1[3][2][4] =
364{
365 {
366 {0x21,0xed,0xba,0x08},
367 {0x21,0xed,0xba,0x08}
368 },
369 {
370 {0x2a,0x05,0xe3,0x00},
371 {0x2a,0x05,0xe3,0x00}
372 },
373 {
374 {0x2a,0x05,0xd3,0x00},
375 {0x2a,0x05,0xd3,0x00}
376 }
377};
378
379static const unsigned char SiS310_TVPhaseIncr2[3][2][4] =
380{
381 {
382 {0x21,0xf0,0x7b,0xd6},
383 {0x21,0xf0,0x7b,0xd6}
384 },
385 {
386 {0x2a,0x0a,0x41,0xe9},
387 {0x2a,0x0a,0x41,0xe9}
388 },
389 {
390 {0x2a,0x05,0xd3,0x00},
391 {0x2a,0x05,0xd3,0x00}
392 }
393};
394
395/**************************************************************/
396/* CUSTOM TIMING DATA --------------------------------------- */
397/**************************************************************/
398
399/* Inventec / Compaq Presario 3045US, 3017 */
400
401static const struct SiS_LCDData SiS310_ExtCompaq1280x1024Data[] =
402{
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}
411};
412
413/* Asus A2xxxH _2 */
414
415static const struct SiS_Part2PortTbl SiS310_CRT2Part2_Asus1024x768_3[] =
416{
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}}
426};
427
428
429
430