11bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer/*
21bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * General structure definitions for universal mode switching modules
31bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
41bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
51bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
61bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * If distributed as part of the Linux kernel, the following license terms
71bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * apply:
81bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
91bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * This program is free software; you can redistribute it and/or modify
101bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * it under the terms of the GNU General Public License as published by
111bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * the Free Software Foundation; either version 2 of the named License,
121bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * or any later version.
131bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *
141bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * This program is distributed in the hope that it will be useful,
151bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * but WITHOUT ANY WARRANTY; without even the implied warranty of
161bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
171bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * GNU General Public License for more details.
181bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *
191bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * You should have received a copy of the GNU General Public License
201bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * along with this program; if not, write to the Free Software
211bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
221bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
231bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * Otherwise, the following license terms apply:
241bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
251bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * Redistribution and use in source and binary forms, with or without
261bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * modification, are permitted provided that the following conditions
271bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * are met:
281bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * 1) Redistributions of source code must retain the above copyright
291bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *    notice, this list of conditions and the following disclaimer.
301bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * 2) Redistributions in binary form must reproduce the above copyright
311bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *    notice, this list of conditions and the following disclaimer in the
321bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *    documentation and/or other materials provided with the distribution.
331bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * 3) The name of the author may not be used to endorse or promote products
341bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *    derived from this software without specific prior written permission.
351bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * *
361bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
371bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
381bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
391bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
401bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
411bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
421bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
431bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
441bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
451bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
461bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
47ed86d97068c7d53561d3e9b59db6c6b11f6091c7Felipe Balbi * Author:	Thomas Winischhofer <thomas@winischhofer.net>
481bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer *
491bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer */
501bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
511bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer#ifndef _SISUSB_STRUCT_H_
521bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer#define _SISUSB_STRUCT_H_
531bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
541bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhoferstruct SiS_St {
55ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char St_ModeID;
56ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short St_ModeFlag;
57ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char St_StTableIndex;
58ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char St_CRT2CRTC;
59ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char St_ResInfo;
60ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_StTVFlickerIndex;
61ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_StTVEdgeIndex;
62ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_StTVYFilterIndex;
63ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char St_PDC;
641bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
651bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
66ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_StandTable {
67ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char CRT_COLS;
68ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char ROWS;
69ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char CHAR_HEIGHT;
70ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short CRT_LEN;
71ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char SR[4];
72ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char MISC;
73ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char CRTC[0x19];
74ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char ATTR[0x14];
75ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char GRC[9];
761bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
771bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
781bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhoferstruct SiS_StResInfo_S {
79ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short HTotal;
80ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short VTotal;
811bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
821bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
83ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_Ext {
84ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_ModeID;
85ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short Ext_ModeFlag;
86ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short Ext_VESAID;
87ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_RESINFO;
88ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_ExtTVFlickerIndex;
89ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_ExtTVEdgeIndex;
90ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_ExtTVYFilterIndex;
91ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char VB_ExtTVYFilterIndexROM661;
92ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char REFindex;
93ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	char ROMMODEIDX661;
941bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
951bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
96ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_Ext2 {
97ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short Ext_InfoFlag;
98ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_CRT1CRTC;
99ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_CRTVCLK;
100ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_CRT2CRTC;
101ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_CRT2CRTC_NS;
102ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char ModeID;
103ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short XRes;
104ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short YRes;
105ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_PDC;
106ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_FakeCRT2CRTC;
107ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char Ext_FakeCRT2Clk;
1081bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
1091bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
110ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_CRT1Table {
111ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char CR[17];
1121bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
1131bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
114ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_VCLKData {
115ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char SR2B, SR2C;
116ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short CLOCK;
1171bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
1181bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
119ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_ModeResInfo {
120ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short HTotal;
121ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short VTotal;
122ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char XChar;
123ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char YChar;
1241bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
1251bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
126ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbistruct SiS_Private {
1271bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	void *sisusb;
1281bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
1291bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long IOAddress;
1301bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
1311bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c4;
1321bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3d4;
1331bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c0;
1341bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3ce;
1351bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c2;
1361bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3ca;
1371bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c6;
1381bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c7;
1391bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c8;
1401bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3c9;
1411bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3cb;
1421bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3cc;
1431bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3cd;
1441bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_P3da;
1451bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer	unsigned long SiS_Part1Port;
1461bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
147ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned char SiS_MyCR63;
148ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short SiS_CRT1Mode;
149ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short SiS_ModeType;
150ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	unsigned short SiS_SetFlag;
151ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi
152ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_StandTable *SiS_StandTable;
153ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_St *SiS_SModeIDTable;
154ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_Ext *SiS_EModeIDTable;
155ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_Ext2 *SiS_RefIndex;
156ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_CRT1Table *SiS_CRT1Table;
157ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_VCLKData *SiS_VCLKData;
158ecb8b190bcf49e67a6bd955340ecc07d243b6efaFelipe Balbi	const struct SiS_ModeResInfo *SiS_ModeResInfo;
1591bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer};
1601bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer
1611bbb4f2035d94d86e52e9b5341c142dcb39bb879Thomas Winischhofer#endif
162