Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
oem310.h
Go to the documentation of this file.
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 <[email protected]>
50  *
51  */
52 
53 static 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 */
73 static 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 
92 static 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 
111 static 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 
130 static 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 
149 static 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 
168 static const unsigned char SiS310_TVDelayCompensation_301[] = /* 301 */
169 {
170  0x02,0x02, /* NTSC Enhanced, Standard */
171  0x02,0x02, /* PAL */
172  0x08,0x0b /* HiVision */
173 };
174 
175 static const unsigned char SiS310_TVDelayCompensation_301B[] = /* 30xB, 30xLV */
176 {
177  0x03,0x03,
178  0x03,0x03,
179  0x03,0x03
180 };
181 
182 static const unsigned char SiS310_TVDelayCompensation_740301B[] = /* 740 + 30xB (30xLV?) */
183 {
184  0x05,0x05,
185  0x05,0x05,
186  0x05,0x05
187 };
188 
189 static const unsigned char SiS310_TVDelayCompensation_651301LV[] = /* M650, 651, 301LV */
190 {
191  0x33,0x33,
192  0x33,0x33,
193  0x33,0x33
194 };
195 
196 static const unsigned char SiS310_TVDelayCompensation_651302LV[] = /* M650, 651, 302LV */
197 {
198  0x33,0x33,
199  0x33,0x33,
200  0x33,0x33
201 };
202 
203 static 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 
213 static 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 
223 static const unsigned char SiS310_TVDelayCompensation_LVDS[] = /* LVDS */
224 {
225  0x0a,0x0a,
226  0x0a,0x0a,
227  0x0a,0x0a
228 };
229 
230 static 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 
240 static 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 
250 static 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 
304 static 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 
363 static 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 
379 static 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 
401 static 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 
415 static 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