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