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