blob: 267715204b0f56e2a87518f2d8eac3b666bfa26a [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
Linus Torvalds1da177e2005-04-16 15:20:36 -070059#include "vgatypes.h"
60#include "vstruct.h"
61#ifdef SIS_CP
62#undef SIS_CP
63#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070064#include <linux/types.h>
Thomas Winischhofer544393f2005-09-09 13:04:45 -070065#include <asm/io.h>
66#include <linux/fb.h>
Thomas Winischhofer544393f2005-09-09 13:04:45 -070067#include "sis.h"
Linus Torvalds1da177e2005-04-16 15:20:36 -070068#include <video/sisfb.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070069
Thomas Winischhofer544393f2005-09-09 13:04:45 -070070static const unsigned char SiS_YPbPrTable[3][64] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -070071 {
72 0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c,
73 0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a,
74 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b,
75 0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17,
76 0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02,
77 0x03,0x0a,0x65,0x9d /*0x8d*/,0x08,0x92,0x8f,0x40,
78 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x53 /*0x50*/,
79 0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00
80 },
81 {
Thomas Winischhofer544393f2005-09-09 13:04:45 -070082 0x33,0x06,0x06,0x09,0x0b,0x0c,0x0c,0x0c,
Linus Torvalds1da177e2005-04-16 15:20:36 -070083 0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a,
84 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
Thomas Winischhofer544393f2005-09-09 13:04:45 -070085 0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13,
Linus Torvalds1da177e2005-04-16 15:20:36 -070086 0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8,
Thomas Winischhofer544393f2005-09-09 13:04:45 -070087 0x51,0x5e,0x60,0x49,0x7d,0x92,0x0f,0x40,
88 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4e,
Linus Torvalds1da177e2005-04-16 15:20:36 -070089 0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00
90 },
91 {
Thomas Winischhofer544393f2005-09-09 13:04:45 -070092#if 0 /* OK, but sticks to left edge */
Linus Torvalds1da177e2005-04-16 15:20:36 -070093 0x13,0x1d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
94 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
95 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
96 0xed,0x50,0x70,0x9f,0x16,0x59,0x21 /*0x2b*/,0x13,
97 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
98 0x4b,0x4b,0x65 /*0x6f*/,0x2f,0x63,0x92,0x0f,0x40,
99 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x27,
100 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
101#endif
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700102#if 1 /* Perfect */
103 0x23,0x2d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700104 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
105 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700106 0xed,0x50,0x70,0x9f,0x16,0x59,0x60,0x13,
107 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
108 0x4b,0x4b,0x6f,0x2f,0x63,0x92,0x0f,0x40,
109 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x73,
110 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
Linus Torvalds1da177e2005-04-16 15:20:36 -0700111#endif
112 }
113};
114
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700115static const unsigned char SiS_TVPhase[] =
116{
117 0x21,0xED,0xBA,0x08, /* 0x00 SiS_NTSCPhase */
118 0x2A,0x05,0xE3,0x00, /* 0x01 SiS_PALPhase */
119 0x21,0xE4,0x2E,0x9B, /* 0x02 SiS_PALMPhase */
120 0x21,0xF4,0x3E,0xBA, /* 0x03 SiS_PALNPhase */
121 0x1E,0x8B,0xA2,0xA7,
122 0x1E,0x83,0x0A,0xE0, /* 0x05 SiS_SpecialPhaseM */
123 0x00,0x00,0x00,0x00,
124 0x00,0x00,0x00,0x00,
125 0x21,0xF0,0x7B,0xD6, /* 0x08 SiS_NTSCPhase2 */
126 0x2A,0x09,0x86,0xE9, /* 0x09 SiS_PALPhase2 */
127 0x21,0xE6,0xEF,0xA4, /* 0x0a SiS_PALMPhase2 */
128 0x21,0xF6,0x94,0x46, /* 0x0b SiS_PALNPhase2 */
129 0x1E,0x8B,0xA2,0xA7,
130 0x1E,0x83,0x0A,0xE0, /* 0x0d SiS_SpecialPhaseM */
131 0x00,0x00,0x00,0x00,
132 0x00,0x00,0x00,0x00,
133 0x1e,0x8c,0x5c,0x7a, /* 0x10 SiS_SpecialPhase */
134 0x25,0xd4,0xfd,0x5e /* 0x11 SiS_SpecialPhaseJ */
135};
136
137static const unsigned char SiS_HiTVGroup3_1[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
139 0xb1, 0x41, 0x62, 0x62, 0xff, 0xf4, 0x45, 0xa6,
140 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
141 0xac, 0xda, 0x60, 0xfe, 0x6a, 0x9a, 0x06, 0x10,
142 0xd1, 0x04, 0x18, 0x0a, 0xff, 0x80, 0x00, 0x80,
143 0x3b, 0x77, 0x00, 0xef, 0xe0, 0x10, 0xb0, 0xe0,
144 0x10, 0x4f, 0x0f, 0x0f, 0x05, 0x0f, 0x08, 0x6e,
145 0x1a, 0x1f, 0x25, 0x2a, 0x4c, 0xaa, 0x01
146};
147
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700148static const unsigned char SiS_HiTVGroup3_2[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700149 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
150 0x54, 0x41, 0xe7, 0xe7, 0xff, 0xf4, 0x45, 0xa6,
151 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
152 0xac, 0x6a, 0x60, 0x2b, 0x52, 0xcd, 0x61, 0x10,
153 0x51, 0x04, 0x18, 0x0a, 0x1f, 0x80, 0x00, 0x80,
154 0xff, 0xa4, 0x04, 0x2b, 0x94, 0x21, 0x72, 0x94,
155 0x26, 0x05, 0x01, 0x0f, 0xed, 0x0f, 0x0a, 0x64,
156 0x18, 0x1d, 0x23, 0x28, 0x4c, 0xaa, 0x01
157};
158
159/* 301C / 302ELV extended Part2 TV registers (4 tap scaler) */
160
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700161static const unsigned char SiS_Part2CLVX_1[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700162 0x00,0x00,
163 0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
164 0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
165 0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
166 0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
167};
168
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700169static const unsigned char SiS_Part2CLVX_2[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700170 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
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700177static const unsigned char SiS_Part2CLVX_3[] = { /* NTSC, 525i, 525p */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700178 0xE0,0x01,
179 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D,0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D,
180 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C,0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C,
181 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E,
182 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00,0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02,
183 0x58,0x02,
184 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D,0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E,
185 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F,0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F,
186 0x00,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01,0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03,
187 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04,0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06,
188 0x00,0x03,
189 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00,0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01,
190 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02,0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03,
191 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05,0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06,
192 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07,0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08,
193 0xFF,0xFF
194};
195
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700196static const unsigned char SiS_Part2CLVX_4[] = { /* PAL */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700197 0x58,0x02,
198 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
199 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
200 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
201 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
202 0x00,0x03,
203 0x08,0x12,0x08,0x7E,0x07,0x12,0x09,0x7E,0x06,0x12,0x0A,0x7E,0x05,0x11,0x0B,0x7F,
204 0x04,0x11,0x0C,0x7F,0x03,0x11,0x0C,0x00,0x03,0x10,0x0D,0x00,0x02,0x0F,0x0E,0x01,
205 0x01,0x0F,0x0F,0x01,0x01,0x0E,0x0F,0x02,0x00,0x0D,0x10,0x03,0x7F,0x0C,0x11,0x04,
206 0x7F,0x0C,0x11,0x04,0x7F,0x0B,0x11,0x05,0x7E,0x0A,0x12,0x06,0x7E,0x09,0x12,0x07,
207 0x40,0x02,
208 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
209 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
210 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
211 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
212 0xFF,0xFF
213};
214
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700215static const unsigned char SiS_Part2CLVX_5[] = { /* 750p */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700216 0x00,0x03,
217 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
218 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
219 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
220 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
221 0xFF,0xFF
222};
223
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700224static const unsigned char SiS_Part2CLVX_6[] = { /* 1080i */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700225 0x00,0x04,
226 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
227 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
228 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
229 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
230 0xFF,0xFF,
231};
232
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000233#ifdef CONFIG_FB_SIS_315
Linus Torvalds1da177e2005-04-16 15:20:36 -0700234/* 661 et al LCD data structure (2.03.00) */
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700235static const unsigned char SiS_LCDStruct661[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700236 /* 1024x768 */
237/* type|CR37| HDE | VDE | HT | VT | hss | hse */
238 0x02,0xC0,0x00,0x04,0x00,0x03,0x40,0x05,0x26,0x03,0x10,0x00,0x88,
239 0x00,0x02,0x00,0x06,0x00,0x41,0x5A,0x64,0x00,0x00,0x00,0x00,0x04,
240 /* | vss | vse |clck| clock |CRT2DataP|CRT2DataP|idx */
241 /* VESA non-VESA noscale */
242 /* 1280x1024 */
243 0x03,0xC0,0x00,0x05,0x00,0x04,0x98,0x06,0x2A,0x04,0x30,0x00,0x70,
244 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x08,
245 /* 1400x1050 */
246 0x09,0x20,0x78,0x05,0x1A,0x04,0x98,0x06,0x2A,0x04,0x18,0x00,0x38,
247 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x09,
248 /* 1600x1200 */
249 0x0B,0xE0,0x40,0x06,0xB0,0x04,0x70,0x08,0xE2,0x04,0x40,0x00,0xC0,
250 0x00,0x01,0x00,0x03,0x00,0xA2,0x70,0x24,0x00,0x00,0x00,0x00,0x0A,
251 /* 1280x768 (_2) */
252 0x0A,0xE0,0x00,0x05,0x00,0x03,0x7C,0x06,0x26,0x03,0x30,0x00,0x70,
253 0x00,0x03,0x00,0x06,0x00,0x4D,0xC8,0x48,0x00,0x00,0x00,0x00,0x06,
254 /* 1280x720 */
255 0x0E,0xE0,0x00,0x05,0xD0,0x02,0x80,0x05,0x26,0x03,0x10,0x00,0x20,
256 0x00,0x01,0x00,0x06,0x00,0x45,0x9C,0x62,0x00,0x00,0x00,0x00,0x05,
257 /* 1280x800 (_2) */
258 0x0C,0xE0,0x00,0x05,0x20,0x03,0x10,0x06,0x2C,0x03,0x30,0x00,0x70,
259 0x00,0x04,0x00,0x03,0x00,0x49,0xCE,0x1E,0x00,0x00,0x00,0x00,0x09,
260 /* 1680x1050 */
261 0x0D,0xE0,0x90,0x06,0x1A,0x04,0x6C,0x07,0x2A,0x04,0x1A,0x00,0x4C,
262 0x00,0x03,0x00,0x06,0x00,0x79,0xBE,0x44,0x00,0x00,0x00,0x00,0x06,
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700263 /* 1280x800_3 */
264 0x0C,0xE0,0x00,0x05,0x20,0x03,0xAA,0x05,0x2E,0x03,0x30,0x00,0x50,
265 0x00,0x04,0x00,0x03,0x00,0x47,0xA9,0x10,0x00,0x00,0x00,0x00,0x07,
266 /* 800x600 */
267 0x01,0xC0,0x20,0x03,0x58,0x02,0x20,0x04,0x74,0x02,0x2A,0x00,0x80,
268 0x00,0x06,0x00,0x04,0x00,0x28,0x63,0x4B,0x00,0x00,0x00,0x00,0x00,
269 /* 1280x854 */
270 0x08,0xE0,0x00,0x05,0x56,0x03,0x80,0x06,0x5d,0x03,0x10,0x00,0x70,
271 0x00,0x01,0x00,0x03,0x00,0x54,0x75,0x13,0x00,0x00,0x00,0x00,0x08
Linus Torvalds1da177e2005-04-16 15:20:36 -0700272};
273#endif
274
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000275#ifdef CONFIG_FB_SIS_300
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700276static unsigned char SiS300_TrumpionData[14][80] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700277 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
278 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23,
279 0x00,0x00,0x03,0x28,0x03,0x10,0x05,0x08,0x40,0x10,0x00,0x10,0x04,0x23,0x00,0x23,
280 0x03,0x11,0x60,0xBC,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x09,0x04,0x04,0x05,
281 0x04,0x0C,0x09,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5A,0x01,0xBE,0x01,0x00 },
282 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x27,0x00,0x80,0x02,
283 0x20,0x03,0x07,0x00,0x5E,0x01,0x0D,0x02,0x60,0x0C,0x30,0x11,0x00,0x00,0x04,0x23,
284 0x00,0x00,0x03,0x80,0x03,0x28,0x06,0x08,0x40,0x11,0x00,0x11,0x04,0x23,0x00,0x23,
285 0x03,0x11,0x60,0x90,0x01,0xFF,0x0F,0xF4,0x19,0x01,0x00,0x05,0x01,0x00,0x04,0x05,
286 0x04,0x0C,0x02,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEC,0x57,0x01,0xBE,0x01,0x00 },
287 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x8A,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,0xD9,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
291 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x59,0x01,0xBE,0x01,0x00 },
292 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
293 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
294 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
295 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
296 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
297 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
298 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
299 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
300 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
301 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
302 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
303 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
304 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
305 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
306 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
307 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
308 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
309 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
310 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700311 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
312 /* variant 2 */
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,0x7F,0x00,0x80,0x02,
319 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
320 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
321 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
322 0x04,0x0C,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,0x8A,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,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
329 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
330 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
331 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
332 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
333 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
334 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
335 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
336 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
337 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
338 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
339 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
340 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
341 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
342 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
343 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
344 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
345 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
346 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
347 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700348};
349#endif
350
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700351void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700352void SiS_EnableCRT2(struct SiS_Private *SiS_Pr);
353unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
354void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr);
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800355bool SiS_IsDualEdge(struct SiS_Private *SiS_Pr);
356bool SiS_IsVAMode(struct SiS_Private *SiS_Pr);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700357void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
358 unsigned short ModeIdIndex, int checkcrt2mode);
359void SiS_SetYPbPr(struct SiS_Private *SiS_Pr);
360void SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
361 unsigned short ModeIdIndex);
362void SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
363 unsigned short ModeIdIndex);
364unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
365 unsigned short RefreshRateTableIndex);
366unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex);
367void SiS_DisableBridge(struct SiS_Private *SiS_Pr);
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800368bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700369void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr);
370void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700371
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700372void SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
373unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax);
374void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
375unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700376void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg,
377 unsigned char orval,unsigned short andval);
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000378#ifdef CONFIG_FB_SIS_315
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700379static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
380static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
381static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
382static void SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr);
383void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr);
384void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700385#endif /* 315 */
386
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000387#ifdef CONFIG_FB_SIS_300
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800388static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700389void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700390#endif
391
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700392void SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime);
393unsigned short SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr);
394unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine,
395 unsigned short adaptnum, unsigned short DDCdatatype,
396 unsigned char *buffer, unsigned int VBFlags2);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700397
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700398static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
399 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800400 bool checkcr32, unsigned int VBFlags2);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700401static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
402static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
403 unsigned char *buffer);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700404static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
405static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
406static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
407static unsigned short SiS_SetSCLKLow(struct SiS_Private *SiS_Pr);
408static unsigned short SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr);
409static unsigned short SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr);
410static unsigned short SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax);
411static unsigned short SiS_CheckACK(struct SiS_Private *SiS_Pr);
412static unsigned short SiS_WriteDABDDC(struct SiS_Private *SiS_Pr);
413static unsigned short SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr);
414static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr);
415static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
416static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
417
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000418#ifdef CONFIG_FB_SIS_300
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700419static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
420 unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex);
421static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
422 unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex);
423#endif
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000424#ifdef CONFIG_FB_SIS_315
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700425static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
426 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
427static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr,
428 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
429static void SiS_FinalizeLCD(struct SiS_Private *, unsigned short, unsigned short);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700430#endif
431
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700432extern void SiS_SetReg(SISIOADDRESS, unsigned short, unsigned short);
433extern void SiS_SetRegByte(SISIOADDRESS, unsigned short);
434extern void SiS_SetRegShort(SISIOADDRESS, unsigned short);
435extern void SiS_SetRegLong(SISIOADDRESS, unsigned int);
436extern unsigned char SiS_GetReg(SISIOADDRESS, unsigned short);
437extern unsigned char SiS_GetRegByte(SISIOADDRESS);
438extern unsigned short SiS_GetRegShort(SISIOADDRESS);
439extern unsigned int SiS_GetRegLong(SISIOADDRESS);
440extern void SiS_SetRegANDOR(SISIOADDRESS, unsigned short, unsigned short, unsigned short);
441extern void SiS_SetRegOR(SISIOADDRESS, unsigned short, unsigned short);
442extern void SiS_SetRegAND(SISIOADDRESS, unsigned short, unsigned short);
443extern void SiS_DisplayOff(struct SiS_Private *SiS_Pr);
444extern void SiS_DisplayOn(struct SiS_Private *SiS_Pr);
Richard Knutssonc30660ea2007-02-12 00:55:06 -0800445extern bool SiS_SearchModeID(struct SiS_Private *, unsigned short *, unsigned short *);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700446extern unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
447 unsigned short ModeIdIndex);
448extern unsigned short SiS_GetModePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
449extern unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
450extern unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
451 unsigned short RefreshRateTableIndex);
452extern void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
453 unsigned short ModeIdIndex);
454extern void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
455 unsigned short ModeIdIndex);
456extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
457extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
458extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
Aaro Koskinenf7854e52010-11-19 21:58:47 +0000459#ifdef CONFIG_FB_SIS_300
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700460extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx,
461 unsigned short *tempcl);
462extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl);
463extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
Thomas Winischhofer544393f2005-09-09 13:04:45 -0700464extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
465extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg);
466#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -0700467
468#endif