1 /* $XFree86$ */
2 /* $XdotOrg$ */
3 /*
4  * General structure definitions for universal mode switching modules
5  *
6  * Copyright (C) 2001-2004 by Thomas Winischhofer, Vienna, Austria
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 EXPRESSED 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 
53 #ifdef _INIT_
54 #define EXTERN
55 #else
56 #define EXTERN extern
57 #endif /* _INIT_ */
58 
59 #ifndef _VSTRUCT_
60 #define _VSTRUCT_
61 
62 typedef struct _SiS_PanelDelayTblStruct
63 {
64  	UCHAR timer[2];
65 } SiS_PanelDelayTblStruct;
66 
67 typedef struct _SiS_LCDDataStruct
68 {
69 	USHORT RVBHCMAX;
70 	USHORT RVBHCFACT;
71 	USHORT VGAHT;
72 	USHORT VGAVT;
73 	USHORT LCDHT;
74 	USHORT LCDVT;
75 } SiS_LCDDataStruct;
76 
77 typedef struct _SiS_TVDataStruct
78 {
79 	USHORT RVBHCMAX;
80 	USHORT RVBHCFACT;
81 	USHORT VGAHT;
82 	USHORT VGAVT;
83 	USHORT TVHDE;
84 	USHORT TVVDE;
85 	USHORT RVBHRS;
86 	UCHAR  FlickerMode;
87 	USHORT HALFRVBHRS;
88 	UCHAR  RY1COE;
89 	UCHAR  RY2COE;
90 	UCHAR  RY3COE;
91 	UCHAR  RY4COE;
92 } SiS_TVDataStruct;
93 
94 typedef struct _SiS_LVDSDataStruct
95 {
96 	USHORT VGAHT;
97 	USHORT VGAVT;
98 	USHORT LCDHT;
99 	USHORT LCDVT;
100 } SiS_LVDSDataStruct;
101 
102 typedef struct _SiS_LVDSDesStruct
103 {
104 	USHORT LCDHDES;
105 	USHORT LCDVDES;
106 } SiS_LVDSDesStruct;
107 
108 typedef struct _SiS_LVDSCRT1DataStruct
109 {
110 	UCHAR  CR[15];
111 } SiS_LVDSCRT1DataStruct;
112 
113 typedef struct _SiS_LCDACRT1DataStruct
114 {
115 	UCHAR  CR[17];
116 } SiS_LCDACRT1DataStruct;
117 
118 typedef struct _SiS_CHTVRegDataStruct
119 {
120 	UCHAR  Reg[16];
121 } SiS_CHTVRegDataStruct;
122 
123 typedef struct _SiS_StStruct
124 {
125 	UCHAR  St_ModeID;
126 	USHORT St_ModeFlag;
127 	UCHAR  St_StTableIndex;
128 	UCHAR  St_CRT2CRTC;
129 	UCHAR  St_ResInfo;
130 	UCHAR  VB_StTVFlickerIndex;
131 	UCHAR  VB_StTVEdgeIndex;
132 	UCHAR  VB_StTVYFilterIndex;
133 	UCHAR  St_PDC;
134 } SiS_StStruct;
135 
136 typedef struct _SiS_VBModeStruct
137 {
138 	UCHAR  ModeID;
139 	UCHAR  VB_TVDelayIndex;
140 	UCHAR  VB_TVFlickerIndex;
141 	UCHAR  VB_TVPhaseIndex;
142 	UCHAR  VB_TVYFilterIndex;
143 	UCHAR  VB_LCDDelayIndex;
144 	UCHAR  _VB_LCDHIndex;
145 	UCHAR  _VB_LCDVIndex;
146 } SiS_VBModeStruct;
147 
148 typedef struct _SiS_StandTableStruct
149 {
150 	UCHAR  CRT_COLS;
151 	UCHAR  ROWS;
152 	UCHAR  CHAR_HEIGHT;
153 	USHORT CRT_LEN;
154 	UCHAR  SR[4];
155 	UCHAR  MISC;
156 	UCHAR  CRTC[0x19];
157 	UCHAR  ATTR[0x14];
158 	UCHAR  GRC[9];
159 } SiS_StandTableStruct;
160 
161 typedef struct _SiS_ExtStruct
162 {
163 	UCHAR  Ext_ModeID;
164 	USHORT Ext_ModeFlag;
165 	USHORT Ext_VESAID;
166 	UCHAR  Ext_RESINFO;
167 	UCHAR  VB_ExtTVFlickerIndex;
168 	UCHAR  VB_ExtTVEdgeIndex;
169 	UCHAR  VB_ExtTVYFilterIndex;
170 	UCHAR  VB_ExtTVYFilterIndexROM661;
171 	UCHAR  REFindex;
172 	CHAR   ROMMODEIDX661;
173 } SiS_ExtStruct;
174 
175 typedef struct _SiS_Ext2Struct
176 {
177 	USHORT Ext_InfoFlag;
178 	UCHAR  Ext_CRT1CRTC;
179 	UCHAR  Ext_CRTVCLK;
180 	UCHAR  Ext_CRT2CRTC;
181 	UCHAR  Ext_CRT2CRTC_NS;
182 	UCHAR  ModeID;
183 	USHORT XRes;
184 	USHORT YRes;
185 	UCHAR  Ext_PDC;
186 } SiS_Ext2Struct;
187 
188 typedef struct _SiS_Part2PortTblStruct
189 {
190  	UCHAR  CR[12];
191 } SiS_Part2PortTblStruct;
192 
193 typedef struct _SiS_CRT1TableStruct
194 {
195 	UCHAR  CR[17];
196 } SiS_CRT1TableStruct;
197 
198 typedef struct _SiS_MCLKDataStruct
199 {
200 	UCHAR  SR28,SR29,SR2A;
201 	USHORT CLOCK;
202 } SiS_MCLKDataStruct;
203 
204 typedef struct _SiS_VCLKDataStruct
205 {
206 	UCHAR  SR2B,SR2C;
207 	USHORT CLOCK;
208 } SiS_VCLKDataStruct;
209 
210 typedef struct _SiS_VBVCLKDataStruct
211 {
212 	UCHAR  Part4_A,Part4_B;
213 	USHORT CLOCK;
214 } SiS_VBVCLKDataStruct;
215 
216 typedef struct _SiS_StResInfoStruct
217 {
218 	USHORT HTotal;
219 	USHORT VTotal;
220 } SiS_StResInfoStruct;
221 
222 typedef struct _SiS_ModeResInfoStruct
223 {
224 	USHORT HTotal;
225 	USHORT VTotal;
226 	UCHAR  XChar;
227 	UCHAR  YChar;
228 } SiS_ModeResInfoStruct;
229 
230 
231 
232 typedef UCHAR DRAM4Type[4];
233 
234 /* Defines for SiS_CustomT */
235 /* Never change these for sisfb compatibility */
236 #define CUT_NONE          0
237 #define CUT_FORCENONE     1
238 #define CUT_BARCO1366     2
239 #define CUT_BARCO1024     3
240 #define CUT_COMPAQ1280    4
241 #define CUT_COMPAQ12802   5
242 #define CUT_PANEL848      6
243 #define CUT_CLEVO1024     7
244 #define CUT_CLEVO10242    8
245 #define CUT_CLEVO1400     9
246 #define CUT_CLEVO14002    10
247 #define CUT_UNIWILL1024   11
248 #define CUT_ASUSL3000D    12
249 #define CUT_UNIWILL10242  13
250 #define CUT_ACER1280      14
251 #define CUT_COMPAL1400_1  15
252 #define CUT_COMPAL1400_2  16
253 #define CUT_ASUSA2H_1     17
254 #define CUT_ASUSA2H_2     18
255 
256 typedef struct _SiS_Private
257 {
258 #ifdef LINUX_KERNEL
259         SISIOADDRESS RelIO;
260 #endif
261 	SISIOADDRESS SiS_P3c4;
262 	SISIOADDRESS SiS_P3d4;
263 	SISIOADDRESS SiS_P3c0;
264 	SISIOADDRESS SiS_P3ce;
265 	SISIOADDRESS SiS_P3c2;
266 	SISIOADDRESS SiS_P3ca;
267 	SISIOADDRESS SiS_P3c6;
268 	SISIOADDRESS SiS_P3c7;
269 	SISIOADDRESS SiS_P3c8;
270 	SISIOADDRESS SiS_P3c9;
271 	SISIOADDRESS SiS_P3cb;
272 	SISIOADDRESS SiS_P3cd;
273 	SISIOADDRESS SiS_P3da;
274 	SISIOADDRESS SiS_Part1Port;
275 	SISIOADDRESS SiS_Part2Port;
276 	SISIOADDRESS SiS_Part3Port;
277 	SISIOADDRESS SiS_Part4Port;
278 	SISIOADDRESS SiS_Part5Port;
279 	SISIOADDRESS SiS_VidCapt;
280 	SISIOADDRESS SiS_VidPlay;
281 	USHORT SiS_IF_DEF_LVDS;
282 	USHORT SiS_IF_DEF_CH70xx;
283 	USHORT SiS_IF_DEF_CONEX;
284 	USHORT SiS_IF_DEF_TRUMPION;
285 	USHORT SiS_IF_DEF_DSTN;
286 	USHORT SiS_IF_DEF_FSTN;
287 	USHORT SiS_SysFlags;
288 	UCHAR  SiS_VGAINFO;
289 #ifndef LINUX_KERNEL
290         USHORT SiS_CP1, SiS_CP2, SiS_CP3, SiS_CP4;
291 #endif
292 	BOOLEAN SiS_UseROM;
293 	BOOLEAN SiS_ROMNew;
294 	BOOLEAN SiS_NeedRomModeData;
295 	BOOLEAN PanelSelfDetected;
296 	int     SiS_CHOverScan;
297 	BOOLEAN SiS_CHSOverScan;
298 	BOOLEAN SiS_ChSW;
299 	BOOLEAN SiS_UseLCDA;
300 	int     SiS_UseOEM;
301 	ULONG   SiS_CustomT;
302 	USHORT  SiS_Backup70xx;
303 	BOOLEAN HaveEMI;
304 	BOOLEAN HaveEMILCD;
305 	BOOLEAN OverruleEMI;
306 	UCHAR  EMI_30,EMI_31,EMI_32,EMI_33;
307 	SHORT  PDC, PDCA;
308 	UCHAR  SiS_MyCR63;
309 	USHORT SiS_CRT1Mode;
310 	USHORT SiS_flag_clearbuffer;
311 	int    SiS_RAMType;
312 	UCHAR  SiS_ChannelAB;
313 	UCHAR  SiS_DataBusWidth;
314 	USHORT SiS_ModeType;
315 	USHORT SiS_VBInfo;
316 	USHORT SiS_TVMode;
317 	USHORT SiS_LCDResInfo;
318 	USHORT SiS_LCDTypeInfo;
319 	USHORT SiS_LCDInfo;
320 	USHORT SiS_LCDInfo661;
321 	USHORT SiS_VBType;
322 	USHORT SiS_VBExtInfo;
323 	USHORT SiS_YPbPr;
324 	USHORT SiS_SelectCRT2Rate;
325 	USHORT SiS_SetFlag;
326 	USHORT SiS_RVBHCFACT;
327 	USHORT SiS_RVBHCMAX;
328 	USHORT SiS_RVBHRS;
329 	USHORT SiS_VGAVT;
330 	USHORT SiS_VGAHT;
331 	USHORT SiS_VT;
332 	USHORT SiS_HT;
333 	USHORT SiS_VGAVDE;
334 	USHORT SiS_VGAHDE;
335 	USHORT SiS_VDE;
336 	USHORT SiS_HDE;
337 	USHORT SiS_NewFlickerMode;
338 	USHORT SiS_RY1COE;
339 	USHORT SiS_RY2COE;
340 	USHORT SiS_RY3COE;
341 	USHORT SiS_RY4COE;
342 	USHORT SiS_LCDHDES;
343 	USHORT SiS_LCDVDES;
344 	USHORT SiS_DDC_Port;
345 	USHORT SiS_DDC_Index;
346 	USHORT SiS_DDC_Data;
347 	USHORT SiS_DDC_NData;
348 	USHORT SiS_DDC_Clk;
349 	USHORT SiS_DDC_NClk;
350 	USHORT SiS_DDC_DeviceAddr;
351 	USHORT SiS_DDC_ReadAddr;
352 	USHORT SiS_DDC_SecAddr;
353 	USHORT SiS_ChrontelInit;
354 	BOOLEAN SiS_SensibleSR11;
355 	USHORT SiS661LCD2TableSize;
356 
357 	USHORT SiS_PanelMinLVDS;
358 	USHORT SiS_PanelMin301;
359 
360 	const SiS_StStruct          *SiS_SModeIDTable;
361 	SiS_StandTableStruct        *SiS_StandTable;
362 	const SiS_ExtStruct         *SiS_EModeIDTable;
363 	const SiS_Ext2Struct        *SiS_RefIndex;
364 	const SiS_VBModeStruct      *SiS_VBModeIDTable;
365 	const SiS_CRT1TableStruct   *SiS_CRT1Table;
366 	const SiS_MCLKDataStruct    *SiS_MCLKData_0;
367 	const SiS_MCLKDataStruct    *SiS_MCLKData_1;
368 	SiS_VCLKDataStruct    	    *SiS_VCLKData;
369 	SiS_VBVCLKDataStruct        *SiS_VBVCLKData;
370 	const SiS_StResInfoStruct   *SiS_StResInfo;
371 	const SiS_ModeResInfoStruct *SiS_ModeResInfo;
372 
373 	const UCHAR                 *pSiS_OutputSelect;
374 	const UCHAR                 *pSiS_SoftSetting;
375 
376 	const DRAM4Type *SiS_SR15; /* pointer : point to array */
377 #ifndef LINUX_XF86
378 	UCHAR *pSiS_SR07;
379 	const DRAM4Type *SiS_CR40; /* pointer : point to array */
380 	UCHAR *SiS_CR49;
381 	UCHAR *SiS_SR25;
382 	UCHAR *pSiS_SR1F;
383 	UCHAR *pSiS_SR21;
384 	UCHAR *pSiS_SR22;
385 	UCHAR *pSiS_SR23;
386 	UCHAR *pSiS_SR24;
387 	UCHAR *pSiS_SR31;
388 	UCHAR *pSiS_SR32;
389 	UCHAR *pSiS_SR33;
390 	UCHAR *pSiS_CRT2Data_1_2;
391 	UCHAR *pSiS_CRT2Data_4_D;
392 	UCHAR *pSiS_CRT2Data_4_E;
393 	UCHAR *pSiS_CRT2Data_4_10;
394 	const USHORT *pSiS_RGBSenseData;
395 	const USHORT *pSiS_VideoSenseData;
396 	const USHORT *pSiS_YCSenseData;
397 	const USHORT *pSiS_RGBSenseData2;
398 	const USHORT *pSiS_VideoSenseData2;
399 	const USHORT *pSiS_YCSenseData2;
400 #endif
401 
402 	const SiS_PanelDelayTblStruct *SiS_PanelDelayTbl;
403 	const SiS_PanelDelayTblStruct *SiS_PanelDelayTblLVDS;
404 
405 	/* SiS bridge */
406 
407 	const UCHAR *SiS_NTSCPhase;
408 	const UCHAR *SiS_PALPhase;
409 	const UCHAR *SiS_NTSCPhase2;
410 	const UCHAR *SiS_PALPhase2;
411 	const UCHAR *SiS_PALMPhase;
412 	const UCHAR *SiS_PALNPhase;
413 	const UCHAR *SiS_PALMPhase2;
414 	const UCHAR *SiS_PALNPhase2;
415 	const UCHAR *SiS_SpecialPhase;
416 	const UCHAR *SiS_SpecialPhaseM;
417 	const UCHAR *SiS_SpecialPhaseJ;
418 	const SiS_LCDDataStruct  *SiS_ExtLCD1024x768Data;
419 	const SiS_LCDDataStruct  *SiS_St2LCD1024x768Data;
420 	const SiS_LCDDataStruct  *SiS_LCD1280x720Data;
421 	const SiS_LCDDataStruct  *SiS_StLCD1280x768_2Data;
422 	const SiS_LCDDataStruct  *SiS_ExtLCD1280x768_2Data;
423 	const SiS_LCDDataStruct  *SiS_LCD1280x768_3Data;
424 	const SiS_LCDDataStruct  *SiS_LCD1280x800Data;
425 	const SiS_LCDDataStruct  *SiS_LCD1280x960Data;
426 	const SiS_LCDDataStruct  *SiS_ExtLCD1280x1024Data;
427 	const SiS_LCDDataStruct  *SiS_St2LCD1280x1024Data;
428 	const SiS_LCDDataStruct  *SiS_StLCD1400x1050Data;
429 	const SiS_LCDDataStruct  *SiS_ExtLCD1400x1050Data;
430 	const SiS_LCDDataStruct  *SiS_StLCD1600x1200Data;
431 	const SiS_LCDDataStruct  *SiS_ExtLCD1600x1200Data;
432 	const SiS_LCDDataStruct  *SiS_LCD1680x1050Data;
433 	const SiS_LCDDataStruct  *SiS_NoScaleData;
434 	const SiS_TVDataStruct   *SiS_StPALData;
435 	const SiS_TVDataStruct   *SiS_ExtPALData;
436 	const SiS_TVDataStruct   *SiS_StNTSCData;
437 	const SiS_TVDataStruct   *SiS_ExtNTSCData;
438 	const SiS_TVDataStruct   *SiS_St1HiTVData;
439 	const SiS_TVDataStruct   *SiS_St2HiTVData;
440 	const SiS_TVDataStruct   *SiS_ExtHiTVData;
441 	const SiS_TVDataStruct   *SiS_St525iData;
442 	const SiS_TVDataStruct   *SiS_St525pData;
443 	const SiS_TVDataStruct   *SiS_St750pData;
444 	const SiS_TVDataStruct   *SiS_Ext525iData;
445 	const SiS_TVDataStruct   *SiS_Ext525pData;
446 	const SiS_TVDataStruct   *SiS_Ext750pData;
447 	const UCHAR *SiS_NTSCTiming;
448 	const UCHAR *SiS_PALTiming;
449 	const UCHAR *SiS_HiTVExtTiming;
450 	const UCHAR *SiS_HiTVSt1Timing;
451 	const UCHAR *SiS_HiTVSt2Timing;
452 	const UCHAR *SiS_HiTVGroup3Data;
453 	const UCHAR *SiS_HiTVGroup3Simu;
454 #if 0
455 	const UCHAR *SiS_HiTVTextTiming;
456 	const UCHAR *SiS_HiTVGroup3Text;
457 #endif
458 
459 	const SiS_Part2PortTblStruct *SiS_CRT2Part2_1024x768_1;
460 	const SiS_Part2PortTblStruct *SiS_CRT2Part2_1280x1024_1;
461 	const SiS_Part2PortTblStruct *SiS_CRT2Part2_1024x768_2;
462 	const SiS_Part2PortTblStruct *SiS_CRT2Part2_1280x1024_2;
463 	const SiS_Part2PortTblStruct *SiS_CRT2Part2_1024x768_3;
464 	const SiS_Part2PortTblStruct *SiS_CRT2Part2_1280x1024_3;
465 
466 	/* LVDS, Chrontel */
467 
468 	const SiS_LVDSDataStruct  *SiS_LVDS800x600Data_1;
469 	const SiS_LVDSDataStruct  *SiS_LVDS800x600Data_2;
470 	const SiS_LVDSDataStruct  *SiS_LVDS1024x768Data_1;
471 	const SiS_LVDSDataStruct  *SiS_LVDS1024x768Data_2;
472 	const SiS_LVDSDataStruct  *SiS_LVDS1280x1024Data_1;
473 	const SiS_LVDSDataStruct  *SiS_LVDS1280x1024Data_2;
474 	const SiS_LVDSDataStruct  *SiS_LVDS1280x960Data_1;
475 	const SiS_LVDSDataStruct  *SiS_LVDS1280x960Data_2;
476 	const SiS_LVDSDataStruct  *SiS_LVDS1400x1050Data_1;
477 	const SiS_LVDSDataStruct  *SiS_LVDS1400x1050Data_2;
478 	const SiS_LVDSDataStruct  *SiS_LVDS1600x1200Data_1;
479 	const SiS_LVDSDataStruct  *SiS_LVDS1600x1200Data_2;
480 	const SiS_LVDSDataStruct  *SiS_LVDS1280x768Data_1;
481 	const SiS_LVDSDataStruct  *SiS_LVDS1280x768Data_2;
482 	const SiS_LVDSDataStruct  *SiS_LVDS1024x600Data_1;
483 	const SiS_LVDSDataStruct  *SiS_LVDS1024x600Data_2;
484 	const SiS_LVDSDataStruct  *SiS_LVDS1152x768Data_1;
485 	const SiS_LVDSDataStruct  *SiS_LVDS1152x768Data_2;
486 	const SiS_LVDSDataStruct  *SiS_LVDS640x480Data_1;
487 	const SiS_LVDSDataStruct  *SiS_LVDS640x480Data_2;
488 	const SiS_LVDSDataStruct  *SiS_LVDS320x480Data_1;
489 	const SiS_LVDSDataStruct  *SiS_LVDSXXXxXXXData_1;
490 	const SiS_LVDSDataStruct  *SiS_LVDSBARCO1366Data_1;
491 	const SiS_LVDSDataStruct  *SiS_LVDSBARCO1366Data_2;
492 	const SiS_LVDSDataStruct  *SiS_LVDSBARCO1024Data_1;
493 	const SiS_LVDSDataStruct  *SiS_LVDSBARCO1024Data_2;
494 	const SiS_LVDSDataStruct  *SiS_LVDS848x480Data_1;
495 	const SiS_LVDSDataStruct  *SiS_LVDS848x480Data_2;
496 	const SiS_LVDSDataStruct  *SiS_CHTVUNTSCData;
497 	const SiS_LVDSDataStruct  *SiS_CHTVONTSCData;
498 	const SiS_LVDSDataStruct  *SiS_CHTVUPALData;
499 	const SiS_LVDSDataStruct  *SiS_CHTVOPALData;
500 	const SiS_LVDSDataStruct  *SiS_CHTVUPALMData;
501 	const SiS_LVDSDataStruct  *SiS_CHTVOPALMData;
502 	const SiS_LVDSDataStruct  *SiS_CHTVUPALNData;
503 	const SiS_LVDSDataStruct  *SiS_CHTVOPALNData;
504 	const SiS_LVDSDataStruct  *SiS_CHTVSOPALData;
505 
506 	const SiS_LVDSDesStruct  *SiS_PanelType00_1;
507 	const SiS_LVDSDesStruct  *SiS_PanelType01_1;
508 	const SiS_LVDSDesStruct  *SiS_PanelType02_1;
509 	const SiS_LVDSDesStruct  *SiS_PanelType03_1;
510 	const SiS_LVDSDesStruct  *SiS_PanelType04_1;
511 	const SiS_LVDSDesStruct  *SiS_PanelType05_1;
512 	const SiS_LVDSDesStruct  *SiS_PanelType06_1;
513 	const SiS_LVDSDesStruct  *SiS_PanelType07_1;
514 	const SiS_LVDSDesStruct  *SiS_PanelType08_1;
515 	const SiS_LVDSDesStruct  *SiS_PanelType09_1;
516 	const SiS_LVDSDesStruct  *SiS_PanelType0a_1;
517 	const SiS_LVDSDesStruct  *SiS_PanelType0b_1;
518 	const SiS_LVDSDesStruct  *SiS_PanelType0c_1;
519 	const SiS_LVDSDesStruct  *SiS_PanelType0d_1;
520 	const SiS_LVDSDesStruct  *SiS_PanelType0e_1;
521 	const SiS_LVDSDesStruct  *SiS_PanelType0f_1;
522 	const SiS_LVDSDesStruct  *SiS_PanelTypeNS_1;
523 	const SiS_LVDSDesStruct  *SiS_PanelType00_2;
524 	const SiS_LVDSDesStruct  *SiS_PanelType01_2;
525 	const SiS_LVDSDesStruct  *SiS_PanelType02_2;
526 	const SiS_LVDSDesStruct  *SiS_PanelType03_2;
527 	const SiS_LVDSDesStruct  *SiS_PanelType04_2;
528 	const SiS_LVDSDesStruct  *SiS_PanelType05_2;
529 	const SiS_LVDSDesStruct  *SiS_PanelType06_2;
530 	const SiS_LVDSDesStruct  *SiS_PanelType07_2;
531 	const SiS_LVDSDesStruct  *SiS_PanelType08_2;
532 	const SiS_LVDSDesStruct  *SiS_PanelType09_2;
533 	const SiS_LVDSDesStruct  *SiS_PanelType0a_2;
534 	const SiS_LVDSDesStruct  *SiS_PanelType0b_2;
535 	const SiS_LVDSDesStruct  *SiS_PanelType0c_2;
536 	const SiS_LVDSDesStruct  *SiS_PanelType0d_2;
537 	const SiS_LVDSDesStruct  *SiS_PanelType0e_2;
538 	const SiS_LVDSDesStruct  *SiS_PanelType0f_2;
539 	const SiS_LVDSDesStruct  *SiS_PanelTypeNS_2;
540 	const SiS_LVDSDesStruct  *SiS_CHTVUNTSCDesData;
541 	const SiS_LVDSDesStruct  *SiS_CHTVONTSCDesData;
542 	const SiS_LVDSDesStruct  *SiS_CHTVUPALDesData;
543 	const SiS_LVDSDesStruct  *SiS_CHTVOPALDesData;
544 
545 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1800x600_1;
546 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x768_1;
547 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x1024_1;
548 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11400x1050_1;
549 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x768_1;
550 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x600_1;
551 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11152x768_1;
552 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11600x1200_1;
553 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1800x600_1_H;
554 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x768_1_H;
555 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x1024_1_H;
556 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11400x1050_1_H;
557 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x768_1_H;
558 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x600_1_H;
559 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11152x768_1_H;
560 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11600x1200_1_H;
561 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1800x600_2;
562 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x768_2;
563 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x1024_2;
564 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11400x1050_2;
565 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x768_2;
566 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x600_2;
567 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11152x768_2;
568 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11600x1200_2;
569 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1800x600_2_H;
570 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x768_2_H;
571 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x1024_2_H;
572 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11400x1050_2_H;
573 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11280x768_2_H;
574 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11024x600_2_H;
575 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11152x768_2_H;
576 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT11600x1200_2_H;
577 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1XXXxXXX_1;
578 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1XXXxXXX_1_H;
579 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1640x480_1;
580 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1640x480_1_H;
581 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1640x480_2;
582 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1640x480_2_H;
583 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1640x480_3;
584 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1640x480_3_H;
585 	const SiS_LVDSCRT1DataStruct  *SiS_LVDSCRT1320x480_1;
586 	const SiS_LVDSCRT1DataStruct  *SiS_CHTVCRT1UNTSC;
587 	const SiS_LVDSCRT1DataStruct  *SiS_CHTVCRT1ONTSC;
588 	const SiS_LVDSCRT1DataStruct  *SiS_CHTVCRT1UPAL;
589 	const SiS_LVDSCRT1DataStruct  *SiS_CHTVCRT1OPAL;
590 	const SiS_LVDSCRT1DataStruct  *SiS_CHTVCRT1SOPAL;
591 
592 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_UNTSC;
593 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_ONTSC;
594 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_UPAL;
595 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_OPAL;
596 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_UPALM;
597 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_OPALM;
598 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_UPALN;
599 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_OPALN;
600 	const SiS_CHTVRegDataStruct *SiS_CHTVReg_SOPAL;
601 
602 	const UCHAR *SiS_CHTVVCLKUNTSC;
603 	const UCHAR *SiS_CHTVVCLKONTSC;
604 	const UCHAR *SiS_CHTVVCLKUPAL;
605 	const UCHAR *SiS_CHTVVCLKOPAL;
606 	const UCHAR *SiS_CHTVVCLKUPALM;
607 	const UCHAR *SiS_CHTVVCLKOPALM;
608 	const UCHAR *SiS_CHTVVCLKUPALN;
609 	const UCHAR *SiS_CHTVVCLKOPALN;
610 	const UCHAR *SiS_CHTVVCLKSOPAL;
611 
612 	USHORT  PanelXRes, PanelHT;
613 	USHORT  PanelYRes, PanelVT;
614 	USHORT  PanelHRS,  PanelHRE;
615   	USHORT 	PanelVRS,  PanelVRE;
616 	USHORT  PanelVCLKIdx300;
617 	USHORT  PanelVCLKIdx315;
618 
619 	BOOLEAN UseCustomMode;
620 	BOOLEAN CRT1UsesCustomMode;
621 	USHORT  CHDisplay;
622 	USHORT  CHSyncStart;
623 	USHORT  CHSyncEnd;
624 	USHORT  CHTotal;
625 	USHORT  CHBlankStart;
626 	USHORT  CHBlankEnd;
627 	USHORT  CVDisplay;
628 	USHORT  CVSyncStart;
629 	USHORT  CVSyncEnd;
630 	USHORT  CVTotal;
631 	USHORT  CVBlankStart;
632 	USHORT  CVBlankEnd;
633 	ULONG   CDClock;
634 	ULONG   CFlags;
635 	UCHAR   CCRT1CRTC[17];
636 	UCHAR   CSR2B;
637 	UCHAR   CSR2C;
638 	USHORT  CSRClock;
639 	USHORT  CSRClock_CRT1;
640 	USHORT  CModeFlag;
641 	USHORT  CModeFlag_CRT1;
642 	USHORT  CInfoFlag;
643 
644 	int	LVDSHL;
645 
646 	BOOLEAN Backup;
647 	UCHAR Backup_Mode;
648 	UCHAR Backup_14;
649 	UCHAR Backup_15;
650 	UCHAR Backup_16;
651 	UCHAR Backup_17;
652 	UCHAR Backup_18;
653 	UCHAR Backup_19;
654 	UCHAR Backup_1a;
655 	UCHAR Backup_1b;
656 	UCHAR Backup_1c;
657 	UCHAR Backup_1d;
658 
659 	int     UsePanelScaler;
660 	int	CenterScreen;
661 
662 	USHORT  CP_Vendor, CP_Product;
663 	BOOLEAN CP_HaveCustomData;
664 	int     CP_PreferredX, CP_PreferredY, CP_PreferredIndex;
665 	int	CP_MaxX, CP_MaxY, CP_MaxClock;
666 	BOOLEAN CP_Supports64048075;
667 	int     CP_HDisplay[7], CP_VDisplay[7];	/* For Custom LCD panel dimensions */
668     	int     CP_HTotal[7], CP_VTotal[7];
669     	int     CP_HSyncStart[7], CP_VSyncStart[7];
670     	int     CP_HSyncEnd[7], CP_VSyncEnd[7];
671 	int     CP_HBlankStart[7], CP_VBlankStart[7];
672 	int     CP_HBlankEnd[7], CP_VBlankEnd[7];
673     	int     CP_Clock[7];
674 	BOOLEAN CP_DataValid[7];
675 	BOOLEAN CP_HSync_P[7], CP_VSync_P[7], CP_SyncValid[7];
676 } SiS_Private;
677 
678 #endif
679 
680