GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / drivers / video / sis / init301.h
blobd151a91e519c10b67799aab6cd575145dc22f329
1 /* $XFree86$ */
2 /* $XdotOrg$ */
3 /*
4 * Data and prototypes for init301.c
6 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
8 * If distributed as part of the Linux kernel, the following license terms
9 * apply:
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
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
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.
49 * Author: Thomas Winischhofer <thomas@winischhofer.net>
53 #ifndef _INIT301_H_
54 #define _INIT301_H_
56 #include "osdef.h"
57 #include "initdef.h"
59 #ifdef SIS_XORG_XF86
60 #include "sis.h"
61 #include "sis_regs.h"
62 #endif
64 #ifdef SIS_LINUX_KERNEL
65 #include "vgatypes.h"
66 #include "vstruct.h"
67 #ifdef SIS_CP
68 #undef SIS_CP
69 #endif
70 #include <linux/types.h>
71 #include <asm/io.h>
72 #include <linux/fb.h>
73 #include "sis.h"
74 #include <video/sisfb.h>
75 #endif
77 static const unsigned char SiS_YPbPrTable[3][64] = {
79 0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c,
80 0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a,
81 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b,
82 0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17,
83 0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02,
84 0x03,0x0a,0x65,0x9d /*0x8d*/,0x08,0x92,0x8f,0x40,
85 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x53 /*0x50*/,
86 0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00
89 0x33,0x06,0x06,0x09,0x0b,0x0c,0x0c,0x0c,
90 0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a,
91 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
92 0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13,
93 0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8,
94 0x51,0x5e,0x60,0x49,0x7d,0x92,0x0f,0x40,
95 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4e,
96 0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00
99 0x23,0x2d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
100 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
101 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
102 0xed,0x50,0x70,0x9f,0x16,0x59,0x60,0x13,
103 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
104 0x4b,0x4b,0x6f,0x2f,0x63,0x92,0x0f,0x40,
105 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x73,
106 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
110 static const unsigned char SiS_TVPhase[] =
112 0x21,0xED,0xBA,0x08, /* 0x00 SiS_NTSCPhase */
113 0x2A,0x05,0xE3,0x00, /* 0x01 SiS_PALPhase */
114 0x21,0xE4,0x2E,0x9B, /* 0x02 SiS_PALMPhase */
115 0x21,0xF4,0x3E,0xBA, /* 0x03 SiS_PALNPhase */
116 0x1E,0x8B,0xA2,0xA7,
117 0x1E,0x83,0x0A,0xE0, /* 0x05 SiS_SpecialPhaseM */
118 0x00,0x00,0x00,0x00,
119 0x00,0x00,0x00,0x00,
120 0x21,0xF0,0x7B,0xD6, /* 0x08 SiS_NTSCPhase2 */
121 0x2A,0x09,0x86,0xE9, /* 0x09 SiS_PALPhase2 */
122 0x21,0xE6,0xEF,0xA4, /* 0x0a SiS_PALMPhase2 */
123 0x21,0xF6,0x94,0x46, /* 0x0b SiS_PALNPhase2 */
124 0x1E,0x8B,0xA2,0xA7,
125 0x1E,0x83,0x0A,0xE0, /* 0x0d SiS_SpecialPhaseM */
126 0x00,0x00,0x00,0x00,
127 0x00,0x00,0x00,0x00,
128 0x1e,0x8c,0x5c,0x7a, /* 0x10 SiS_SpecialPhase */
129 0x25,0xd4,0xfd,0x5e /* 0x11 SiS_SpecialPhaseJ */
132 static const unsigned char SiS_HiTVGroup3_1[] = {
133 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
134 0xb1, 0x41, 0x62, 0x62, 0xff, 0xf4, 0x45, 0xa6,
135 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
136 0xac, 0xda, 0x60, 0xfe, 0x6a, 0x9a, 0x06, 0x10,
137 0xd1, 0x04, 0x18, 0x0a, 0xff, 0x80, 0x00, 0x80,
138 0x3b, 0x77, 0x00, 0xef, 0xe0, 0x10, 0xb0, 0xe0,
139 0x10, 0x4f, 0x0f, 0x0f, 0x05, 0x0f, 0x08, 0x6e,
140 0x1a, 0x1f, 0x25, 0x2a, 0x4c, 0xaa, 0x01
143 static const unsigned char SiS_HiTVGroup3_2[] = {
144 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
145 0x54, 0x41, 0xe7, 0xe7, 0xff, 0xf4, 0x45, 0xa6,
146 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
147 0xac, 0x6a, 0x60, 0x2b, 0x52, 0xcd, 0x61, 0x10,
148 0x51, 0x04, 0x18, 0x0a, 0x1f, 0x80, 0x00, 0x80,
149 0xff, 0xa4, 0x04, 0x2b, 0x94, 0x21, 0x72, 0x94,
150 0x26, 0x05, 0x01, 0x0f, 0xed, 0x0f, 0x0a, 0x64,
151 0x18, 0x1d, 0x23, 0x28, 0x4c, 0xaa, 0x01
154 /* 301C / 302ELV extended Part2 TV registers (4 tap scaler) */
156 static const unsigned char SiS_Part2CLVX_1[] = {
157 0x00,0x00,
158 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
159 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
160 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
161 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
164 static const unsigned char SiS_Part2CLVX_2[] = {
165 0x00,0x00,
166 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
167 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
168 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
169 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
172 static const unsigned char SiS_Part2CLVX_3[] = { /* NTSC, 525i, 525p */
173 0xE0,0x01,
174 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D,0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D,
175 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C,0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C,
176 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E,
177 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00,0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02,
178 0x58,0x02,
179 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D,0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E,
180 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F,0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F,
181 0x00,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01,0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03,
182 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04,0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06,
183 0x00,0x03,
184 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00,0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01,
185 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02,0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03,
186 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05,0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06,
187 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07,0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08,
188 0xFF,0xFF
191 static const unsigned char SiS_Part2CLVX_4[] = { /* PAL */
192 0x58,0x02,
193 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
194 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
195 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
196 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
197 0x00,0x03,
198 0x08,0x12,0x08,0x7E,0x07,0x12,0x09,0x7E,0x06,0x12,0x0A,0x7E,0x05,0x11,0x0B,0x7F,
199 0x04,0x11,0x0C,0x7F,0x03,0x11,0x0C,0x00,0x03,0x10,0x0D,0x00,0x02,0x0F,0x0E,0x01,
200 0x01,0x0F,0x0F,0x01,0x01,0x0E,0x0F,0x02,0x00,0x0D,0x10,0x03,0x7F,0x0C,0x11,0x04,
201 0x7F,0x0C,0x11,0x04,0x7F,0x0B,0x11,0x05,0x7E,0x0A,0x12,0x06,0x7E,0x09,0x12,0x07,
202 0x40,0x02,
203 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
204 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
205 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
206 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
207 0xFF,0xFF
210 static const unsigned char SiS_Part2CLVX_5[] = { /* 750p */
211 0x00,0x03,
212 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
213 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
214 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
215 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
216 0xFF,0xFF
219 static const unsigned char SiS_Part2CLVX_6[] = { /* 1080i */
220 0x00,0x04,
221 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
222 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
223 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
224 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
225 0xFF,0xFF,
228 #ifdef SIS315H
229 /* 661 et al LCD data structure (2.03.00) */
230 static const unsigned char SiS_LCDStruct661[] = {
231 /* 1024x768 */
232 /* type|CR37| HDE | VDE | HT | VT | hss | hse */
233 0x02,0xC0,0x00,0x04,0x00,0x03,0x40,0x05,0x26,0x03,0x10,0x00,0x88,
234 0x00,0x02,0x00,0x06,0x00,0x41,0x5A,0x64,0x00,0x00,0x00,0x00,0x04,
235 /* | vss | vse |clck| clock |CRT2DataP|CRT2DataP|idx */
236 /* VESA non-VESA noscale */
237 /* 1280x1024 */
238 0x03,0xC0,0x00,0x05,0x00,0x04,0x98,0x06,0x2A,0x04,0x30,0x00,0x70,
239 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x08,
240 /* 1400x1050 */
241 0x09,0x20,0x78,0x05,0x1A,0x04,0x98,0x06,0x2A,0x04,0x18,0x00,0x38,
242 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x09,
243 /* 1600x1200 */
244 0x0B,0xE0,0x40,0x06,0xB0,0x04,0x70,0x08,0xE2,0x04,0x40,0x00,0xC0,
245 0x00,0x01,0x00,0x03,0x00,0xA2,0x70,0x24,0x00,0x00,0x00,0x00,0x0A,
246 /* 1280x768 (_2) */
247 0x0A,0xE0,0x00,0x05,0x00,0x03,0x7C,0x06,0x26,0x03,0x30,0x00,0x70,
248 0x00,0x03,0x00,0x06,0x00,0x4D,0xC8,0x48,0x00,0x00,0x00,0x00,0x06,
249 /* 1280x720 */
250 0x0E,0xE0,0x00,0x05,0xD0,0x02,0x80,0x05,0x26,0x03,0x10,0x00,0x20,
251 0x00,0x01,0x00,0x06,0x00,0x45,0x9C,0x62,0x00,0x00,0x00,0x00,0x05,
252 /* 1280x800 (_2) */
253 0x0C,0xE0,0x00,0x05,0x20,0x03,0x10,0x06,0x2C,0x03,0x30,0x00,0x70,
254 0x00,0x04,0x00,0x03,0x00,0x49,0xCE,0x1E,0x00,0x00,0x00,0x00,0x09,
255 /* 1680x1050 */
256 0x0D,0xE0,0x90,0x06,0x1A,0x04,0x6C,0x07,0x2A,0x04,0x1A,0x00,0x4C,
257 0x00,0x03,0x00,0x06,0x00,0x79,0xBE,0x44,0x00,0x00,0x00,0x00,0x06,
258 /* 1280x800_3 */
259 0x0C,0xE0,0x00,0x05,0x20,0x03,0xAA,0x05,0x2E,0x03,0x30,0x00,0x50,
260 0x00,0x04,0x00,0x03,0x00,0x47,0xA9,0x10,0x00,0x00,0x00,0x00,0x07,
261 /* 800x600 */
262 0x01,0xC0,0x20,0x03,0x58,0x02,0x20,0x04,0x74,0x02,0x2A,0x00,0x80,
263 0x00,0x06,0x00,0x04,0x00,0x28,0x63,0x4B,0x00,0x00,0x00,0x00,0x00,
264 /* 1280x854 */
265 0x08,0xE0,0x00,0x05,0x56,0x03,0x80,0x06,0x5d,0x03,0x10,0x00,0x70,
266 0x00,0x01,0x00,0x03,0x00,0x54,0x75,0x13,0x00,0x00,0x00,0x00,0x08
268 #endif
270 #ifdef SIS300
271 static unsigned char SiS300_TrumpionData[14][80] = {
272 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
273 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23,
274 0x00,0x00,0x03,0x28,0x03,0x10,0x05,0x08,0x40,0x10,0x00,0x10,0x04,0x23,0x00,0x23,
275 0x03,0x11,0x60,0xBC,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x09,0x04,0x04,0x05,
276 0x04,0x0C,0x09,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5A,0x01,0xBE,0x01,0x00 },
277 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x27,0x00,0x80,0x02,
278 0x20,0x03,0x07,0x00,0x5E,0x01,0x0D,0x02,0x60,0x0C,0x30,0x11,0x00,0x00,0x04,0x23,
279 0x00,0x00,0x03,0x80,0x03,0x28,0x06,0x08,0x40,0x11,0x00,0x11,0x04,0x23,0x00,0x23,
280 0x03,0x11,0x60,0x90,0x01,0xFF,0x0F,0xF4,0x19,0x01,0x00,0x05,0x01,0x00,0x04,0x05,
281 0x04,0x0C,0x02,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEC,0x57,0x01,0xBE,0x01,0x00 },
282 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02,
283 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
284 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
285 0x03,0x11,0x60,0xD9,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
286 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x59,0x01,0xBE,0x01,0x00 },
287 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
288 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
289 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
290 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
291 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
292 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
293 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
294 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
295 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
296 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
297 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
298 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
299 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
300 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
301 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
302 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
303 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
304 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
305 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
306 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
307 /* variant 2 */
308 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
309 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
310 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
311 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
312 0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
313 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
314 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
315 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
316 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
317 0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
318 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02,
319 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
320 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
321 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
322 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
323 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
324 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
325 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
326 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
327 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
328 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
329 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
330 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
331 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
332 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
333 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
334 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
335 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
336 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
337 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
338 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
339 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
340 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
341 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
342 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 }
344 #endif
346 void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr);
347 #ifndef SIS_LINUX_KERNEL
348 void SiS_LockCRT2(struct SiS_Private *SiS_Pr);
349 #endif
350 void SiS_EnableCRT2(struct SiS_Private *SiS_Pr);
351 unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
352 void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr);
353 bool SiS_IsDualEdge(struct SiS_Private *SiS_Pr);
354 bool SiS_IsVAMode(struct SiS_Private *SiS_Pr);
355 void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
356 unsigned short ModeIdIndex, int checkcrt2mode);
357 void SiS_SetYPbPr(struct SiS_Private *SiS_Pr);
358 void SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
359 unsigned short ModeIdIndex);
360 void SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
361 unsigned short ModeIdIndex);
362 unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
363 unsigned short RefreshRateTableIndex);
364 unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex);
365 void SiS_DisableBridge(struct SiS_Private *SiS_Pr);
366 #ifndef SIS_LINUX_KERNEL
367 void SiS_EnableBridge(struct SiS_Private *SiS_Pr);
368 #endif
369 bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
370 void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr);
371 void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr);
373 void SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
374 unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax);
375 void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
376 unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax);
377 #ifndef SIS_LINUX_KERNEL
378 void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
379 unsigned short SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempax);
380 #endif
381 void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg,
382 unsigned char orval,unsigned short andval);
383 #ifdef SIS315H
384 static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
385 static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
386 static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
387 static void SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr);
388 void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr);
389 void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr);
390 #endif /* 315 */
392 #ifdef SIS300
393 static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
394 void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo);
395 #endif
397 void SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime);
398 unsigned short SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr);
399 unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine,
400 unsigned short adaptnum, unsigned short DDCdatatype,
401 unsigned char *buffer, unsigned int VBFlags2);
403 #ifdef SIS_XORG_XF86
404 unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
405 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
406 bool checkcr32, unsigned int VBFlags2);
407 unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
408 unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
409 unsigned char *buffer);
410 #else
411 static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
412 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
413 bool checkcr32, unsigned int VBFlags2);
414 static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
415 static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
416 unsigned char *buffer);
417 #endif
418 static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
419 static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
420 static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
421 static unsigned short SiS_SetSCLKLow(struct SiS_Private *SiS_Pr);
422 static unsigned short SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr);
423 static unsigned short SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr);
424 static unsigned short SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax);
425 static unsigned short SiS_CheckACK(struct SiS_Private *SiS_Pr);
426 static unsigned short SiS_WriteDABDDC(struct SiS_Private *SiS_Pr);
427 static unsigned short SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr);
428 static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr);
429 static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
430 static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
432 #ifdef SIS300
433 static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
434 unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex);
435 static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
436 unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex);
437 #endif
438 #ifdef SIS315H
439 static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
440 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
441 static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr,
442 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
443 static void SiS_FinalizeLCD(struct SiS_Private *, unsigned short, unsigned short);
444 #endif
446 extern void SiS_SetReg(SISIOADDRESS, unsigned short, unsigned short);
447 extern void SiS_SetRegByte(SISIOADDRESS, unsigned short);
448 extern void SiS_SetRegShort(SISIOADDRESS, unsigned short);
449 extern void SiS_SetRegLong(SISIOADDRESS, unsigned int);
450 extern unsigned char SiS_GetReg(SISIOADDRESS, unsigned short);
451 extern unsigned char SiS_GetRegByte(SISIOADDRESS);
452 extern unsigned short SiS_GetRegShort(SISIOADDRESS);
453 extern unsigned int SiS_GetRegLong(SISIOADDRESS);
454 extern void SiS_SetRegANDOR(SISIOADDRESS, unsigned short, unsigned short, unsigned short);
455 extern void SiS_SetRegOR(SISIOADDRESS, unsigned short, unsigned short);
456 extern void SiS_SetRegAND(SISIOADDRESS, unsigned short, unsigned short);
457 extern void SiS_DisplayOff(struct SiS_Private *SiS_Pr);
458 extern void SiS_DisplayOn(struct SiS_Private *SiS_Pr);
459 extern bool SiS_SearchModeID(struct SiS_Private *, unsigned short *, unsigned short *);
460 extern unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
461 unsigned short ModeIdIndex);
462 extern unsigned short SiS_GetModePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
463 extern unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
464 extern unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
465 unsigned short RefreshRateTableIndex);
466 extern void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
467 unsigned short ModeIdIndex);
468 extern void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
469 unsigned short ModeIdIndex);
470 extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
471 extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
472 extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
473 #ifdef SIS300
474 extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx,
475 unsigned short *tempcl);
476 extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl);
477 extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
478 #ifdef SIS_LINUX_KERNEL
479 extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
480 extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg);
481 #endif
482 #endif
484 #endif