xref: /OK3568_Linux_fs/kernel/drivers/usb/misc/sisusbvga/sisusb_struct.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * General structure definitions for universal mode switching modules
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * If distributed as part of the Linux kernel, the following license terms
8*4882a593Smuzhiyun  * apply:
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * * This program is free software; you can redistribute it and/or modify
11*4882a593Smuzhiyun  * * it under the terms of the GNU General Public License as published by
12*4882a593Smuzhiyun  * * the Free Software Foundation; either version 2 of the named License,
13*4882a593Smuzhiyun  * * or any later version.
14*4882a593Smuzhiyun  * *
15*4882a593Smuzhiyun  * * This program is distributed in the hope that it will be useful,
16*4882a593Smuzhiyun  * * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*4882a593Smuzhiyun  * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18*4882a593Smuzhiyun  * * GNU General Public License for more details.
19*4882a593Smuzhiyun  * *
20*4882a593Smuzhiyun  * * You should have received a copy of the GNU General Public License
21*4882a593Smuzhiyun  * * along with this program; if not, write to the Free Software
22*4882a593Smuzhiyun  * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  * Otherwise, the following license terms apply:
25*4882a593Smuzhiyun  *
26*4882a593Smuzhiyun  * * Redistribution and use in source and binary forms, with or without
27*4882a593Smuzhiyun  * * modification, are permitted provided that the following conditions
28*4882a593Smuzhiyun  * * are met:
29*4882a593Smuzhiyun  * * 1) Redistributions of source code must retain the above copyright
30*4882a593Smuzhiyun  * *    notice, this list of conditions and the following disclaimer.
31*4882a593Smuzhiyun  * * 2) Redistributions in binary form must reproduce the above copyright
32*4882a593Smuzhiyun  * *    notice, this list of conditions and the following disclaimer in the
33*4882a593Smuzhiyun  * *    documentation and/or other materials provided with the distribution.
34*4882a593Smuzhiyun  * * 3) The name of the author may not be used to endorse or promote products
35*4882a593Smuzhiyun  * *    derived from this software without specific prior written permission.
36*4882a593Smuzhiyun  * *
37*4882a593Smuzhiyun  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
38*4882a593Smuzhiyun  * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39*4882a593Smuzhiyun  * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
40*4882a593Smuzhiyun  * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
41*4882a593Smuzhiyun  * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42*4882a593Smuzhiyun  * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
43*4882a593Smuzhiyun  * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
44*4882a593Smuzhiyun  * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
45*4882a593Smuzhiyun  * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
46*4882a593Smuzhiyun  * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47*4882a593Smuzhiyun  *
48*4882a593Smuzhiyun  * Author:	Thomas Winischhofer <thomas@winischhofer.net>
49*4882a593Smuzhiyun  *
50*4882a593Smuzhiyun  */
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #ifndef _SISUSB_STRUCT_H_
53*4882a593Smuzhiyun #define _SISUSB_STRUCT_H_
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun struct SiS_St {
56*4882a593Smuzhiyun 	unsigned char St_ModeID;
57*4882a593Smuzhiyun 	unsigned short St_ModeFlag;
58*4882a593Smuzhiyun 	unsigned char St_StTableIndex;
59*4882a593Smuzhiyun 	unsigned char St_CRT2CRTC;
60*4882a593Smuzhiyun 	unsigned char St_ResInfo;
61*4882a593Smuzhiyun 	unsigned char VB_StTVFlickerIndex;
62*4882a593Smuzhiyun 	unsigned char VB_StTVEdgeIndex;
63*4882a593Smuzhiyun 	unsigned char VB_StTVYFilterIndex;
64*4882a593Smuzhiyun 	unsigned char St_PDC;
65*4882a593Smuzhiyun };
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun struct SiS_StandTable {
68*4882a593Smuzhiyun 	unsigned char CRT_COLS;
69*4882a593Smuzhiyun 	unsigned char ROWS;
70*4882a593Smuzhiyun 	unsigned char CHAR_HEIGHT;
71*4882a593Smuzhiyun 	unsigned short CRT_LEN;
72*4882a593Smuzhiyun 	unsigned char SR[4];
73*4882a593Smuzhiyun 	unsigned char MISC;
74*4882a593Smuzhiyun 	unsigned char CRTC[0x19];
75*4882a593Smuzhiyun 	unsigned char ATTR[0x14];
76*4882a593Smuzhiyun 	unsigned char GRC[9];
77*4882a593Smuzhiyun };
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun struct SiS_StResInfo_S {
80*4882a593Smuzhiyun 	unsigned short HTotal;
81*4882a593Smuzhiyun 	unsigned short VTotal;
82*4882a593Smuzhiyun };
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun struct SiS_Ext {
85*4882a593Smuzhiyun 	unsigned char Ext_ModeID;
86*4882a593Smuzhiyun 	unsigned short Ext_ModeFlag;
87*4882a593Smuzhiyun 	unsigned short Ext_VESAID;
88*4882a593Smuzhiyun 	unsigned char Ext_RESINFO;
89*4882a593Smuzhiyun 	unsigned char VB_ExtTVFlickerIndex;
90*4882a593Smuzhiyun 	unsigned char VB_ExtTVEdgeIndex;
91*4882a593Smuzhiyun 	unsigned char VB_ExtTVYFilterIndex;
92*4882a593Smuzhiyun 	unsigned char VB_ExtTVYFilterIndexROM661;
93*4882a593Smuzhiyun 	unsigned char REFindex;
94*4882a593Smuzhiyun 	char ROMMODEIDX661;
95*4882a593Smuzhiyun };
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun struct SiS_Ext2 {
98*4882a593Smuzhiyun 	unsigned short Ext_InfoFlag;
99*4882a593Smuzhiyun 	unsigned char Ext_CRT1CRTC;
100*4882a593Smuzhiyun 	unsigned char Ext_CRTVCLK;
101*4882a593Smuzhiyun 	unsigned char Ext_CRT2CRTC;
102*4882a593Smuzhiyun 	unsigned char Ext_CRT2CRTC_NS;
103*4882a593Smuzhiyun 	unsigned char ModeID;
104*4882a593Smuzhiyun 	unsigned short XRes;
105*4882a593Smuzhiyun 	unsigned short YRes;
106*4882a593Smuzhiyun 	unsigned char Ext_PDC;
107*4882a593Smuzhiyun 	unsigned char Ext_FakeCRT2CRTC;
108*4882a593Smuzhiyun 	unsigned char Ext_FakeCRT2Clk;
109*4882a593Smuzhiyun };
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun struct SiS_CRT1Table {
112*4882a593Smuzhiyun 	unsigned char CR[17];
113*4882a593Smuzhiyun };
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun struct SiS_VCLKData {
116*4882a593Smuzhiyun 	unsigned char SR2B, SR2C;
117*4882a593Smuzhiyun 	unsigned short CLOCK;
118*4882a593Smuzhiyun };
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun struct SiS_ModeResInfo {
121*4882a593Smuzhiyun 	unsigned short HTotal;
122*4882a593Smuzhiyun 	unsigned short VTotal;
123*4882a593Smuzhiyun 	unsigned char XChar;
124*4882a593Smuzhiyun 	unsigned char YChar;
125*4882a593Smuzhiyun };
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun struct SiS_Private {
128*4882a593Smuzhiyun 	void *sisusb;
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun 	unsigned long IOAddress;
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun 	unsigned long SiS_P3c4;
133*4882a593Smuzhiyun 	unsigned long SiS_P3d4;
134*4882a593Smuzhiyun 	unsigned long SiS_P3c0;
135*4882a593Smuzhiyun 	unsigned long SiS_P3ce;
136*4882a593Smuzhiyun 	unsigned long SiS_P3c2;
137*4882a593Smuzhiyun 	unsigned long SiS_P3ca;
138*4882a593Smuzhiyun 	unsigned long SiS_P3c6;
139*4882a593Smuzhiyun 	unsigned long SiS_P3c7;
140*4882a593Smuzhiyun 	unsigned long SiS_P3c8;
141*4882a593Smuzhiyun 	unsigned long SiS_P3c9;
142*4882a593Smuzhiyun 	unsigned long SiS_P3cb;
143*4882a593Smuzhiyun 	unsigned long SiS_P3cc;
144*4882a593Smuzhiyun 	unsigned long SiS_P3cd;
145*4882a593Smuzhiyun 	unsigned long SiS_P3da;
146*4882a593Smuzhiyun 	unsigned long SiS_Part1Port;
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun 	unsigned char SiS_MyCR63;
149*4882a593Smuzhiyun 	unsigned short SiS_CRT1Mode;
150*4882a593Smuzhiyun 	unsigned short SiS_ModeType;
151*4882a593Smuzhiyun 	unsigned short SiS_SetFlag;
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun 	const struct SiS_StandTable *SiS_StandTable;
154*4882a593Smuzhiyun 	const struct SiS_St *SiS_SModeIDTable;
155*4882a593Smuzhiyun 	const struct SiS_Ext *SiS_EModeIDTable;
156*4882a593Smuzhiyun 	const struct SiS_Ext2 *SiS_RefIndex;
157*4882a593Smuzhiyun 	const struct SiS_CRT1Table *SiS_CRT1Table;
158*4882a593Smuzhiyun 	const struct SiS_VCLKData *SiS_VCLKData;
159*4882a593Smuzhiyun 	const struct SiS_ModeResInfo *SiS_ModeResInfo;
160*4882a593Smuzhiyun };
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun #endif
163