• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/video/sis/
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