xref: /OK3568_Linux_fs/kernel/drivers/usb/misc/sisusbvga/sisusb_init.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
2*4882a593Smuzhiyun /* $XFree86$ */
3*4882a593Smuzhiyun /* $XdotOrg$ */
4*4882a593Smuzhiyun /*
5*4882a593Smuzhiyun  * Data and prototypes for init.c
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * If distributed as part of the Linux kernel, the following license terms
10*4882a593Smuzhiyun  * apply:
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  * * This program is free software; you can redistribute it and/or modify
13*4882a593Smuzhiyun  * * it under the terms of the GNU General Public License as published by
14*4882a593Smuzhiyun  * * the Free Software Foundation; either version 2 of the named License,
15*4882a593Smuzhiyun  * * or any later version.
16*4882a593Smuzhiyun  * *
17*4882a593Smuzhiyun  * * This program is distributed in the hope that it will be useful,
18*4882a593Smuzhiyun  * * but WITHOUT ANY WARRANTY; without even the implied warranty of
19*4882a593Smuzhiyun  * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20*4882a593Smuzhiyun  * * GNU General Public License for more details.
21*4882a593Smuzhiyun  * *
22*4882a593Smuzhiyun  * * You should have received a copy of the GNU General Public License
23*4882a593Smuzhiyun  * * along with this program; if not, write to the Free Software
24*4882a593Smuzhiyun  * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
25*4882a593Smuzhiyun  *
26*4882a593Smuzhiyun  * Otherwise, the following license terms apply:
27*4882a593Smuzhiyun  *
28*4882a593Smuzhiyun  * * Redistribution and use in source and binary forms, with or without
29*4882a593Smuzhiyun  * * modification, are permitted provided that the following conditions
30*4882a593Smuzhiyun  * * are met:
31*4882a593Smuzhiyun  * * 1) Redistributions of source code must retain the above copyright
32*4882a593Smuzhiyun  * *    notice, this list of conditions and the following disclaimer.
33*4882a593Smuzhiyun  * * 2) Redistributions in binary form must reproduce the above copyright
34*4882a593Smuzhiyun  * *    notice, this list of conditions and the following disclaimer in the
35*4882a593Smuzhiyun  * *    documentation and/or other materials provided with the distribution.
36*4882a593Smuzhiyun  * * 3) The name of the author may not be used to endorse or promote products
37*4882a593Smuzhiyun  * *    derived from this software without specific prior written permission.
38*4882a593Smuzhiyun  * *
39*4882a593Smuzhiyun  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
40*4882a593Smuzhiyun  * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
41*4882a593Smuzhiyun  * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
42*4882a593Smuzhiyun  * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
43*4882a593Smuzhiyun  * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44*4882a593Smuzhiyun  * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
45*4882a593Smuzhiyun  * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
46*4882a593Smuzhiyun  * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
47*4882a593Smuzhiyun  * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
48*4882a593Smuzhiyun  * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49*4882a593Smuzhiyun  *
50*4882a593Smuzhiyun  * Author:	Thomas Winischhofer <thomas@winischhofer.net>
51*4882a593Smuzhiyun  *
52*4882a593Smuzhiyun  */
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #ifndef _SISUSB_INIT_H_
55*4882a593Smuzhiyun #define _SISUSB_INIT_H_
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun /* SiS_ModeType */
58*4882a593Smuzhiyun #define ModeText		0x00
59*4882a593Smuzhiyun #define ModeCGA			0x01
60*4882a593Smuzhiyun #define ModeEGA			0x02
61*4882a593Smuzhiyun #define ModeVGA			0x03
62*4882a593Smuzhiyun #define Mode15Bpp		0x04
63*4882a593Smuzhiyun #define Mode16Bpp		0x05
64*4882a593Smuzhiyun #define Mode24Bpp		0x06
65*4882a593Smuzhiyun #define Mode32Bpp		0x07
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun #define ModeTypeMask		0x07
68*4882a593Smuzhiyun #define IsTextMode		0x07
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define DACInfoFlag		0x0018
71*4882a593Smuzhiyun #define MemoryInfoFlag		0x01E0
72*4882a593Smuzhiyun #define MemorySizeShift		5
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun /* modeflag */
75*4882a593Smuzhiyun #define Charx8Dot		0x0200
76*4882a593Smuzhiyun #define LineCompareOff		0x0400
77*4882a593Smuzhiyun #define CRT2Mode		0x0800
78*4882a593Smuzhiyun #define HalfDCLK		0x1000
79*4882a593Smuzhiyun #define NoSupportSimuTV		0x2000
80*4882a593Smuzhiyun #define NoSupportLCDScale	0x4000	/* SiS bridge: No scaling possible (no matter what panel) */
81*4882a593Smuzhiyun #define DoubleScanMode		0x8000
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun /* Infoflag */
84*4882a593Smuzhiyun #define SupportTV		0x0008
85*4882a593Smuzhiyun #define SupportTV1024		0x0800
86*4882a593Smuzhiyun #define SupportCHTV		0x0800
87*4882a593Smuzhiyun #define Support64048060Hz	0x0800	/* Special for 640x480 LCD */
88*4882a593Smuzhiyun #define SupportHiVision		0x0010
89*4882a593Smuzhiyun #define SupportYPbPr750p	0x1000
90*4882a593Smuzhiyun #define SupportLCD		0x0020
91*4882a593Smuzhiyun #define SupportRAMDAC2		0x0040	/* All           (<= 100Mhz) */
92*4882a593Smuzhiyun #define SupportRAMDAC2_135	0x0100	/* All except DH (<= 135Mhz) */
93*4882a593Smuzhiyun #define SupportRAMDAC2_162	0x0200	/* B, C          (<= 162Mhz) */
94*4882a593Smuzhiyun #define SupportRAMDAC2_202	0x0400	/* C             (<= 202Mhz) */
95*4882a593Smuzhiyun #define InterlaceMode		0x0080
96*4882a593Smuzhiyun #define SyncPP			0x0000
97*4882a593Smuzhiyun #define SyncPN			0x4000
98*4882a593Smuzhiyun #define SyncNP			0x8000
99*4882a593Smuzhiyun #define SyncNN			0xc000
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun /* SetFlag */
102*4882a593Smuzhiyun #define ProgrammingCRT2		0x0001
103*4882a593Smuzhiyun #define LowModeTests		0x0002
104*4882a593Smuzhiyun #define LCDVESATiming		0x0008
105*4882a593Smuzhiyun #define EnableLVDSDDA		0x0010
106*4882a593Smuzhiyun #define SetDispDevSwitchFlag	0x0020
107*4882a593Smuzhiyun #define CheckWinDos		0x0040
108*4882a593Smuzhiyun #define SetDOSMode		0x0080
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun /* Index in ModeResInfo table */
111*4882a593Smuzhiyun #define SIS_RI_320x200		0
112*4882a593Smuzhiyun #define SIS_RI_320x240		1
113*4882a593Smuzhiyun #define SIS_RI_320x400		2
114*4882a593Smuzhiyun #define SIS_RI_400x300		3
115*4882a593Smuzhiyun #define SIS_RI_512x384		4
116*4882a593Smuzhiyun #define SIS_RI_640x400		5
117*4882a593Smuzhiyun #define SIS_RI_640x480		6
118*4882a593Smuzhiyun #define SIS_RI_800x600		7
119*4882a593Smuzhiyun #define SIS_RI_1024x768		8
120*4882a593Smuzhiyun #define SIS_RI_1280x1024	9
121*4882a593Smuzhiyun #define SIS_RI_1600x1200	10
122*4882a593Smuzhiyun #define SIS_RI_1920x1440	11
123*4882a593Smuzhiyun #define SIS_RI_2048x1536	12
124*4882a593Smuzhiyun #define SIS_RI_720x480		13
125*4882a593Smuzhiyun #define SIS_RI_720x576		14
126*4882a593Smuzhiyun #define SIS_RI_1280x960		15
127*4882a593Smuzhiyun #define SIS_RI_800x480		16
128*4882a593Smuzhiyun #define SIS_RI_1024x576		17
129*4882a593Smuzhiyun #define SIS_RI_1280x720		18
130*4882a593Smuzhiyun #define SIS_RI_856x480		19
131*4882a593Smuzhiyun #define SIS_RI_1280x768		20
132*4882a593Smuzhiyun #define SIS_RI_1400x1050	21
133*4882a593Smuzhiyun #define SIS_RI_1152x864		22	/* Up to here SiS conforming */
134*4882a593Smuzhiyun #define SIS_RI_848x480		23
135*4882a593Smuzhiyun #define SIS_RI_1360x768		24
136*4882a593Smuzhiyun #define SIS_RI_1024x600		25
137*4882a593Smuzhiyun #define SIS_RI_1152x768		26
138*4882a593Smuzhiyun #define SIS_RI_768x576		27
139*4882a593Smuzhiyun #define SIS_RI_1360x1024	28
140*4882a593Smuzhiyun #define SIS_RI_1680x1050	29
141*4882a593Smuzhiyun #define SIS_RI_1280x800		30
142*4882a593Smuzhiyun #define SIS_RI_1920x1080	31
143*4882a593Smuzhiyun #define SIS_RI_960x540		32
144*4882a593Smuzhiyun #define SIS_RI_960x600		33
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun #define SIS_VIDEO_CAPTURE	0x00 - 0x30
147*4882a593Smuzhiyun #define SIS_VIDEO_PLAYBACK	0x02 - 0x30
148*4882a593Smuzhiyun #define SIS_CRT2_PORT_04	0x04 - 0x30
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun int SiSUSBSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
151*4882a593Smuzhiyun int SiSUSBSetVESAMode(struct SiS_Private *SiS_Pr, unsigned short VModeNo);
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun extern int sisusb_setreg(struct sisusb_usb_data *sisusb, u32 port, u8 data);
154*4882a593Smuzhiyun extern int sisusb_getreg(struct sisusb_usb_data *sisusb, u32 port, u8 * data);
155*4882a593Smuzhiyun extern int sisusb_setidxreg(struct sisusb_usb_data *sisusb, u32 port,
156*4882a593Smuzhiyun 			    u8 index, u8 data);
157*4882a593Smuzhiyun extern int sisusb_getidxreg(struct sisusb_usb_data *sisusb, u32 port,
158*4882a593Smuzhiyun 			    u8 index, u8 * data);
159*4882a593Smuzhiyun extern int sisusb_setidxregandor(struct sisusb_usb_data *sisusb, u32 port,
160*4882a593Smuzhiyun 				 u8 idx, u8 myand, u8 myor);
161*4882a593Smuzhiyun extern int sisusb_setidxregor(struct sisusb_usb_data *sisusb, u32 port,
162*4882a593Smuzhiyun 			      u8 index, u8 myor);
163*4882a593Smuzhiyun extern int sisusb_setidxregand(struct sisusb_usb_data *sisusb, u32 port,
164*4882a593Smuzhiyun 			       u8 idx, u8 myand);
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun void sisusb_delete(struct kref *kref);
167*4882a593Smuzhiyun int sisusb_writeb(struct sisusb_usb_data *sisusb, u32 adr, u8 data);
168*4882a593Smuzhiyun int sisusb_readb(struct sisusb_usb_data *sisusb, u32 adr, u8 * data);
169*4882a593Smuzhiyun int sisusb_copy_memory(struct sisusb_usb_data *sisusb, u8 *src,
170*4882a593Smuzhiyun 		       u32 dest, int length);
171*4882a593Smuzhiyun int sisusb_reset_text_mode(struct sisusb_usb_data *sisusb, int init);
172*4882a593Smuzhiyun int sisusbcon_do_font_op(struct sisusb_usb_data *sisusb, int set, int slot,
173*4882a593Smuzhiyun 			 u8 * arg, int cmapsz, int ch512, int dorecalc,
174*4882a593Smuzhiyun 			 struct vc_data *c, int fh, int uplock);
175*4882a593Smuzhiyun void sisusb_set_cursor(struct sisusb_usb_data *sisusb, unsigned int location);
176*4882a593Smuzhiyun int sisusb_console_init(struct sisusb_usb_data *sisusb, int first, int last);
177*4882a593Smuzhiyun void sisusb_console_exit(struct sisusb_usb_data *sisusb);
178*4882a593Smuzhiyun void sisusb_init_concode(void);
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun #endif
181