diff options
Diffstat (limited to 'drivers/video/sis/init301.h')
-rw-r--r-- | drivers/video/sis/init301.h | 410 |
1 files changed, 410 insertions, 0 deletions
diff --git a/drivers/video/sis/init301.h b/drivers/video/sis/init301.h new file mode 100644 index 000000000000..f05aebc994b4 --- /dev/null +++ b/drivers/video/sis/init301.h | |||
@@ -0,0 +1,410 @@ | |||
1 | /* $XFree86$ */ | ||
2 | /* $XdotOrg$ */ | ||
3 | /* | ||
4 | * Data and prototypes for init301.c | ||
5 | * | ||
6 | * Copyright (C) 2001-2004 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 | |||
53 | #ifndef _INIT301_ | ||
54 | #define _INIT301_ | ||
55 | |||
56 | #include "osdef.h" | ||
57 | #include "initdef.h" | ||
58 | |||
59 | #ifdef LINUX_XF86 | ||
60 | #include "sis.h" | ||
61 | #include "sis_regs.h" | ||
62 | #endif | ||
63 | |||
64 | #ifdef LINUX_KERNEL | ||
65 | #include "vgatypes.h" | ||
66 | #include "vstruct.h" | ||
67 | #ifdef SIS_CP | ||
68 | #undef SIS_CP | ||
69 | #endif | ||
70 | #include <linux/config.h> | ||
71 | #include <linux/version.h> | ||
72 | #include <asm/io.h> | ||
73 | #include <linux/types.h> | ||
74 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) | ||
75 | #include <linux/sisfb.h> | ||
76 | #else | ||
77 | #include <video/sisfb.h> | ||
78 | #endif | ||
79 | #endif | ||
80 | |||
81 | static const UCHAR SiS_YPbPrTable[3][64] = { | ||
82 | { | ||
83 | 0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c, | ||
84 | 0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a, | ||
85 | 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b, | ||
86 | 0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17, | ||
87 | 0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02, | ||
88 | 0x03,0x0a,0x65,0x9d /*0x8d*/,0x08,0x92,0x8f,0x40, | ||
89 | 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x53 /*0x50*/, | ||
90 | 0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00 | ||
91 | }, | ||
92 | { | ||
93 | 0x1d,0x11,0x06,0x09,0x0b,0x0c,0x0c,0x0c, | ||
94 | 0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a, | ||
95 | 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, | ||
96 | 0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4c /*0x4f*/,0x13, | ||
97 | 0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8, | ||
98 | 0x51,0x5e,0x60,0x57 /*0x49*/,0x7b /*0x7d*/,0x92,0x0f,0x40, | ||
99 | 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4b, | ||
100 | 0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00 | ||
101 | }, | ||
102 | { | ||
103 | #if 1 | ||
104 | 0x13,0x1d,0xe8,0x09,0x09,0xed,0x0c,0x0c, | ||
105 | 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a, | ||
106 | 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, | ||
107 | 0xed,0x50,0x70,0x9f,0x16,0x59,0x21 /*0x2b*/,0x13, | ||
108 | 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0, | ||
109 | 0x4b,0x4b,0x65 /*0x6f*/,0x2f,0x63,0x92,0x0f,0x40, | ||
110 | 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x27, | ||
111 | 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00 | ||
112 | #endif | ||
113 | #if 0 | ||
114 | 0x2a,0x14,0xe8,0x09,0x09,0xed,0x0c,0x0c, /* TEST (0.93) - BAD */ | ||
115 | 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a, | ||
116 | 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, | ||
117 | 0xed,0x50,0x70,0x9e,0x16,0x57,0x6c,0x13, | ||
118 | 0x27,0x0b,0x27,0xfb,0x30,0x27,0x15,0xb0, | ||
119 | 0x3b,0xdb,0x61,0x24,0x78,0x92,0x0f,0xff, | ||
120 | 0xff,0xff,0xff,0xff,0xff,0xff,0x14,0x6f, | ||
121 | 0x00,0x52,0xbb,0x00,0xd5,0xf7,0xa2,0x00 | ||
122 | #endif | ||
123 | } | ||
124 | }; | ||
125 | |||
126 | static const UCHAR SiS_HiTVGroup3_1[] = { | ||
127 | 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13, | ||
128 | 0xb1, 0x41, 0x62, 0x62, 0xff, 0xf4, 0x45, 0xa6, | ||
129 | 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20, | ||
130 | 0xac, 0xda, 0x60, 0xfe, 0x6a, 0x9a, 0x06, 0x10, | ||
131 | 0xd1, 0x04, 0x18, 0x0a, 0xff, 0x80, 0x00, 0x80, | ||
132 | 0x3b, 0x77, 0x00, 0xef, 0xe0, 0x10, 0xb0, 0xe0, | ||
133 | 0x10, 0x4f, 0x0f, 0x0f, 0x05, 0x0f, 0x08, 0x6e, | ||
134 | 0x1a, 0x1f, 0x25, 0x2a, 0x4c, 0xaa, 0x01 | ||
135 | }; | ||
136 | |||
137 | static const UCHAR SiS_HiTVGroup3_2[] = { | ||
138 | 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a, | ||
139 | 0x54, 0x41, 0xe7, 0xe7, 0xff, 0xf4, 0x45, 0xa6, | ||
140 | 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20, | ||
141 | 0xac, 0x6a, 0x60, 0x2b, 0x52, 0xcd, 0x61, 0x10, | ||
142 | 0x51, 0x04, 0x18, 0x0a, 0x1f, 0x80, 0x00, 0x80, | ||
143 | 0xff, 0xa4, 0x04, 0x2b, 0x94, 0x21, 0x72, 0x94, | ||
144 | 0x26, 0x05, 0x01, 0x0f, 0xed, 0x0f, 0x0a, 0x64, | ||
145 | 0x18, 0x1d, 0x23, 0x28, 0x4c, 0xaa, 0x01 | ||
146 | }; | ||
147 | |||
148 | /* 301C / 302ELV extended Part2 TV registers (4 tap scaler) */ | ||
149 | |||
150 | static const UCHAR SiS_Part2CLVX_1[] = { | ||
151 | 0x00,0x00, | ||
152 | 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E, | ||
153 | 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C, | ||
154 | 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C, | ||
155 | 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E | ||
156 | }; | ||
157 | |||
158 | static const UCHAR SiS_Part2CLVX_2[] = { | ||
159 | 0x00,0x00, | ||
160 | 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E, | ||
161 | 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C, | ||
162 | 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C, | ||
163 | 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E | ||
164 | }; | ||
165 | |||
166 | static const UCHAR SiS_Part2CLVX_3[] = { /* NTSC, 525i, 525p */ | ||
167 | 0xE0,0x01, | ||
168 | 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D,0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D, | ||
169 | 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C,0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C, | ||
170 | 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E, | ||
171 | 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00,0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02, | ||
172 | 0x58,0x02, | ||
173 | 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D,0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E, | ||
174 | 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F,0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F, | ||
175 | 0x00,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01,0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03, | ||
176 | 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04,0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06, | ||
177 | 0x00,0x03, | ||
178 | 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00,0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01, | ||
179 | 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02,0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03, | ||
180 | 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05,0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06, | ||
181 | 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07,0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08, | ||
182 | 0xFF,0xFF | ||
183 | }; | ||
184 | |||
185 | static const UCHAR SiS_Part2CLVX_4[] = { /* PAL */ | ||
186 | 0x58,0x02, | ||
187 | 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D, | ||
188 | 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D, | ||
189 | 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E, | ||
190 | 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04, | ||
191 | 0x00,0x03, | ||
192 | 0x08,0x12,0x08,0x7E,0x07,0x12,0x09,0x7E,0x06,0x12,0x0A,0x7E,0x05,0x11,0x0B,0x7F, | ||
193 | 0x04,0x11,0x0C,0x7F,0x03,0x11,0x0C,0x00,0x03,0x10,0x0D,0x00,0x02,0x0F,0x0E,0x01, | ||
194 | 0x01,0x0F,0x0F,0x01,0x01,0x0E,0x0F,0x02,0x00,0x0D,0x10,0x03,0x7F,0x0C,0x11,0x04, | ||
195 | 0x7F,0x0C,0x11,0x04,0x7F,0x0B,0x11,0x05,0x7E,0x0A,0x12,0x06,0x7E,0x09,0x12,0x07, | ||
196 | 0x40,0x02, | ||
197 | 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D, | ||
198 | 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C, | ||
199 | 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F, | ||
200 | 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02, | ||
201 | 0xFF,0xFF | ||
202 | }; | ||
203 | |||
204 | static const UCHAR SiS_Part2CLVX_5[] = { /* 750p */ | ||
205 | 0x00,0x03, | ||
206 | 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D, | ||
207 | 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D, | ||
208 | 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E, | ||
209 | 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04, | ||
210 | 0xFF,0xFF | ||
211 | }; | ||
212 | |||
213 | static const UCHAR SiS_Part2CLVX_6[] = { /* 1080i */ | ||
214 | 0x00,0x04, | ||
215 | 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D, | ||
216 | 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C, | ||
217 | 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F, | ||
218 | 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02, | ||
219 | 0xFF,0xFF, | ||
220 | }; | ||
221 | |||
222 | #ifdef SIS315H | ||
223 | /* 661 et al LCD data structure (2.03.00) */ | ||
224 | static const UCHAR SiS_LCDStruct661[] = { | ||
225 | /* 1024x768 */ | ||
226 | /* type|CR37| HDE | VDE | HT | VT | hss | hse */ | ||
227 | 0x02,0xC0,0x00,0x04,0x00,0x03,0x40,0x05,0x26,0x03,0x10,0x00,0x88, | ||
228 | 0x00,0x02,0x00,0x06,0x00,0x41,0x5A,0x64,0x00,0x00,0x00,0x00,0x04, | ||
229 | /* | vss | vse |clck| clock |CRT2DataP|CRT2DataP|idx */ | ||
230 | /* VESA non-VESA noscale */ | ||
231 | /* 1280x1024 */ | ||
232 | 0x03,0xC0,0x00,0x05,0x00,0x04,0x98,0x06,0x2A,0x04,0x30,0x00,0x70, | ||
233 | 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x08, | ||
234 | /* 1400x1050 */ | ||
235 | 0x09,0x20,0x78,0x05,0x1A,0x04,0x98,0x06,0x2A,0x04,0x18,0x00,0x38, | ||
236 | 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x09, | ||
237 | /* 1600x1200 */ | ||
238 | 0x0B,0xE0,0x40,0x06,0xB0,0x04,0x70,0x08,0xE2,0x04,0x40,0x00,0xC0, | ||
239 | 0x00,0x01,0x00,0x03,0x00,0xA2,0x70,0x24,0x00,0x00,0x00,0x00,0x0A, | ||
240 | /* 1280x768 (_2) */ | ||
241 | 0x0A,0xE0,0x00,0x05,0x00,0x03,0x7C,0x06,0x26,0x03,0x30,0x00,0x70, | ||
242 | 0x00,0x03,0x00,0x06,0x00,0x4D,0xC8,0x48,0x00,0x00,0x00,0x00,0x06, | ||
243 | /* 1280x720 */ | ||
244 | 0x0E,0xE0,0x00,0x05,0xD0,0x02,0x80,0x05,0x26,0x03,0x10,0x00,0x20, | ||
245 | 0x00,0x01,0x00,0x06,0x00,0x45,0x9C,0x62,0x00,0x00,0x00,0x00,0x05, | ||
246 | /* 1280x800 (_2) */ | ||
247 | 0x0C,0xE0,0x00,0x05,0x20,0x03,0x10,0x06,0x2C,0x03,0x30,0x00,0x70, | ||
248 | 0x00,0x04,0x00,0x03,0x00,0x49,0xCE,0x1E,0x00,0x00,0x00,0x00,0x09, | ||
249 | /* 1680x1050 */ | ||
250 | 0x0D,0xE0,0x90,0x06,0x1A,0x04,0x6C,0x07,0x2A,0x04,0x1A,0x00,0x4C, | ||
251 | 0x00,0x03,0x00,0x06,0x00,0x79,0xBE,0x44,0x00,0x00,0x00,0x00,0x06, | ||
252 | }; | ||
253 | #endif | ||
254 | |||
255 | #ifdef SIS300 | ||
256 | static UCHAR SiS300_TrumpionData[7][80] = { | ||
257 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, | ||
258 | 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23, | ||
259 | 0x00,0x00,0x03,0x28,0x03,0x10,0x05,0x08,0x40,0x10,0x00,0x10,0x04,0x23,0x00,0x23, | ||
260 | 0x03,0x11,0x60,0xBC,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x09,0x04,0x04,0x05, | ||
261 | 0x04,0x0C,0x09,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5A,0x01,0xBE,0x01,0x00 }, | ||
262 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x27,0x00,0x80,0x02, | ||
263 | 0x20,0x03,0x07,0x00,0x5E,0x01,0x0D,0x02,0x60,0x0C,0x30,0x11,0x00,0x00,0x04,0x23, | ||
264 | 0x00,0x00,0x03,0x80,0x03,0x28,0x06,0x08,0x40,0x11,0x00,0x11,0x04,0x23,0x00,0x23, | ||
265 | 0x03,0x11,0x60,0x90,0x01,0xFF,0x0F,0xF4,0x19,0x01,0x00,0x05,0x01,0x00,0x04,0x05, | ||
266 | 0x04,0x0C,0x02,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEC,0x57,0x01,0xBE,0x01,0x00 }, | ||
267 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02, | ||
268 | 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23, | ||
269 | 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23, | ||
270 | 0x03,0x11,0x60,0xD9,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05, | ||
271 | 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x59,0x01,0xBE,0x01,0x00 }, | ||
272 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02, | ||
273 | 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23, | ||
274 | 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23, | ||
275 | 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05, | ||
276 | 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 }, | ||
277 | { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, | ||
278 | 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23, | ||
279 | 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23, | ||
280 | 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05, | ||
281 | 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 }, | ||
282 | { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03, | ||
283 | 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D, | ||
284 | 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D, | ||
285 | 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B, | ||
286 | 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 }, | ||
287 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04, | ||
288 | 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23, | ||
289 | 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23, | ||
290 | 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01, | ||
291 | 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 } | ||
292 | }; | ||
293 | #endif | ||
294 | |||
295 | void SiS_UnLockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
296 | void SiS_LockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
297 | void SiS_EnableCRT2(SiS_Private *SiS_Pr); | ||
298 | USHORT SiS_GetRatePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, PSIS_HW_INFO HwInfo); | ||
299 | void SiS_WaitRetrace1(SiS_Private *SiS_Pr); | ||
300 | BOOLEAN SiS_IsDualEdge(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
301 | BOOLEAN SiS_IsVAMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
302 | void SiS_SetChrontelGPIO(SiS_Private *SiS_Pr, USHORT myvbinfo); | ||
303 | void SiS_GetVBInfo(SiS_Private *SiS_Pr, USHORT ModeNo, | ||
304 | USHORT ModeIdIndex, PSIS_HW_INFO HwInfo, | ||
305 | int checkcrt2mode); | ||
306 | void SiS_SetYPbPr(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
307 | void SiS_SetTVMode(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, PSIS_HW_INFO HwInfo); | ||
308 | void SiS_GetLCDResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, PSIS_HW_INFO HwInfo); | ||
309 | USHORT SiS_GetVCLK2Ptr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, | ||
310 | USHORT RefreshRateTableIndex, PSIS_HW_INFO HwInfo); | ||
311 | USHORT SiS_GetResInfo(SiS_Private *SiS_Pr,USHORT ModeNo,USHORT ModeIdIndex); | ||
312 | void SiS_DisableBridge(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
313 | void SiS_EnableBridge(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
314 | BOOLEAN SiS_SetCRT2Group(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, USHORT ModeNo); | ||
315 | void SiS_SiS30xBLOn(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
316 | void SiS_SiS30xBLOff(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
317 | |||
318 | void SiS_SetCH700x(SiS_Private *SiS_Pr, USHORT tempax); | ||
319 | USHORT SiS_GetCH700x(SiS_Private *SiS_Pr, USHORT tempax); | ||
320 | void SiS_SetCH701x(SiS_Private *SiS_Pr, USHORT tempax); | ||
321 | USHORT SiS_GetCH701x(SiS_Private *SiS_Pr, USHORT tempax); | ||
322 | void SiS_SetCH70xx(SiS_Private *SiS_Pr, USHORT tempax); | ||
323 | USHORT SiS_GetCH70xx(SiS_Private *SiS_Pr, USHORT tempax); | ||
324 | void SiS_SetCH70xxANDOR(SiS_Private *SiS_Pr, USHORT tempax,USHORT tempbh); | ||
325 | #ifdef SIS315H | ||
326 | static void SiS_Chrontel701xOn(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
327 | static void SiS_Chrontel701xOff(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
328 | static void SiS_ChrontelInitTVVSync(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
329 | static void SiS_ChrontelDoSomething1(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
330 | void SiS_Chrontel701xBLOn(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); | ||
331 | void SiS_Chrontel701xBLOff(SiS_Private *SiS_Pr); | ||
332 | #endif /* 315 */ | ||
333 | |||
334 | #ifdef SIS300 | ||
335 | #if 0 | ||
336 | static void SiS_SetTrumpReg(SiS_Private *SiS_Pr, USHORT tempbx); | ||
337 | static USHORT SiS_GetTrumpReg(SiS_Private *SiS_Pr, USHORT tempbx); | ||
338 | #endif | ||
339 | static BOOLEAN SiS_SetTrumpionBlock(SiS_Private *SiS_Pr, UCHAR *dataptr); | ||
340 | #endif | ||
341 | |||
342 | void SiS_DDC2Delay(SiS_Private *SiS_Pr, USHORT delaytime); | ||
343 | USHORT SiS_ReadDDC1Bit(SiS_Private *SiS_Pr); | ||
344 | USHORT SiS_HandleDDC(SiS_Private *SiS_Pr, ULONG VBFlags, int VGAEngine, | ||
345 | USHORT adaptnum, USHORT DDCdatatype, UCHAR *buffer); | ||
346 | #ifdef LINUX_XF86 | ||
347 | USHORT SiS_SenseLCDDDC(SiS_Private *SiS_Pr, SISPtr pSiS); | ||
348 | USHORT SiS_SenseVGA2DDC(SiS_Private *SiS_Pr, SISPtr pSiS); | ||
349 | #endif | ||
350 | |||
351 | static void SiS_SetSwitchDDC2(SiS_Private *SiS_Pr); | ||
352 | static USHORT SiS_SetStart(SiS_Private *SiS_Pr); | ||
353 | static USHORT SiS_SetStop(SiS_Private *SiS_Pr); | ||
354 | static USHORT SiS_SetSCLKLow(SiS_Private *SiS_Pr); | ||
355 | static USHORT SiS_SetSCLKHigh(SiS_Private *SiS_Pr); | ||
356 | static USHORT SiS_ReadDDC2Data(SiS_Private *SiS_Pr, USHORT tempax); | ||
357 | static USHORT SiS_WriteDDC2Data(SiS_Private *SiS_Pr, USHORT tempax); | ||
358 | static USHORT SiS_CheckACK(SiS_Private *SiS_Pr); | ||
359 | static USHORT SiS_InitDDCRegs(SiS_Private *SiS_Pr, ULONG VBFlags, int VGAEngine, | ||
360 | USHORT adaptnum, USHORT DDCdatatype, BOOLEAN checkcr32); | ||
361 | static USHORT SiS_WriteDABDDC(SiS_Private *SiS_Pr); | ||
362 | static USHORT SiS_PrepareReadDDC(SiS_Private *SiS_Pr); | ||
363 | static USHORT SiS_PrepareDDC(SiS_Private *SiS_Pr); | ||
364 | static void SiS_SendACK(SiS_Private *SiS_Pr, USHORT yesno); | ||
365 | static USHORT SiS_DoProbeDDC(SiS_Private *SiS_Pr); | ||
366 | static USHORT SiS_ProbeDDC(SiS_Private *SiS_Pr); | ||
367 | static USHORT SiS_ReadDDC(SiS_Private *SiS_Pr, USHORT DDCdatatype, UCHAR *buffer); | ||
368 | |||
369 | #ifdef SIS315H | ||
370 | static void SiS_OEM310Setting(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, | ||
371 | USHORT ModeNo,USHORT ModeIdIndex, USHORT RRTI); | ||
372 | static void SiS_OEM661Setting(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, | ||
373 | USHORT ModeNo,USHORT ModeIdIndex, USHORT RRTI); | ||
374 | static void SiS_FinalizeLCD(SiS_Private *, USHORT, USHORT, PSIS_HW_INFO); | ||
375 | #endif | ||
376 | #ifdef SIS300 | ||
377 | static void SiS_OEM300Setting(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, | ||
378 | USHORT ModeNo, USHORT ModeIdIndex, USHORT RefTabindex); | ||
379 | static void SetOEMLCDData2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, | ||
380 | USHORT ModeNo, USHORT ModeIdIndex,USHORT RefTableIndex); | ||
381 | #endif | ||
382 | |||
383 | extern void SiS_SetReg(SISIOADDRESS, USHORT, USHORT); | ||
384 | extern void SiS_SetRegByte(SISIOADDRESS, USHORT); | ||
385 | extern void SiS_SetRegShort(SISIOADDRESS, USHORT); | ||
386 | extern void SiS_SetRegLong(SISIOADDRESS, ULONG); | ||
387 | extern UCHAR SiS_GetReg(SISIOADDRESS, USHORT); | ||
388 | extern UCHAR SiS_GetRegByte(SISIOADDRESS); | ||
389 | extern USHORT SiS_GetRegShort(SISIOADDRESS); | ||
390 | extern ULONG SiS_GetRegLong(SISIOADDRESS); | ||
391 | extern void SiS_SetRegANDOR(SISIOADDRESS, USHORT, USHORT, USHORT); | ||
392 | extern void SiS_SetRegOR(SISIOADDRESS, USHORT, USHORT); | ||
393 | extern void SiS_SetRegAND(SISIOADDRESS, USHORT, USHORT); | ||
394 | extern void SiS_DisplayOff(SiS_Private *SiS_Pr); | ||
395 | extern void SiS_DisplayOn(SiS_Private *SiS_Pr); | ||
396 | extern BOOLEAN SiS_SearchModeID(SiS_Private *, USHORT *, USHORT *); | ||
397 | extern UCHAR SiS_GetModePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); | ||
398 | extern USHORT SiS_GetColorDepth(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); | ||
399 | extern USHORT SiS_GetOffset(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, | ||
400 | USHORT RefreshRateTableIndex, PSIS_HW_INFO HwInfo); | ||
401 | extern void SiS_LoadDAC(SiS_Private *SiS_Pr, PSIS_HW_INFO, USHORT ModeNo, | ||
402 | USHORT ModeIdIndex); | ||
403 | extern void SiS_CalcLCDACRT1Timing(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); | ||
404 | #ifdef LINUX_XF86 | ||
405 | extern void SiS_MakeClockRegs(ScrnInfoPtr pScrn, int clock, UCHAR *p2b, UCHAR *p2c); | ||
406 | extern int SiS_FindPanelFromDB(SISPtr pSiS, USHORT panelvendor, USHORT panelproduct, | ||
407 | int *maxx, int *maxy, int *prefx, int *prefy); | ||
408 | #endif | ||
409 | |||
410 | #endif | ||