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