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
56struct SiS_PanelDelayTbl {
57 	unsigned char timer[2];
58};
59
60struct 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
69struct 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
86struct SiS_LVDSData {
87	unsigned short VGAHT;
88	unsigned short VGAVT;
89	unsigned short LCDHT;
90	unsigned short LCDVT;
91};
92
93struct SiS_LVDSDes {
94	unsigned short LCDHDES;
95	unsigned short LCDVDES;
96};
97
98struct SiS_LVDSCRT1Data {
99	unsigned char  CR[15];
100};
101
102struct SiS_CHTVRegData {
103	unsigned char  Reg[16];
104};
105
106struct 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
118struct 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
129struct 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
141struct 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
154struct 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
172struct SiS_Part2PortTbl {
173 	unsigned char  CR[12];
174};
175
176struct SiS_CRT1Table {
177	unsigned char  CR[17];
178};
179
180struct SiS_MCLKData {
181	unsigned char  SR28,SR29,SR2A;
182	unsigned short CLOCK;
183};
184
185struct SiS_VCLKData {
186	unsigned char  SR2B,SR2C;
187	unsigned short CLOCK;
188};
189
190struct SiS_VBVCLKData {
191	unsigned char  Part4_A,Part4_B;
192	unsigned short CLOCK;
193};
194
195struct SiS_StResInfo_S {
196	unsigned short HTotal;
197	unsigned short VTotal;
198};
199
200struct 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
232struct 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