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