blob: 51d99222375dd9034c94c5a66eba731f60299e05 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/* $XFree86$ */
2/* $XdotOrg$ */
3/*
4 * Data and prototypes for init301.c
5 *
Thomas Winischhofer544393f2005-09-09 13:04:45 -07006 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 *
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
Thomas Winischhofer544393f2005-09-09 13:04:45 -070053#ifndef _INIT301_H_
54#define _INIT301_H_
Linus Torvalds1da177e2005-04-16 15:20:36 -070055
56#include "osdef.h"
57#include "initdef.h"
58
Thomas Winischhofer544393f2005-09-09 13:04:45 -070059#ifdef SIS_XORG_XF86
Linus Torvalds1da177e2005-04-16 15:20:36 -070060#include "sis.h"
61#include "sis_regs.h"
62#endif
63
Thomas Winischhofer544393f2005-09-09 13:04:45 -070064#ifdef SIS_LINUX_KERNEL
Linus Torvalds1da177e2005-04-16 15:20:36 -070065#include "vgatypes.h"
66#include "vstruct.h"
67#ifdef SIS_CP
68#undef SIS_CP
69#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070070#include <linux/types.h>
Thomas Winischhofer544393f2005-09-09 13:04:45 -070071#include <asm/io.h>
72#include <linux/fb.h>
Thomas Winischhofer544393f2005-09-09 13:04:45 -070073#include "sis.h"
Linus Torvalds1da177e2005-04-16 15:20:36 -070074#include <video/sisfb.h>
75#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070076
Thomas Winischhofer544393f2005-09-09 13:04:45 -070077static const unsigned char SiS_YPbPrTable[3][64] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070078 {
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
87 },
88 {
Thomas Winischhofer544393f2005-09-09 13:04:45 -070089 0x33,0x06,0x06,0x09,0x0b,0x0c,0x0c,0x0c,
Linus Torvalds1da177e2005-04-16 15:20:36 -070090 0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a,
91 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
Thomas Winischhofer544393f2005-09-09 13:04:45 -070092 0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13,
Linus Torvalds1da177e2005-04-16 15:20:36 -070093 0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8,
Thomas Winischhofer544393f2005-09-09 13:04:45 -070094 0x51,0x5e,0x60,0x49,0x7d,0x92,0x0f,0x40,
95 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4e,
Linus Torvalds1da177e2005-04-16 15:20:36 -070096 0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00
97 },
98 {
Thomas Winischhofer544393f2005-09-09 13:04:45 -070099#if 0 /* OK, but sticks to left edge */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700100 0x13,0x1d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
101 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
102 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
103 0xed,0x50,0x70,0x9f,0x16,0x59,0x21 /*0x2b*/,0x13,
104 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
105 0x4b,0x4b,0x65 /*0x6f*/,0x2f,0x63,0x92,0x0f,0x40,
106 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x27,
107 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
108#endif
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700109#if 1 /* Perfect */
110 0x23,0x2d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700111 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
112 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700113 0xed,0x50,0x70,0x9f,0x16,0x59,0x60,0x13,
114 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
115 0x4b,0x4b,0x6f,0x2f,0x63,0x92,0x0f,0x40,
116 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x73,
117 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
Linus Torvalds1da177e2005-04-16 15:20:36 -0700118#endif
119 }
120};
121
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700122static const unsigned char SiS_TVPhase[] =
123{
124 0x21,0xED,0xBA,0x08, /* 0x00 SiS_NTSCPhase */
125 0x2A,0x05,0xE3,0x00, /* 0x01 SiS_PALPhase */
126 0x21,0xE4,0x2E,0x9B, /* 0x02 SiS_PALMPhase */
127 0x21,0xF4,0x3E,0xBA, /* 0x03 SiS_PALNPhase */
128 0x1E,0x8B,0xA2,0xA7,
129 0x1E,0x83,0x0A,0xE0, /* 0x05 SiS_SpecialPhaseM */
130 0x00,0x00,0x00,0x00,
131 0x00,0x00,0x00,0x00,
132 0x21,0xF0,0x7B,0xD6, /* 0x08 SiS_NTSCPhase2 */
133 0x2A,0x09,0x86,0xE9, /* 0x09 SiS_PALPhase2 */
134 0x21,0xE6,0xEF,0xA4, /* 0x0a SiS_PALMPhase2 */
135 0x21,0xF6,0x94,0x46, /* 0x0b SiS_PALNPhase2 */
136 0x1E,0x8B,0xA2,0xA7,
137 0x1E,0x83,0x0A,0xE0, /* 0x0d SiS_SpecialPhaseM */
138 0x00,0x00,0x00,0x00,
139 0x00,0x00,0x00,0x00,
140 0x1e,0x8c,0x5c,0x7a, /* 0x10 SiS_SpecialPhase */
141 0x25,0xd4,0xfd,0x5e /* 0x11 SiS_SpecialPhaseJ */
142};
143
144static const unsigned char SiS_HiTVGroup3_1[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700145 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
146 0xb1, 0x41, 0x62, 0x62, 0xff, 0xf4, 0x45, 0xa6,
147 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
148 0xac, 0xda, 0x60, 0xfe, 0x6a, 0x9a, 0x06, 0x10,
149 0xd1, 0x04, 0x18, 0x0a, 0xff, 0x80, 0x00, 0x80,
150 0x3b, 0x77, 0x00, 0xef, 0xe0, 0x10, 0xb0, 0xe0,
151 0x10, 0x4f, 0x0f, 0x0f, 0x05, 0x0f, 0x08, 0x6e,
152 0x1a, 0x1f, 0x25, 0x2a, 0x4c, 0xaa, 0x01
153};
154
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700155static const unsigned char SiS_HiTVGroup3_2[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700156 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
157 0x54, 0x41, 0xe7, 0xe7, 0xff, 0xf4, 0x45, 0xa6,
158 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
159 0xac, 0x6a, 0x60, 0x2b, 0x52, 0xcd, 0x61, 0x10,
160 0x51, 0x04, 0x18, 0x0a, 0x1f, 0x80, 0x00, 0x80,
161 0xff, 0xa4, 0x04, 0x2b, 0x94, 0x21, 0x72, 0x94,
162 0x26, 0x05, 0x01, 0x0f, 0xed, 0x0f, 0x0a, 0x64,
163 0x18, 0x1d, 0x23, 0x28, 0x4c, 0xaa, 0x01
164};
165
166/* 301C / 302ELV extended Part2 TV registers (4 tap scaler) */
167
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700168static const unsigned char SiS_Part2CLVX_1[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700169 0x00,0x00,
170 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
171 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
172 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
173 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
174};
175
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700176static const unsigned char SiS_Part2CLVX_2[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700177 0x00,0x00,
178 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
179 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
180 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
181 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
182};
183
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700184static const unsigned char SiS_Part2CLVX_3[] = { /* NTSC, 525i, 525p */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700185 0xE0,0x01,
186 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D,0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D,
187 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C,0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C,
188 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E,
189 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00,0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02,
190 0x58,0x02,
191 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D,0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E,
192 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F,0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F,
193 0x00,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01,0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03,
194 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04,0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06,
195 0x00,0x03,
196 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00,0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01,
197 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02,0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03,
198 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05,0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06,
199 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07,0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08,
200 0xFF,0xFF
201};
202
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700203static const unsigned char SiS_Part2CLVX_4[] = { /* PAL */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700204 0x58,0x02,
205 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
206 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
207 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
208 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
209 0x00,0x03,
210 0x08,0x12,0x08,0x7E,0x07,0x12,0x09,0x7E,0x06,0x12,0x0A,0x7E,0x05,0x11,0x0B,0x7F,
211 0x04,0x11,0x0C,0x7F,0x03,0x11,0x0C,0x00,0x03,0x10,0x0D,0x00,0x02,0x0F,0x0E,0x01,
212 0x01,0x0F,0x0F,0x01,0x01,0x0E,0x0F,0x02,0x00,0x0D,0x10,0x03,0x7F,0x0C,0x11,0x04,
213 0x7F,0x0C,0x11,0x04,0x7F,0x0B,0x11,0x05,0x7E,0x0A,0x12,0x06,0x7E,0x09,0x12,0x07,
214 0x40,0x02,
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
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700222static const unsigned char SiS_Part2CLVX_5[] = { /* 750p */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700223 0x00,0x03,
224 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
225 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
226 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
227 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
228 0xFF,0xFF
229};
230
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700231static const unsigned char SiS_Part2CLVX_6[] = { /* 1080i */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700232 0x00,0x04,
233 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
234 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
235 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
236 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
237 0xFF,0xFF,
238};
239
240#ifdef SIS315H
241/* 661 et al LCD data structure (2.03.00) */
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700242static const unsigned char SiS_LCDStruct661[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700243 /* 1024x768 */
244/* type|CR37| HDE | VDE | HT | VT | hss | hse */
245 0x02,0xC0,0x00,0x04,0x00,0x03,0x40,0x05,0x26,0x03,0x10,0x00,0x88,
246 0x00,0x02,0x00,0x06,0x00,0x41,0x5A,0x64,0x00,0x00,0x00,0x00,0x04,
247 /* | vss | vse |clck| clock |CRT2DataP|CRT2DataP|idx */
248 /* VESA non-VESA noscale */
249 /* 1280x1024 */
250 0x03,0xC0,0x00,0x05,0x00,0x04,0x98,0x06,0x2A,0x04,0x30,0x00,0x70,
251 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x08,
252 /* 1400x1050 */
253 0x09,0x20,0x78,0x05,0x1A,0x04,0x98,0x06,0x2A,0x04,0x18,0x00,0x38,
254 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x09,
255 /* 1600x1200 */
256 0x0B,0xE0,0x40,0x06,0xB0,0x04,0x70,0x08,0xE2,0x04,0x40,0x00,0xC0,
257 0x00,0x01,0x00,0x03,0x00,0xA2,0x70,0x24,0x00,0x00,0x00,0x00,0x0A,
258 /* 1280x768 (_2) */
259 0x0A,0xE0,0x00,0x05,0x00,0x03,0x7C,0x06,0x26,0x03,0x30,0x00,0x70,
260 0x00,0x03,0x00,0x06,0x00,0x4D,0xC8,0x48,0x00,0x00,0x00,0x00,0x06,
261 /* 1280x720 */
262 0x0E,0xE0,0x00,0x05,0xD0,0x02,0x80,0x05,0x26,0x03,0x10,0x00,0x20,
263 0x00,0x01,0x00,0x06,0x00,0x45,0x9C,0x62,0x00,0x00,0x00,0x00,0x05,
264 /* 1280x800 (_2) */
265 0x0C,0xE0,0x00,0x05,0x20,0x03,0x10,0x06,0x2C,0x03,0x30,0x00,0x70,
266 0x00,0x04,0x00,0x03,0x00,0x49,0xCE,0x1E,0x00,0x00,0x00,0x00,0x09,
267 /* 1680x1050 */
268 0x0D,0xE0,0x90,0x06,0x1A,0x04,0x6C,0x07,0x2A,0x04,0x1A,0x00,0x4C,
269 0x00,0x03,0x00,0x06,0x00,0x79,0xBE,0x44,0x00,0x00,0x00,0x00,0x06,
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700270 /* 1280x800_3 */
271 0x0C,0xE0,0x00,0x05,0x20,0x03,0xAA,0x05,0x2E,0x03,0x30,0x00,0x50,
272 0x00,0x04,0x00,0x03,0x00,0x47,0xA9,0x10,0x00,0x00,0x00,0x00,0x07,
273 /* 800x600 */
274 0x01,0xC0,0x20,0x03,0x58,0x02,0x20,0x04,0x74,0x02,0x2A,0x00,0x80,
275 0x00,0x06,0x00,0x04,0x00,0x28,0x63,0x4B,0x00,0x00,0x00,0x00,0x00,
276 /* 1280x854 */
277 0x08,0xE0,0x00,0x05,0x56,0x03,0x80,0x06,0x5d,0x03,0x10,0x00,0x70,
278 0x00,0x01,0x00,0x03,0x00,0x54,0x75,0x13,0x00,0x00,0x00,0x00,0x08
Linus Torvalds1da177e2005-04-16 15:20:36 -0700279};
280#endif
281
282#ifdef SIS300
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700283static unsigned char SiS300_TrumpionData[14][80] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700284 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
285 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23,
286 0x00,0x00,0x03,0x28,0x03,0x10,0x05,0x08,0x40,0x10,0x00,0x10,0x04,0x23,0x00,0x23,
287 0x03,0x11,0x60,0xBC,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x09,0x04,0x04,0x05,
288 0x04,0x0C,0x09,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5A,0x01,0xBE,0x01,0x00 },
289 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x27,0x00,0x80,0x02,
290 0x20,0x03,0x07,0x00,0x5E,0x01,0x0D,0x02,0x60,0x0C,0x30,0x11,0x00,0x00,0x04,0x23,
291 0x00,0x00,0x03,0x80,0x03,0x28,0x06,0x08,0x40,0x11,0x00,0x11,0x04,0x23,0x00,0x23,
292 0x03,0x11,0x60,0x90,0x01,0xFF,0x0F,0xF4,0x19,0x01,0x00,0x05,0x01,0x00,0x04,0x05,
293 0x04,0x0C,0x02,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEC,0x57,0x01,0xBE,0x01,0x00 },
294 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02,
295 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
296 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
297 0x03,0x11,0x60,0xD9,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
298 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x59,0x01,0xBE,0x01,0x00 },
299 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
300 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
301 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
302 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
303 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
304 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
305 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
306 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
307 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
308 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
309 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
310 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
311 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
312 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
313 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
314 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
315 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
316 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
317 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700318 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
319 /* variant 2 */
320 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
321 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
322 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
323 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
324 0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
325 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
326 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
327 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
328 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
329 0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
330 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02,
331 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
332 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
333 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
334 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
335 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
336 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
337 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
338 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
339 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
340 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
341 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
342 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
343 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
344 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
345 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
346 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
347 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
348 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
349 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
350 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
351 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
352 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
353 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
354 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700355};
356#endif
357
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700358void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr);
359#ifndef SIS_LINUX_KERNEL
360void SiS_LockCRT2(struct SiS_Private *SiS_Pr);
361#endif
362void SiS_EnableCRT2(struct SiS_Private *SiS_Pr);
363unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
364void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr);
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800365bool SiS_IsDualEdge(struct SiS_Private *SiS_Pr);
366bool SiS_IsVAMode(struct SiS_Private *SiS_Pr);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700367void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
368 unsigned short ModeIdIndex, int checkcrt2mode);
369void SiS_SetYPbPr(struct SiS_Private *SiS_Pr);
370void SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
371 unsigned short ModeIdIndex);
372void SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
373 unsigned short ModeIdIndex);
374unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
375 unsigned short RefreshRateTableIndex);
376unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex);
377void SiS_DisableBridge(struct SiS_Private *SiS_Pr);
378#ifndef SIS_LINUX_KERNEL
379void SiS_EnableBridge(struct SiS_Private *SiS_Pr);
380#endif
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800381bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700382void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr);
383void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700384
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700385void SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
386unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax);
387void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
388unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax);
389#ifndef SIS_LINUX_KERNEL
390void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
391unsigned short SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempax);
392#endif
393void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg,
394 unsigned char orval,unsigned short andval);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700395#ifdef SIS315H
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700396static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
397static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
398static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
399static void SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr);
400void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr);
401void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700402#endif /* 315 */
403
404#ifdef SIS300
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800405static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700406void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700407#endif
408
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700409void SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime);
410unsigned short SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr);
411unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine,
412 unsigned short adaptnum, unsigned short DDCdatatype,
413 unsigned char *buffer, unsigned int VBFlags2);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700414
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700415#ifdef SIS_XORG_XF86
416unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
417 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800418 bool checkcr32, unsigned int VBFlags2);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700419unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
420unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
421 unsigned char *buffer);
422#else
423static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
424 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800425 bool checkcr32, unsigned int VBFlags2);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700426static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
427static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
428 unsigned char *buffer);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700429#endif
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700430static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
431static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
432static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
433static unsigned short SiS_SetSCLKLow(struct SiS_Private *SiS_Pr);
434static unsigned short SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr);
435static unsigned short SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr);
436static unsigned short SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax);
437static unsigned short SiS_CheckACK(struct SiS_Private *SiS_Pr);
438static unsigned short SiS_WriteDABDDC(struct SiS_Private *SiS_Pr);
439static unsigned short SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr);
440static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr);
441static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
442static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
443
Linus Torvalds1da177e2005-04-16 15:20:36 -0700444#ifdef SIS300
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700445static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
446 unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex);
447static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
448 unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex);
449#endif
450#ifdef SIS315H
451static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
452 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
453static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr,
454 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
455static void SiS_FinalizeLCD(struct SiS_Private *, unsigned short, unsigned short);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700456#endif
457
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700458extern void SiS_SetReg(SISIOADDRESS, unsigned short, unsigned short);
459extern void SiS_SetRegByte(SISIOADDRESS, unsigned short);
460extern void SiS_SetRegShort(SISIOADDRESS, unsigned short);
461extern void SiS_SetRegLong(SISIOADDRESS, unsigned int);
462extern unsigned char SiS_GetReg(SISIOADDRESS, unsigned short);
463extern unsigned char SiS_GetRegByte(SISIOADDRESS);
464extern unsigned short SiS_GetRegShort(SISIOADDRESS);
465extern unsigned int SiS_GetRegLong(SISIOADDRESS);
466extern void SiS_SetRegANDOR(SISIOADDRESS, unsigned short, unsigned short, unsigned short);
467extern void SiS_SetRegOR(SISIOADDRESS, unsigned short, unsigned short);
468extern void SiS_SetRegAND(SISIOADDRESS, unsigned short, unsigned short);
469extern void SiS_DisplayOff(struct SiS_Private *SiS_Pr);
470extern void SiS_DisplayOn(struct SiS_Private *SiS_Pr);
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800471extern bool SiS_SearchModeID(struct SiS_Private *, unsigned short *, unsigned short *);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700472extern unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
473 unsigned short ModeIdIndex);
474extern unsigned short SiS_GetModePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
475extern unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
476extern unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
477 unsigned short RefreshRateTableIndex);
478extern void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
479 unsigned short ModeIdIndex);
480extern void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
481 unsigned short ModeIdIndex);
482extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
483extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
484extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
485#ifdef SIS300
486extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx,
487 unsigned short *tempcl);
488extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl);
489extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
490#ifdef SIS_LINUX_KERNEL
491extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
492extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg);
493#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -0700494#endif
495
496#endif