xref: /OK3568_Linux_fs/kernel/drivers/video/fbdev/sis/vstruct.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* $XFree86$ */
2*4882a593Smuzhiyun /* $XdotOrg$ */
3*4882a593Smuzhiyun /*
4*4882a593Smuzhiyun  * General structure definitions for universal mode switching modules
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * If distributed as part of the Linux kernel, the following license terms
9*4882a593Smuzhiyun  * apply:
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  * * This program is free software; you can redistribute it and/or modify
12*4882a593Smuzhiyun  * * it under the terms of the GNU General Public License as published by
13*4882a593Smuzhiyun  * * the Free Software Foundation; either version 2 of the named License,
14*4882a593Smuzhiyun  * * or any later version.
15*4882a593Smuzhiyun  * *
16*4882a593Smuzhiyun  * * This program is distributed in the hope that it will be useful,
17*4882a593Smuzhiyun  * * but WITHOUT ANY WARRANTY; without even the implied warranty of
18*4882a593Smuzhiyun  * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19*4882a593Smuzhiyun  * * GNU General Public License for more details.
20*4882a593Smuzhiyun  * *
21*4882a593Smuzhiyun  * * You should have received a copy of the GNU General Public License
22*4882a593Smuzhiyun  * * along with this program; if not, write to the Free Software
23*4882a593Smuzhiyun  * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
24*4882a593Smuzhiyun  *
25*4882a593Smuzhiyun  * Otherwise, the following license terms apply:
26*4882a593Smuzhiyun  *
27*4882a593Smuzhiyun  * * Redistribution and use in source and binary forms, with or without
28*4882a593Smuzhiyun  * * modification, are permitted provided that the following conditions
29*4882a593Smuzhiyun  * * are met:
30*4882a593Smuzhiyun  * * 1) Redistributions of source code must retain the above copyright
31*4882a593Smuzhiyun  * *    notice, this list of conditions and the following disclaimer.
32*4882a593Smuzhiyun  * * 2) Redistributions in binary form must reproduce the above copyright
33*4882a593Smuzhiyun  * *    notice, this list of conditions and the following disclaimer in the
34*4882a593Smuzhiyun  * *    documentation and/or other materials provided with the distribution.
35*4882a593Smuzhiyun  * * 3) The name of the author may not be used to endorse or promote products
36*4882a593Smuzhiyun  * *    derived from this software without specific prior written permission.
37*4882a593Smuzhiyun  * *
38*4882a593Smuzhiyun  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
39*4882a593Smuzhiyun  * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
40*4882a593Smuzhiyun  * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
41*4882a593Smuzhiyun  * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
42*4882a593Smuzhiyun  * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
43*4882a593Smuzhiyun  * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
44*4882a593Smuzhiyun  * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
45*4882a593Smuzhiyun  * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
46*4882a593Smuzhiyun  * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
47*4882a593Smuzhiyun  * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48*4882a593Smuzhiyun  *
49*4882a593Smuzhiyun  * Author: 	Thomas Winischhofer <thomas@winischhofer.net>
50*4882a593Smuzhiyun  *
51*4882a593Smuzhiyun  */
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #ifndef _VSTRUCT_H_
54*4882a593Smuzhiyun #define _VSTRUCT_H_
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun struct SiS_PanelDelayTbl {
57*4882a593Smuzhiyun  	unsigned char timer[2];
58*4882a593Smuzhiyun };
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun struct SiS_LCDData {
61*4882a593Smuzhiyun 	unsigned short RVBHCMAX;
62*4882a593Smuzhiyun 	unsigned short RVBHCFACT;
63*4882a593Smuzhiyun 	unsigned short VGAHT;
64*4882a593Smuzhiyun 	unsigned short VGAVT;
65*4882a593Smuzhiyun 	unsigned short LCDHT;
66*4882a593Smuzhiyun 	unsigned short LCDVT;
67*4882a593Smuzhiyun };
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun struct SiS_TVData {
70*4882a593Smuzhiyun 	unsigned short RVBHCMAX;
71*4882a593Smuzhiyun 	unsigned short RVBHCFACT;
72*4882a593Smuzhiyun 	unsigned short VGAHT;
73*4882a593Smuzhiyun 	unsigned short VGAVT;
74*4882a593Smuzhiyun 	unsigned short TVHDE;
75*4882a593Smuzhiyun 	unsigned short TVVDE;
76*4882a593Smuzhiyun 	unsigned short RVBHRS;
77*4882a593Smuzhiyun 	unsigned char  FlickerMode;
78*4882a593Smuzhiyun 	unsigned short HALFRVBHRS;
79*4882a593Smuzhiyun 	unsigned short RVBHRS2;
80*4882a593Smuzhiyun 	unsigned char  RY1COE;
81*4882a593Smuzhiyun 	unsigned char  RY2COE;
82*4882a593Smuzhiyun 	unsigned char  RY3COE;
83*4882a593Smuzhiyun 	unsigned char  RY4COE;
84*4882a593Smuzhiyun };
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun struct SiS_LVDSData {
87*4882a593Smuzhiyun 	unsigned short VGAHT;
88*4882a593Smuzhiyun 	unsigned short VGAVT;
89*4882a593Smuzhiyun 	unsigned short LCDHT;
90*4882a593Smuzhiyun 	unsigned short LCDVT;
91*4882a593Smuzhiyun };
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun struct SiS_LVDSDes {
94*4882a593Smuzhiyun 	unsigned short LCDHDES;
95*4882a593Smuzhiyun 	unsigned short LCDVDES;
96*4882a593Smuzhiyun };
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun struct SiS_LVDSCRT1Data {
99*4882a593Smuzhiyun 	unsigned char  CR[15];
100*4882a593Smuzhiyun };
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun struct SiS_CHTVRegData {
103*4882a593Smuzhiyun 	unsigned char  Reg[16];
104*4882a593Smuzhiyun };
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun struct SiS_St {
107*4882a593Smuzhiyun 	unsigned char  St_ModeID;
108*4882a593Smuzhiyun 	unsigned short St_ModeFlag;
109*4882a593Smuzhiyun 	unsigned char  St_StTableIndex;
110*4882a593Smuzhiyun 	unsigned char  St_CRT2CRTC;
111*4882a593Smuzhiyun 	unsigned char  St_ResInfo;
112*4882a593Smuzhiyun 	unsigned char  VB_StTVFlickerIndex;
113*4882a593Smuzhiyun 	unsigned char  VB_StTVEdgeIndex;
114*4882a593Smuzhiyun 	unsigned char  VB_StTVYFilterIndex;
115*4882a593Smuzhiyun 	unsigned char  St_PDC;
116*4882a593Smuzhiyun };
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun struct SiS_VBMode {
119*4882a593Smuzhiyun 	unsigned char  ModeID;
120*4882a593Smuzhiyun 	unsigned char  VB_TVDelayIndex;
121*4882a593Smuzhiyun 	unsigned char  VB_TVFlickerIndex;
122*4882a593Smuzhiyun 	unsigned char  VB_TVPhaseIndex;
123*4882a593Smuzhiyun 	unsigned char  VB_TVYFilterIndex;
124*4882a593Smuzhiyun 	unsigned char  VB_LCDDelayIndex;
125*4882a593Smuzhiyun 	unsigned char  _VB_LCDHIndex;
126*4882a593Smuzhiyun 	unsigned char  _VB_LCDVIndex;
127*4882a593Smuzhiyun };
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun struct SiS_StandTable_S {
130*4882a593Smuzhiyun 	unsigned char  CRT_COLS;
131*4882a593Smuzhiyun 	unsigned char  ROWS;
132*4882a593Smuzhiyun 	unsigned char  CHAR_HEIGHT;
133*4882a593Smuzhiyun 	unsigned short CRT_LEN;
134*4882a593Smuzhiyun 	unsigned char  SR[4];
135*4882a593Smuzhiyun 	unsigned char  MISC;
136*4882a593Smuzhiyun 	unsigned char  CRTC[0x19];
137*4882a593Smuzhiyun 	unsigned char  ATTR[0x14];
138*4882a593Smuzhiyun 	unsigned char  GRC[9];
139*4882a593Smuzhiyun };
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun struct SiS_Ext {
142*4882a593Smuzhiyun 	unsigned char  Ext_ModeID;
143*4882a593Smuzhiyun 	unsigned short Ext_ModeFlag;
144*4882a593Smuzhiyun 	unsigned short Ext_VESAID;
145*4882a593Smuzhiyun 	unsigned char  Ext_RESINFO;
146*4882a593Smuzhiyun 	unsigned char  VB_ExtTVFlickerIndex;
147*4882a593Smuzhiyun 	unsigned char  VB_ExtTVEdgeIndex;
148*4882a593Smuzhiyun 	unsigned char  VB_ExtTVYFilterIndex;
149*4882a593Smuzhiyun 	unsigned char  VB_ExtTVYFilterIndexROM661;
150*4882a593Smuzhiyun 	unsigned char  REFindex;
151*4882a593Smuzhiyun 	char           ROMMODEIDX661;
152*4882a593Smuzhiyun };
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun struct SiS_Ext2 {
155*4882a593Smuzhiyun 	unsigned short Ext_InfoFlag;
156*4882a593Smuzhiyun 	unsigned char  Ext_CRT1CRTC;
157*4882a593Smuzhiyun 	unsigned char  Ext_CRTVCLK;
158*4882a593Smuzhiyun 	unsigned char  Ext_CRT2CRTC;
159*4882a593Smuzhiyun 	unsigned char  Ext_CRT2CRTC_NS;
160*4882a593Smuzhiyun 	unsigned char  ModeID;
161*4882a593Smuzhiyun 	unsigned short XRes;
162*4882a593Smuzhiyun 	unsigned short YRes;
163*4882a593Smuzhiyun 	unsigned char  Ext_PDC;
164*4882a593Smuzhiyun 	unsigned char  Ext_FakeCRT2CRTC;
165*4882a593Smuzhiyun 	unsigned char  Ext_FakeCRT2Clk;
166*4882a593Smuzhiyun 	unsigned char  Ext_CRT1CRTC_NORM;
167*4882a593Smuzhiyun 	unsigned char  Ext_CRTVCLK_NORM;
168*4882a593Smuzhiyun 	unsigned char  Ext_CRT1CRTC_WIDE;
169*4882a593Smuzhiyun 	unsigned char  Ext_CRTVCLK_WIDE;
170*4882a593Smuzhiyun };
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun struct SiS_Part2PortTbl {
173*4882a593Smuzhiyun  	unsigned char  CR[12];
174*4882a593Smuzhiyun };
175*4882a593Smuzhiyun 
176*4882a593Smuzhiyun struct SiS_CRT1Table {
177*4882a593Smuzhiyun 	unsigned char  CR[17];
178*4882a593Smuzhiyun };
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun struct SiS_MCLKData {
181*4882a593Smuzhiyun 	unsigned char  SR28,SR29,SR2A;
182*4882a593Smuzhiyun 	unsigned short CLOCK;
183*4882a593Smuzhiyun };
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun struct SiS_VCLKData {
186*4882a593Smuzhiyun 	unsigned char  SR2B,SR2C;
187*4882a593Smuzhiyun 	unsigned short CLOCK;
188*4882a593Smuzhiyun };
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun struct SiS_VBVCLKData {
191*4882a593Smuzhiyun 	unsigned char  Part4_A,Part4_B;
192*4882a593Smuzhiyun 	unsigned short CLOCK;
193*4882a593Smuzhiyun };
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun struct SiS_StResInfo_S {
196*4882a593Smuzhiyun 	unsigned short HTotal;
197*4882a593Smuzhiyun 	unsigned short VTotal;
198*4882a593Smuzhiyun };
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun struct SiS_ModeResInfo_S {
201*4882a593Smuzhiyun 	unsigned short HTotal;
202*4882a593Smuzhiyun 	unsigned short VTotal;
203*4882a593Smuzhiyun 	unsigned char  XChar;
204*4882a593Smuzhiyun 	unsigned char  YChar;
205*4882a593Smuzhiyun };
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun /* Defines for SiS_CustomT */
208*4882a593Smuzhiyun /* Never change these for sisfb compatibility */
209*4882a593Smuzhiyun #define CUT_NONE		 0
210*4882a593Smuzhiyun #define CUT_FORCENONE		 1
211*4882a593Smuzhiyun #define CUT_BARCO1366		 2
212*4882a593Smuzhiyun #define CUT_BARCO1024		 3
213*4882a593Smuzhiyun #define CUT_COMPAQ1280		 4
214*4882a593Smuzhiyun #define CUT_COMPAQ12802		 5
215*4882a593Smuzhiyun #define CUT_PANEL848		 6
216*4882a593Smuzhiyun #define CUT_CLEVO1024		 7
217*4882a593Smuzhiyun #define CUT_CLEVO10242		 8
218*4882a593Smuzhiyun #define CUT_CLEVO1400		 9
219*4882a593Smuzhiyun #define CUT_CLEVO14002		10
220*4882a593Smuzhiyun #define CUT_UNIWILL1024		11
221*4882a593Smuzhiyun #define CUT_ASUSL3000D		12
222*4882a593Smuzhiyun #define CUT_UNIWILL10242	13
223*4882a593Smuzhiyun #define CUT_ACER1280		14
224*4882a593Smuzhiyun #define CUT_COMPAL1400_1	15
225*4882a593Smuzhiyun #define CUT_COMPAL1400_2	16
226*4882a593Smuzhiyun #define CUT_ASUSA2H_1		17
227*4882a593Smuzhiyun #define CUT_ASUSA2H_2		18
228*4882a593Smuzhiyun #define CUT_UNKNOWNLCD		19
229*4882a593Smuzhiyun #define CUT_AOP8060		20
230*4882a593Smuzhiyun #define CUT_PANEL856		21
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun struct SiS_Private
233*4882a593Smuzhiyun {
234*4882a593Smuzhiyun 	unsigned char			ChipType;
235*4882a593Smuzhiyun 	unsigned char			ChipRevision;
236*4882a593Smuzhiyun 	void				*ivideo;
237*4882a593Smuzhiyun 	unsigned char 			*VirtualRomBase;
238*4882a593Smuzhiyun 	bool				UseROM;
239*4882a593Smuzhiyun 	unsigned char SISIOMEMTYPE	*VideoMemoryAddress;
240*4882a593Smuzhiyun 	unsigned int			VideoMemorySize;
241*4882a593Smuzhiyun 	SISIOADDRESS			IOAddress;
242*4882a593Smuzhiyun 	SISIOADDRESS			IOAddress2;  /* For dual chip XGI volari */
243*4882a593Smuzhiyun 
244*4882a593Smuzhiyun 	SISIOADDRESS			RelIO;
245*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c4;
246*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3d4;
247*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c0;
248*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3ce;
249*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c2;
250*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3ca;
251*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c6;
252*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c7;
253*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c8;
254*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3c9;
255*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3cb;
256*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3cc;
257*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3cd;
258*4882a593Smuzhiyun 	SISIOADDRESS			SiS_P3da;
259*4882a593Smuzhiyun 	SISIOADDRESS			SiS_Part1Port;
260*4882a593Smuzhiyun 	SISIOADDRESS			SiS_Part2Port;
261*4882a593Smuzhiyun 	SISIOADDRESS			SiS_Part3Port;
262*4882a593Smuzhiyun 	SISIOADDRESS			SiS_Part4Port;
263*4882a593Smuzhiyun 	SISIOADDRESS			SiS_Part5Port;
264*4882a593Smuzhiyun 	SISIOADDRESS			SiS_VidCapt;
265*4882a593Smuzhiyun 	SISIOADDRESS			SiS_VidPlay;
266*4882a593Smuzhiyun 	unsigned short			SiS_IF_DEF_LVDS;
267*4882a593Smuzhiyun 	unsigned short			SiS_IF_DEF_CH70xx;
268*4882a593Smuzhiyun 	unsigned short			SiS_IF_DEF_CONEX;
269*4882a593Smuzhiyun 	unsigned short			SiS_IF_DEF_TRUMPION;
270*4882a593Smuzhiyun 	unsigned short			SiS_IF_DEF_DSTN;
271*4882a593Smuzhiyun 	unsigned short			SiS_IF_DEF_FSTN;
272*4882a593Smuzhiyun 	unsigned short			SiS_SysFlags;
273*4882a593Smuzhiyun 	unsigned char			SiS_VGAINFO;
274*4882a593Smuzhiyun 	bool				SiS_UseROM;
275*4882a593Smuzhiyun 	bool				SiS_ROMNew;
276*4882a593Smuzhiyun 	bool				SiS_XGIROM;
277*4882a593Smuzhiyun 	bool				SiS_NeedRomModeData;
278*4882a593Smuzhiyun 	bool				PanelSelfDetected;
279*4882a593Smuzhiyun 	bool				DDCPortMixup;
280*4882a593Smuzhiyun 	int				SiS_CHOverScan;
281*4882a593Smuzhiyun 	bool				SiS_CHSOverScan;
282*4882a593Smuzhiyun 	bool				SiS_ChSW;
283*4882a593Smuzhiyun 	bool				SiS_UseLCDA;
284*4882a593Smuzhiyun 	int				SiS_UseOEM;
285*4882a593Smuzhiyun 	unsigned int			SiS_CustomT;
286*4882a593Smuzhiyun 	int				SiS_UseWide, SiS_UseWideCRT2;
287*4882a593Smuzhiyun 	int				SiS_TVBlue;
288*4882a593Smuzhiyun 	unsigned short			SiS_Backup70xx;
289*4882a593Smuzhiyun 	bool				HaveEMI;
290*4882a593Smuzhiyun 	bool				HaveEMILCD;
291*4882a593Smuzhiyun 	bool				OverruleEMI;
292*4882a593Smuzhiyun 	unsigned char			EMI_30,EMI_31,EMI_32,EMI_33;
293*4882a593Smuzhiyun 	unsigned short			SiS_EMIOffset;
294*4882a593Smuzhiyun 	unsigned short			SiS_PWDOffset;
295*4882a593Smuzhiyun 	short				PDC, PDCA;
296*4882a593Smuzhiyun 	unsigned char			SiS_MyCR63;
297*4882a593Smuzhiyun 	unsigned short			SiS_CRT1Mode;
298*4882a593Smuzhiyun 	unsigned short			SiS_flag_clearbuffer;
299*4882a593Smuzhiyun 	int				SiS_RAMType;
300*4882a593Smuzhiyun 	unsigned char			SiS_ChannelAB;
301*4882a593Smuzhiyun 	unsigned char			SiS_DataBusWidth;
302*4882a593Smuzhiyun 	unsigned short			SiS_ModeType;
303*4882a593Smuzhiyun 	unsigned short			SiS_VBInfo;
304*4882a593Smuzhiyun 	unsigned short			SiS_TVMode;
305*4882a593Smuzhiyun 	unsigned short			SiS_LCDResInfo;
306*4882a593Smuzhiyun 	unsigned short			SiS_LCDTypeInfo;
307*4882a593Smuzhiyun 	unsigned short			SiS_LCDInfo;
308*4882a593Smuzhiyun 	unsigned short			SiS_LCDInfo661;
309*4882a593Smuzhiyun 	unsigned short			SiS_VBType;
310*4882a593Smuzhiyun 	unsigned short			SiS_VBExtInfo;
311*4882a593Smuzhiyun 	unsigned short			SiS_YPbPr;
312*4882a593Smuzhiyun 	unsigned short			SiS_SelectCRT2Rate;
313*4882a593Smuzhiyun 	unsigned short			SiS_SetFlag;
314*4882a593Smuzhiyun 	unsigned short			SiS_RVBHCFACT;
315*4882a593Smuzhiyun 	unsigned short			SiS_RVBHCMAX;
316*4882a593Smuzhiyun 	unsigned short			SiS_RVBHRS;
317*4882a593Smuzhiyun 	unsigned short			SiS_RVBHRS2;
318*4882a593Smuzhiyun 	unsigned short			SiS_VGAVT;
319*4882a593Smuzhiyun 	unsigned short			SiS_VGAHT;
320*4882a593Smuzhiyun 	unsigned short			SiS_VT;
321*4882a593Smuzhiyun 	unsigned short			SiS_HT;
322*4882a593Smuzhiyun 	unsigned short			SiS_VGAVDE;
323*4882a593Smuzhiyun 	unsigned short			SiS_VGAHDE;
324*4882a593Smuzhiyun 	unsigned short			SiS_VDE;
325*4882a593Smuzhiyun 	unsigned short			SiS_HDE;
326*4882a593Smuzhiyun 	unsigned short			SiS_NewFlickerMode;
327*4882a593Smuzhiyun 	unsigned short			SiS_RY1COE;
328*4882a593Smuzhiyun 	unsigned short			SiS_RY2COE;
329*4882a593Smuzhiyun 	unsigned short			SiS_RY3COE;
330*4882a593Smuzhiyun 	unsigned short			SiS_RY4COE;
331*4882a593Smuzhiyun 	unsigned short			SiS_LCDHDES;
332*4882a593Smuzhiyun 	unsigned short			SiS_LCDVDES;
333*4882a593Smuzhiyun 	SISIOADDRESS			SiS_DDC_Port;
334*4882a593Smuzhiyun 	unsigned short			SiS_DDC_Index;
335*4882a593Smuzhiyun 	unsigned short			SiS_DDC_Data;
336*4882a593Smuzhiyun 	unsigned short			SiS_DDC_NData;
337*4882a593Smuzhiyun 	unsigned short			SiS_DDC_Clk;
338*4882a593Smuzhiyun 	unsigned short			SiS_DDC_NClk;
339*4882a593Smuzhiyun 	unsigned short			SiS_DDC_DeviceAddr;
340*4882a593Smuzhiyun 	unsigned short			SiS_DDC_ReadAddr;
341*4882a593Smuzhiyun 	unsigned short			SiS_DDC_SecAddr;
342*4882a593Smuzhiyun 	unsigned short			SiS_ChrontelInit;
343*4882a593Smuzhiyun 	bool				SiS_SensibleSR11;
344*4882a593Smuzhiyun 	unsigned short			SiS661LCD2TableSize;
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun 	unsigned short			SiS_PanelMinLVDS;
347*4882a593Smuzhiyun 	unsigned short			SiS_PanelMin301;
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun 	const struct SiS_St		*SiS_SModeIDTable;
350*4882a593Smuzhiyun 	const struct SiS_StandTable_S	*SiS_StandTable;
351*4882a593Smuzhiyun 	const struct SiS_Ext		*SiS_EModeIDTable;
352*4882a593Smuzhiyun 	const struct SiS_Ext2		*SiS_RefIndex;
353*4882a593Smuzhiyun 	const struct SiS_VBMode		*SiS_VBModeIDTable;
354*4882a593Smuzhiyun 	const struct SiS_CRT1Table	*SiS_CRT1Table;
355*4882a593Smuzhiyun 	const struct SiS_MCLKData	*SiS_MCLKData_0;
356*4882a593Smuzhiyun 	const struct SiS_MCLKData	*SiS_MCLKData_1;
357*4882a593Smuzhiyun 	struct SiS_VCLKData		*SiS_VCLKData;
358*4882a593Smuzhiyun 	struct SiS_VBVCLKData		*SiS_VBVCLKData;
359*4882a593Smuzhiyun 	const struct SiS_StResInfo_S	*SiS_StResInfo;
360*4882a593Smuzhiyun 	const struct SiS_ModeResInfo_S	*SiS_ModeResInfo;
361*4882a593Smuzhiyun 
362*4882a593Smuzhiyun 	const unsigned char		*pSiS_OutputSelect;
363*4882a593Smuzhiyun 	const unsigned char		*pSiS_SoftSetting;
364*4882a593Smuzhiyun 
365*4882a593Smuzhiyun 	const unsigned char		*SiS_SR15;
366*4882a593Smuzhiyun 
367*4882a593Smuzhiyun 	const struct SiS_PanelDelayTbl	*SiS_PanelDelayTbl;
368*4882a593Smuzhiyun 	const struct SiS_PanelDelayTbl	*SiS_PanelDelayTblLVDS;
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun 	/* SiS bridge */
371*4882a593Smuzhiyun 
372*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_ExtLCD1024x768Data;
373*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_St2LCD1024x768Data;
374*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_LCD1280x720Data;
375*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_StLCD1280x768_2Data;
376*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_ExtLCD1280x768_2Data;
377*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_LCD1280x800Data;
378*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_LCD1280x800_2Data;
379*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_LCD1280x854Data;
380*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_LCD1280x960Data;
381*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_ExtLCD1280x1024Data;
382*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_St2LCD1280x1024Data;
383*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_StLCD1400x1050Data;
384*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_ExtLCD1400x1050Data;
385*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_StLCD1600x1200Data;
386*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_ExtLCD1600x1200Data;
387*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_LCD1680x1050Data;
388*4882a593Smuzhiyun 	const struct SiS_LCDData	*SiS_NoScaleData;
389*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_StPALData;
390*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_ExtPALData;
391*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_StNTSCData;
392*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_ExtNTSCData;
393*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_St1HiTVData;
394*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_St2HiTVData;
395*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_ExtHiTVData;
396*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_St525iData;
397*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_St525pData;
398*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_St750pData;
399*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_Ext525iData;
400*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_Ext525pData;
401*4882a593Smuzhiyun 	const struct SiS_TVData		*SiS_Ext750pData;
402*4882a593Smuzhiyun 	const unsigned char		*SiS_NTSCTiming;
403*4882a593Smuzhiyun 	const unsigned char		*SiS_PALTiming;
404*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVExtTiming;
405*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVSt1Timing;
406*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVSt2Timing;
407*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVGroup3Data;
408*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVGroup3Simu;
409*4882a593Smuzhiyun #if 0
410*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVTextTiming;
411*4882a593Smuzhiyun 	const unsigned char		*SiS_HiTVGroup3Text;
412*4882a593Smuzhiyun #endif
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun 	const struct SiS_Part2PortTbl	*SiS_CRT2Part2_1024x768_1;
415*4882a593Smuzhiyun 	const struct SiS_Part2PortTbl	*SiS_CRT2Part2_1024x768_2;
416*4882a593Smuzhiyun 	const struct SiS_Part2PortTbl	*SiS_CRT2Part2_1024x768_3;
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun 	/* LVDS, Chrontel */
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS320x240Data_1;
421*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS320x240Data_2;
422*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS640x480Data_1;
423*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS800x600Data_1;
424*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS1024x600Data_1;
425*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS1024x768Data_1;
426*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDSBARCO1366Data_1;
427*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDSBARCO1366Data_2;
428*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDSBARCO1024Data_1;
429*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS848x480Data_1;
430*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_LVDS848x480Data_2;
431*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVUNTSCData;
432*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVONTSCData;
433*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVUPALData;
434*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVOPALData;
435*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVUPALMData;
436*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVOPALMData;
437*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVUPALNData;
438*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVOPALNData;
439*4882a593Smuzhiyun 	const struct SiS_LVDSData	*SiS_CHTVSOPALData;
440*4882a593Smuzhiyun 
441*4882a593Smuzhiyun 	const struct SiS_LVDSDes	*SiS_PanelType04_1a;
442*4882a593Smuzhiyun 	const struct SiS_LVDSDes	*SiS_PanelType04_2a;
443*4882a593Smuzhiyun 	const struct SiS_LVDSDes	*SiS_PanelType04_1b;
444*4882a593Smuzhiyun 	const struct SiS_LVDSDes	*SiS_PanelType04_2b;
445*4882a593Smuzhiyun 
446*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1320x240_1;
447*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1320x240_2;
448*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1320x240_2_H;
449*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1320x240_3;
450*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1320x240_3_H;
451*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1640x480_1;
452*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_LVDSCRT1640x480_1_H;
453*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_CHTVCRT1UNTSC;
454*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_CHTVCRT1ONTSC;
455*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_CHTVCRT1UPAL;
456*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_CHTVCRT1OPAL;
457*4882a593Smuzhiyun 	const struct SiS_LVDSCRT1Data	*SiS_CHTVCRT1SOPAL;
458*4882a593Smuzhiyun 
459*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_UNTSC;
460*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_ONTSC;
461*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_UPAL;
462*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_OPAL;
463*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_UPALM;
464*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_OPALM;
465*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_UPALN;
466*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_OPALN;
467*4882a593Smuzhiyun 	const struct SiS_CHTVRegData	*SiS_CHTVReg_SOPAL;
468*4882a593Smuzhiyun 
469*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKUNTSC;
470*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKONTSC;
471*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKUPAL;
472*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKOPAL;
473*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKUPALM;
474*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKOPALM;
475*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKUPALN;
476*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKOPALN;
477*4882a593Smuzhiyun 	const unsigned char		*SiS_CHTVVCLKSOPAL;
478*4882a593Smuzhiyun 
479*4882a593Smuzhiyun 	unsigned short			PanelXRes, PanelHT;
480*4882a593Smuzhiyun 	unsigned short			PanelYRes, PanelVT;
481*4882a593Smuzhiyun 	unsigned short			PanelHRS,  PanelHRE;
482*4882a593Smuzhiyun 	unsigned short			PanelVRS,  PanelVRE;
483*4882a593Smuzhiyun 	unsigned short			PanelVCLKIdx300;
484*4882a593Smuzhiyun 	unsigned short			PanelVCLKIdx315;
485*4882a593Smuzhiyun 	bool				Alternate1600x1200;
486*4882a593Smuzhiyun 
487*4882a593Smuzhiyun 	bool				UseCustomMode;
488*4882a593Smuzhiyun 	bool				CRT1UsesCustomMode;
489*4882a593Smuzhiyun 	unsigned short			CHDisplay;
490*4882a593Smuzhiyun 	unsigned short			CHSyncStart;
491*4882a593Smuzhiyun 	unsigned short			CHSyncEnd;
492*4882a593Smuzhiyun 	unsigned short			CHTotal;
493*4882a593Smuzhiyun 	unsigned short			CHBlankStart;
494*4882a593Smuzhiyun 	unsigned short			CHBlankEnd;
495*4882a593Smuzhiyun 	unsigned short			CVDisplay;
496*4882a593Smuzhiyun 	unsigned short			CVSyncStart;
497*4882a593Smuzhiyun 	unsigned short			CVSyncEnd;
498*4882a593Smuzhiyun 	unsigned short			CVTotal;
499*4882a593Smuzhiyun 	unsigned short			CVBlankStart;
500*4882a593Smuzhiyun 	unsigned short			CVBlankEnd;
501*4882a593Smuzhiyun 	unsigned int			CDClock;
502*4882a593Smuzhiyun 	unsigned int			CFlags;
503*4882a593Smuzhiyun 	unsigned char			CCRT1CRTC[17];
504*4882a593Smuzhiyun 	unsigned char			CSR2B;
505*4882a593Smuzhiyun 	unsigned char			CSR2C;
506*4882a593Smuzhiyun 	unsigned short			CSRClock;
507*4882a593Smuzhiyun 	unsigned short			CSRClock_CRT1;
508*4882a593Smuzhiyun 	unsigned short			CModeFlag;
509*4882a593Smuzhiyun 	unsigned short			CModeFlag_CRT1;
510*4882a593Smuzhiyun 	unsigned short			CInfoFlag;
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun 	int				LVDSHL;
513*4882a593Smuzhiyun 
514*4882a593Smuzhiyun 	bool				Backup;
515*4882a593Smuzhiyun 	unsigned char			Backup_Mode;
516*4882a593Smuzhiyun 	unsigned char			Backup_14;
517*4882a593Smuzhiyun 	unsigned char			Backup_15;
518*4882a593Smuzhiyun 	unsigned char			Backup_16;
519*4882a593Smuzhiyun 	unsigned char			Backup_17;
520*4882a593Smuzhiyun 	unsigned char			Backup_18;
521*4882a593Smuzhiyun 	unsigned char			Backup_19;
522*4882a593Smuzhiyun 	unsigned char			Backup_1a;
523*4882a593Smuzhiyun 	unsigned char			Backup_1b;
524*4882a593Smuzhiyun 	unsigned char			Backup_1c;
525*4882a593Smuzhiyun 	unsigned char			Backup_1d;
526*4882a593Smuzhiyun 
527*4882a593Smuzhiyun 	unsigned char			Init_P4_0E;
528*4882a593Smuzhiyun 
529*4882a593Smuzhiyun 	int				UsePanelScaler;
530*4882a593Smuzhiyun 	int				CenterScreen;
531*4882a593Smuzhiyun 
532*4882a593Smuzhiyun 	unsigned short			CP_Vendor, CP_Product;
533*4882a593Smuzhiyun 	bool				CP_HaveCustomData;
534*4882a593Smuzhiyun 	int				CP_PreferredX, CP_PreferredY, CP_PreferredIndex;
535*4882a593Smuzhiyun 	int				CP_MaxX, CP_MaxY, CP_MaxClock;
536*4882a593Smuzhiyun 	unsigned char			CP_PrefSR2B, CP_PrefSR2C;
537*4882a593Smuzhiyun 	unsigned short			CP_PrefClock;
538*4882a593Smuzhiyun 	bool				CP_Supports64048075;
539*4882a593Smuzhiyun 	int				CP_HDisplay[7], CP_VDisplay[7];	/* For Custom LCD panel dimensions */
540*4882a593Smuzhiyun 	int				CP_HTotal[7], CP_VTotal[7];
541*4882a593Smuzhiyun 	int				CP_HSyncStart[7], CP_VSyncStart[7];
542*4882a593Smuzhiyun 	int				CP_HSyncEnd[7], CP_VSyncEnd[7];
543*4882a593Smuzhiyun 	int				CP_HBlankStart[7], CP_VBlankStart[7];
544*4882a593Smuzhiyun 	int				CP_HBlankEnd[7], CP_VBlankEnd[7];
545*4882a593Smuzhiyun 	int				CP_Clock[7];
546*4882a593Smuzhiyun 	bool				CP_DataValid[7];
547*4882a593Smuzhiyun 	bool				CP_HSync_P[7], CP_VSync_P[7], CP_SyncValid[7];
548*4882a593Smuzhiyun };
549*4882a593Smuzhiyun 
550*4882a593Smuzhiyun #endif
551*4882a593Smuzhiyun 
552