1*4882a593Smuzhiyun /* $XFree86$ */ 2*4882a593Smuzhiyun /* $XdotOrg$ */ 3*4882a593Smuzhiyun /* 4*4882a593Smuzhiyun * General structure definitions for universal mode switching modules 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * If distributed as part of the Linux kernel, the following license terms 9*4882a593Smuzhiyun * apply: 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * * This program is free software; you can redistribute it and/or modify 12*4882a593Smuzhiyun * * it under the terms of the GNU General Public License as published by 13*4882a593Smuzhiyun * * the Free Software Foundation; either version 2 of the named License, 14*4882a593Smuzhiyun * * or any later version. 15*4882a593Smuzhiyun * * 16*4882a593Smuzhiyun * * This program is distributed in the hope that it will be useful, 17*4882a593Smuzhiyun * * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*4882a593Smuzhiyun * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*4882a593Smuzhiyun * * GNU General Public License for more details. 20*4882a593Smuzhiyun * * 21*4882a593Smuzhiyun * * You should have received a copy of the GNU General Public License 22*4882a593Smuzhiyun * * along with this program; if not, write to the Free Software 23*4882a593Smuzhiyun * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * Otherwise, the following license terms apply: 26*4882a593Smuzhiyun * 27*4882a593Smuzhiyun * * Redistribution and use in source and binary forms, with or without 28*4882a593Smuzhiyun * * modification, are permitted provided that the following conditions 29*4882a593Smuzhiyun * * are met: 30*4882a593Smuzhiyun * * 1) Redistributions of source code must retain the above copyright 31*4882a593Smuzhiyun * * notice, this list of conditions and the following disclaimer. 32*4882a593Smuzhiyun * * 2) Redistributions in binary form must reproduce the above copyright 33*4882a593Smuzhiyun * * notice, this list of conditions and the following disclaimer in the 34*4882a593Smuzhiyun * * documentation and/or other materials provided with the distribution. 35*4882a593Smuzhiyun * * 3) The name of the author may not be used to endorse or promote products 36*4882a593Smuzhiyun * * derived from this software without specific prior written permission. 37*4882a593Smuzhiyun * * 38*4882a593Smuzhiyun * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 39*4882a593Smuzhiyun * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 40*4882a593Smuzhiyun * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 41*4882a593Smuzhiyun * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 42*4882a593Smuzhiyun * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 43*4882a593Smuzhiyun * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 44*4882a593Smuzhiyun * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 45*4882a593Smuzhiyun * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 46*4882a593Smuzhiyun * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 47*4882a593Smuzhiyun * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 48*4882a593Smuzhiyun * 49*4882a593Smuzhiyun * Author: Thomas Winischhofer <thomas@winischhofer.net> 50*4882a593Smuzhiyun * 51*4882a593Smuzhiyun */ 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #ifndef _VSTRUCT_H_ 54*4882a593Smuzhiyun #define _VSTRUCT_H_ 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun struct SiS_PanelDelayTbl { 57*4882a593Smuzhiyun unsigned char timer[2]; 58*4882a593Smuzhiyun }; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun struct SiS_LCDData { 61*4882a593Smuzhiyun unsigned short RVBHCMAX; 62*4882a593Smuzhiyun unsigned short RVBHCFACT; 63*4882a593Smuzhiyun unsigned short VGAHT; 64*4882a593Smuzhiyun unsigned short VGAVT; 65*4882a593Smuzhiyun unsigned short LCDHT; 66*4882a593Smuzhiyun unsigned short LCDVT; 67*4882a593Smuzhiyun }; 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun struct SiS_TVData { 70*4882a593Smuzhiyun unsigned short RVBHCMAX; 71*4882a593Smuzhiyun unsigned short RVBHCFACT; 72*4882a593Smuzhiyun unsigned short VGAHT; 73*4882a593Smuzhiyun unsigned short VGAVT; 74*4882a593Smuzhiyun unsigned short TVHDE; 75*4882a593Smuzhiyun unsigned short TVVDE; 76*4882a593Smuzhiyun unsigned short RVBHRS; 77*4882a593Smuzhiyun unsigned char FlickerMode; 78*4882a593Smuzhiyun unsigned short HALFRVBHRS; 79*4882a593Smuzhiyun unsigned short RVBHRS2; 80*4882a593Smuzhiyun unsigned char RY1COE; 81*4882a593Smuzhiyun unsigned char RY2COE; 82*4882a593Smuzhiyun unsigned char RY3COE; 83*4882a593Smuzhiyun unsigned char RY4COE; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun struct SiS_LVDSData { 87*4882a593Smuzhiyun unsigned short VGAHT; 88*4882a593Smuzhiyun unsigned short VGAVT; 89*4882a593Smuzhiyun unsigned short LCDHT; 90*4882a593Smuzhiyun unsigned short LCDVT; 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun struct SiS_LVDSDes { 94*4882a593Smuzhiyun unsigned short LCDHDES; 95*4882a593Smuzhiyun unsigned short LCDVDES; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun struct SiS_LVDSCRT1Data { 99*4882a593Smuzhiyun unsigned char CR[15]; 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun struct SiS_CHTVRegData { 103*4882a593Smuzhiyun unsigned char Reg[16]; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun struct SiS_St { 107*4882a593Smuzhiyun unsigned char St_ModeID; 108*4882a593Smuzhiyun unsigned short St_ModeFlag; 109*4882a593Smuzhiyun unsigned char St_StTableIndex; 110*4882a593Smuzhiyun unsigned char St_CRT2CRTC; 111*4882a593Smuzhiyun unsigned char St_ResInfo; 112*4882a593Smuzhiyun unsigned char VB_StTVFlickerIndex; 113*4882a593Smuzhiyun unsigned char VB_StTVEdgeIndex; 114*4882a593Smuzhiyun unsigned char VB_StTVYFilterIndex; 115*4882a593Smuzhiyun unsigned char St_PDC; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun struct SiS_VBMode { 119*4882a593Smuzhiyun unsigned char ModeID; 120*4882a593Smuzhiyun unsigned char VB_TVDelayIndex; 121*4882a593Smuzhiyun unsigned char VB_TVFlickerIndex; 122*4882a593Smuzhiyun unsigned char VB_TVPhaseIndex; 123*4882a593Smuzhiyun unsigned char VB_TVYFilterIndex; 124*4882a593Smuzhiyun unsigned char VB_LCDDelayIndex; 125*4882a593Smuzhiyun unsigned char _VB_LCDHIndex; 126*4882a593Smuzhiyun unsigned char _VB_LCDVIndex; 127*4882a593Smuzhiyun }; 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun struct SiS_StandTable_S { 130*4882a593Smuzhiyun unsigned char CRT_COLS; 131*4882a593Smuzhiyun unsigned char ROWS; 132*4882a593Smuzhiyun unsigned char CHAR_HEIGHT; 133*4882a593Smuzhiyun unsigned short CRT_LEN; 134*4882a593Smuzhiyun unsigned char SR[4]; 135*4882a593Smuzhiyun unsigned char MISC; 136*4882a593Smuzhiyun unsigned char CRTC[0x19]; 137*4882a593Smuzhiyun unsigned char ATTR[0x14]; 138*4882a593Smuzhiyun unsigned char GRC[9]; 139*4882a593Smuzhiyun }; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun struct SiS_Ext { 142*4882a593Smuzhiyun unsigned char Ext_ModeID; 143*4882a593Smuzhiyun unsigned short Ext_ModeFlag; 144*4882a593Smuzhiyun unsigned short Ext_VESAID; 145*4882a593Smuzhiyun unsigned char Ext_RESINFO; 146*4882a593Smuzhiyun unsigned char VB_ExtTVFlickerIndex; 147*4882a593Smuzhiyun unsigned char VB_ExtTVEdgeIndex; 148*4882a593Smuzhiyun unsigned char VB_ExtTVYFilterIndex; 149*4882a593Smuzhiyun unsigned char VB_ExtTVYFilterIndexROM661; 150*4882a593Smuzhiyun unsigned char REFindex; 151*4882a593Smuzhiyun char ROMMODEIDX661; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun struct SiS_Ext2 { 155*4882a593Smuzhiyun unsigned short Ext_InfoFlag; 156*4882a593Smuzhiyun unsigned char Ext_CRT1CRTC; 157*4882a593Smuzhiyun unsigned char Ext_CRTVCLK; 158*4882a593Smuzhiyun unsigned char Ext_CRT2CRTC; 159*4882a593Smuzhiyun unsigned char Ext_CRT2CRTC_NS; 160*4882a593Smuzhiyun unsigned char ModeID; 161*4882a593Smuzhiyun unsigned short XRes; 162*4882a593Smuzhiyun unsigned short YRes; 163*4882a593Smuzhiyun unsigned char Ext_PDC; 164*4882a593Smuzhiyun unsigned char Ext_FakeCRT2CRTC; 165*4882a593Smuzhiyun unsigned char Ext_FakeCRT2Clk; 166*4882a593Smuzhiyun unsigned char Ext_CRT1CRTC_NORM; 167*4882a593Smuzhiyun unsigned char Ext_CRTVCLK_NORM; 168*4882a593Smuzhiyun unsigned char Ext_CRT1CRTC_WIDE; 169*4882a593Smuzhiyun unsigned char Ext_CRTVCLK_WIDE; 170*4882a593Smuzhiyun }; 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun struct SiS_Part2PortTbl { 173*4882a593Smuzhiyun unsigned char CR[12]; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun struct SiS_CRT1Table { 177*4882a593Smuzhiyun unsigned char CR[17]; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun struct SiS_MCLKData { 181*4882a593Smuzhiyun unsigned char SR28,SR29,SR2A; 182*4882a593Smuzhiyun unsigned short CLOCK; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun struct SiS_VCLKData { 186*4882a593Smuzhiyun unsigned char SR2B,SR2C; 187*4882a593Smuzhiyun unsigned short CLOCK; 188*4882a593Smuzhiyun }; 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun struct SiS_VBVCLKData { 191*4882a593Smuzhiyun unsigned char Part4_A,Part4_B; 192*4882a593Smuzhiyun unsigned short CLOCK; 193*4882a593Smuzhiyun }; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun struct SiS_StResInfo_S { 196*4882a593Smuzhiyun unsigned short HTotal; 197*4882a593Smuzhiyun unsigned short VTotal; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun struct SiS_ModeResInfo_S { 201*4882a593Smuzhiyun unsigned short HTotal; 202*4882a593Smuzhiyun unsigned short VTotal; 203*4882a593Smuzhiyun unsigned char XChar; 204*4882a593Smuzhiyun unsigned char YChar; 205*4882a593Smuzhiyun }; 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun /* Defines for SiS_CustomT */ 208*4882a593Smuzhiyun /* Never change these for sisfb compatibility */ 209*4882a593Smuzhiyun #define CUT_NONE 0 210*4882a593Smuzhiyun #define CUT_FORCENONE 1 211*4882a593Smuzhiyun #define CUT_BARCO1366 2 212*4882a593Smuzhiyun #define CUT_BARCO1024 3 213*4882a593Smuzhiyun #define CUT_COMPAQ1280 4 214*4882a593Smuzhiyun #define CUT_COMPAQ12802 5 215*4882a593Smuzhiyun #define CUT_PANEL848 6 216*4882a593Smuzhiyun #define CUT_CLEVO1024 7 217*4882a593Smuzhiyun #define CUT_CLEVO10242 8 218*4882a593Smuzhiyun #define CUT_CLEVO1400 9 219*4882a593Smuzhiyun #define CUT_CLEVO14002 10 220*4882a593Smuzhiyun #define CUT_UNIWILL1024 11 221*4882a593Smuzhiyun #define CUT_ASUSL3000D 12 222*4882a593Smuzhiyun #define CUT_UNIWILL10242 13 223*4882a593Smuzhiyun #define CUT_ACER1280 14 224*4882a593Smuzhiyun #define CUT_COMPAL1400_1 15 225*4882a593Smuzhiyun #define CUT_COMPAL1400_2 16 226*4882a593Smuzhiyun #define CUT_ASUSA2H_1 17 227*4882a593Smuzhiyun #define CUT_ASUSA2H_2 18 228*4882a593Smuzhiyun #define CUT_UNKNOWNLCD 19 229*4882a593Smuzhiyun #define CUT_AOP8060 20 230*4882a593Smuzhiyun #define CUT_PANEL856 21 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun struct SiS_Private 233*4882a593Smuzhiyun { 234*4882a593Smuzhiyun unsigned char ChipType; 235*4882a593Smuzhiyun unsigned char ChipRevision; 236*4882a593Smuzhiyun void *ivideo; 237*4882a593Smuzhiyun unsigned char *VirtualRomBase; 238*4882a593Smuzhiyun bool UseROM; 239*4882a593Smuzhiyun unsigned char SISIOMEMTYPE *VideoMemoryAddress; 240*4882a593Smuzhiyun unsigned int VideoMemorySize; 241*4882a593Smuzhiyun SISIOADDRESS IOAddress; 242*4882a593Smuzhiyun SISIOADDRESS IOAddress2; /* For dual chip XGI volari */ 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun SISIOADDRESS RelIO; 245*4882a593Smuzhiyun SISIOADDRESS SiS_P3c4; 246*4882a593Smuzhiyun SISIOADDRESS SiS_P3d4; 247*4882a593Smuzhiyun SISIOADDRESS SiS_P3c0; 248*4882a593Smuzhiyun SISIOADDRESS SiS_P3ce; 249*4882a593Smuzhiyun SISIOADDRESS SiS_P3c2; 250*4882a593Smuzhiyun SISIOADDRESS SiS_P3ca; 251*4882a593Smuzhiyun SISIOADDRESS SiS_P3c6; 252*4882a593Smuzhiyun SISIOADDRESS SiS_P3c7; 253*4882a593Smuzhiyun SISIOADDRESS SiS_P3c8; 254*4882a593Smuzhiyun SISIOADDRESS SiS_P3c9; 255*4882a593Smuzhiyun SISIOADDRESS SiS_P3cb; 256*4882a593Smuzhiyun SISIOADDRESS SiS_P3cc; 257*4882a593Smuzhiyun SISIOADDRESS SiS_P3cd; 258*4882a593Smuzhiyun SISIOADDRESS SiS_P3da; 259*4882a593Smuzhiyun SISIOADDRESS SiS_Part1Port; 260*4882a593Smuzhiyun SISIOADDRESS SiS_Part2Port; 261*4882a593Smuzhiyun SISIOADDRESS SiS_Part3Port; 262*4882a593Smuzhiyun SISIOADDRESS SiS_Part4Port; 263*4882a593Smuzhiyun SISIOADDRESS SiS_Part5Port; 264*4882a593Smuzhiyun SISIOADDRESS SiS_VidCapt; 265*4882a593Smuzhiyun SISIOADDRESS SiS_VidPlay; 266*4882a593Smuzhiyun unsigned short SiS_IF_DEF_LVDS; 267*4882a593Smuzhiyun unsigned short SiS_IF_DEF_CH70xx; 268*4882a593Smuzhiyun unsigned short SiS_IF_DEF_CONEX; 269*4882a593Smuzhiyun unsigned short SiS_IF_DEF_TRUMPION; 270*4882a593Smuzhiyun unsigned short SiS_IF_DEF_DSTN; 271*4882a593Smuzhiyun unsigned short SiS_IF_DEF_FSTN; 272*4882a593Smuzhiyun unsigned short SiS_SysFlags; 273*4882a593Smuzhiyun unsigned char SiS_VGAINFO; 274*4882a593Smuzhiyun bool SiS_UseROM; 275*4882a593Smuzhiyun bool SiS_ROMNew; 276*4882a593Smuzhiyun bool SiS_XGIROM; 277*4882a593Smuzhiyun bool SiS_NeedRomModeData; 278*4882a593Smuzhiyun bool PanelSelfDetected; 279*4882a593Smuzhiyun bool DDCPortMixup; 280*4882a593Smuzhiyun int SiS_CHOverScan; 281*4882a593Smuzhiyun bool SiS_CHSOverScan; 282*4882a593Smuzhiyun bool SiS_ChSW; 283*4882a593Smuzhiyun bool SiS_UseLCDA; 284*4882a593Smuzhiyun int SiS_UseOEM; 285*4882a593Smuzhiyun unsigned int SiS_CustomT; 286*4882a593Smuzhiyun int SiS_UseWide, SiS_UseWideCRT2; 287*4882a593Smuzhiyun int SiS_TVBlue; 288*4882a593Smuzhiyun unsigned short SiS_Backup70xx; 289*4882a593Smuzhiyun bool HaveEMI; 290*4882a593Smuzhiyun bool HaveEMILCD; 291*4882a593Smuzhiyun bool OverruleEMI; 292*4882a593Smuzhiyun unsigned char EMI_30,EMI_31,EMI_32,EMI_33; 293*4882a593Smuzhiyun unsigned short SiS_EMIOffset; 294*4882a593Smuzhiyun unsigned short SiS_PWDOffset; 295*4882a593Smuzhiyun short PDC, PDCA; 296*4882a593Smuzhiyun unsigned char SiS_MyCR63; 297*4882a593Smuzhiyun unsigned short SiS_CRT1Mode; 298*4882a593Smuzhiyun unsigned short SiS_flag_clearbuffer; 299*4882a593Smuzhiyun int SiS_RAMType; 300*4882a593Smuzhiyun unsigned char SiS_ChannelAB; 301*4882a593Smuzhiyun unsigned char SiS_DataBusWidth; 302*4882a593Smuzhiyun unsigned short SiS_ModeType; 303*4882a593Smuzhiyun unsigned short SiS_VBInfo; 304*4882a593Smuzhiyun unsigned short SiS_TVMode; 305*4882a593Smuzhiyun unsigned short SiS_LCDResInfo; 306*4882a593Smuzhiyun unsigned short SiS_LCDTypeInfo; 307*4882a593Smuzhiyun unsigned short SiS_LCDInfo; 308*4882a593Smuzhiyun unsigned short SiS_LCDInfo661; 309*4882a593Smuzhiyun unsigned short SiS_VBType; 310*4882a593Smuzhiyun unsigned short SiS_VBExtInfo; 311*4882a593Smuzhiyun unsigned short SiS_YPbPr; 312*4882a593Smuzhiyun unsigned short SiS_SelectCRT2Rate; 313*4882a593Smuzhiyun unsigned short SiS_SetFlag; 314*4882a593Smuzhiyun unsigned short SiS_RVBHCFACT; 315*4882a593Smuzhiyun unsigned short SiS_RVBHCMAX; 316*4882a593Smuzhiyun unsigned short SiS_RVBHRS; 317*4882a593Smuzhiyun unsigned short SiS_RVBHRS2; 318*4882a593Smuzhiyun unsigned short SiS_VGAVT; 319*4882a593Smuzhiyun unsigned short SiS_VGAHT; 320*4882a593Smuzhiyun unsigned short SiS_VT; 321*4882a593Smuzhiyun unsigned short SiS_HT; 322*4882a593Smuzhiyun unsigned short SiS_VGAVDE; 323*4882a593Smuzhiyun unsigned short SiS_VGAHDE; 324*4882a593Smuzhiyun unsigned short SiS_VDE; 325*4882a593Smuzhiyun unsigned short SiS_HDE; 326*4882a593Smuzhiyun unsigned short SiS_NewFlickerMode; 327*4882a593Smuzhiyun unsigned short SiS_RY1COE; 328*4882a593Smuzhiyun unsigned short SiS_RY2COE; 329*4882a593Smuzhiyun unsigned short SiS_RY3COE; 330*4882a593Smuzhiyun unsigned short SiS_RY4COE; 331*4882a593Smuzhiyun unsigned short SiS_LCDHDES; 332*4882a593Smuzhiyun unsigned short SiS_LCDVDES; 333*4882a593Smuzhiyun SISIOADDRESS SiS_DDC_Port; 334*4882a593Smuzhiyun unsigned short SiS_DDC_Index; 335*4882a593Smuzhiyun unsigned short SiS_DDC_Data; 336*4882a593Smuzhiyun unsigned short SiS_DDC_NData; 337*4882a593Smuzhiyun unsigned short SiS_DDC_Clk; 338*4882a593Smuzhiyun unsigned short SiS_DDC_NClk; 339*4882a593Smuzhiyun unsigned short SiS_DDC_DeviceAddr; 340*4882a593Smuzhiyun unsigned short SiS_DDC_ReadAddr; 341*4882a593Smuzhiyun unsigned short SiS_DDC_SecAddr; 342*4882a593Smuzhiyun unsigned short SiS_ChrontelInit; 343*4882a593Smuzhiyun bool SiS_SensibleSR11; 344*4882a593Smuzhiyun unsigned short SiS661LCD2TableSize; 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun unsigned short SiS_PanelMinLVDS; 347*4882a593Smuzhiyun unsigned short SiS_PanelMin301; 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun const struct SiS_St *SiS_SModeIDTable; 350*4882a593Smuzhiyun const struct SiS_StandTable_S *SiS_StandTable; 351*4882a593Smuzhiyun const struct SiS_Ext *SiS_EModeIDTable; 352*4882a593Smuzhiyun const struct SiS_Ext2 *SiS_RefIndex; 353*4882a593Smuzhiyun const struct SiS_VBMode *SiS_VBModeIDTable; 354*4882a593Smuzhiyun const struct SiS_CRT1Table *SiS_CRT1Table; 355*4882a593Smuzhiyun const struct SiS_MCLKData *SiS_MCLKData_0; 356*4882a593Smuzhiyun const struct SiS_MCLKData *SiS_MCLKData_1; 357*4882a593Smuzhiyun struct SiS_VCLKData *SiS_VCLKData; 358*4882a593Smuzhiyun struct SiS_VBVCLKData *SiS_VBVCLKData; 359*4882a593Smuzhiyun const struct SiS_StResInfo_S *SiS_StResInfo; 360*4882a593Smuzhiyun const struct SiS_ModeResInfo_S *SiS_ModeResInfo; 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun const unsigned char *pSiS_OutputSelect; 363*4882a593Smuzhiyun const unsigned char *pSiS_SoftSetting; 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun const unsigned char *SiS_SR15; 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun const struct SiS_PanelDelayTbl *SiS_PanelDelayTbl; 368*4882a593Smuzhiyun const struct SiS_PanelDelayTbl *SiS_PanelDelayTblLVDS; 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun /* SiS bridge */ 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun const struct SiS_LCDData *SiS_ExtLCD1024x768Data; 373*4882a593Smuzhiyun const struct SiS_LCDData *SiS_St2LCD1024x768Data; 374*4882a593Smuzhiyun const struct SiS_LCDData *SiS_LCD1280x720Data; 375*4882a593Smuzhiyun const struct SiS_LCDData *SiS_StLCD1280x768_2Data; 376*4882a593Smuzhiyun const struct SiS_LCDData *SiS_ExtLCD1280x768_2Data; 377*4882a593Smuzhiyun const struct SiS_LCDData *SiS_LCD1280x800Data; 378*4882a593Smuzhiyun const struct SiS_LCDData *SiS_LCD1280x800_2Data; 379*4882a593Smuzhiyun const struct SiS_LCDData *SiS_LCD1280x854Data; 380*4882a593Smuzhiyun const struct SiS_LCDData *SiS_LCD1280x960Data; 381*4882a593Smuzhiyun const struct SiS_LCDData *SiS_ExtLCD1280x1024Data; 382*4882a593Smuzhiyun const struct SiS_LCDData *SiS_St2LCD1280x1024Data; 383*4882a593Smuzhiyun const struct SiS_LCDData *SiS_StLCD1400x1050Data; 384*4882a593Smuzhiyun const struct SiS_LCDData *SiS_ExtLCD1400x1050Data; 385*4882a593Smuzhiyun const struct SiS_LCDData *SiS_StLCD1600x1200Data; 386*4882a593Smuzhiyun const struct SiS_LCDData *SiS_ExtLCD1600x1200Data; 387*4882a593Smuzhiyun const struct SiS_LCDData *SiS_LCD1680x1050Data; 388*4882a593Smuzhiyun const struct SiS_LCDData *SiS_NoScaleData; 389*4882a593Smuzhiyun const struct SiS_TVData *SiS_StPALData; 390*4882a593Smuzhiyun const struct SiS_TVData *SiS_ExtPALData; 391*4882a593Smuzhiyun const struct SiS_TVData *SiS_StNTSCData; 392*4882a593Smuzhiyun const struct SiS_TVData *SiS_ExtNTSCData; 393*4882a593Smuzhiyun const struct SiS_TVData *SiS_St1HiTVData; 394*4882a593Smuzhiyun const struct SiS_TVData *SiS_St2HiTVData; 395*4882a593Smuzhiyun const struct SiS_TVData *SiS_ExtHiTVData; 396*4882a593Smuzhiyun const struct SiS_TVData *SiS_St525iData; 397*4882a593Smuzhiyun const struct SiS_TVData *SiS_St525pData; 398*4882a593Smuzhiyun const struct SiS_TVData *SiS_St750pData; 399*4882a593Smuzhiyun const struct SiS_TVData *SiS_Ext525iData; 400*4882a593Smuzhiyun const struct SiS_TVData *SiS_Ext525pData; 401*4882a593Smuzhiyun const struct SiS_TVData *SiS_Ext750pData; 402*4882a593Smuzhiyun const unsigned char *SiS_NTSCTiming; 403*4882a593Smuzhiyun const unsigned char *SiS_PALTiming; 404*4882a593Smuzhiyun const unsigned char *SiS_HiTVExtTiming; 405*4882a593Smuzhiyun const unsigned char *SiS_HiTVSt1Timing; 406*4882a593Smuzhiyun const unsigned char *SiS_HiTVSt2Timing; 407*4882a593Smuzhiyun const unsigned char *SiS_HiTVGroup3Data; 408*4882a593Smuzhiyun const unsigned char *SiS_HiTVGroup3Simu; 409*4882a593Smuzhiyun #if 0 410*4882a593Smuzhiyun const unsigned char *SiS_HiTVTextTiming; 411*4882a593Smuzhiyun const unsigned char *SiS_HiTVGroup3Text; 412*4882a593Smuzhiyun #endif 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun const struct SiS_Part2PortTbl *SiS_CRT2Part2_1024x768_1; 415*4882a593Smuzhiyun const struct SiS_Part2PortTbl *SiS_CRT2Part2_1024x768_2; 416*4882a593Smuzhiyun const struct SiS_Part2PortTbl *SiS_CRT2Part2_1024x768_3; 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun /* LVDS, Chrontel */ 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS320x240Data_1; 421*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS320x240Data_2; 422*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS640x480Data_1; 423*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS800x600Data_1; 424*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS1024x600Data_1; 425*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS1024x768Data_1; 426*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDSBARCO1366Data_1; 427*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDSBARCO1366Data_2; 428*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDSBARCO1024Data_1; 429*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS848x480Data_1; 430*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_LVDS848x480Data_2; 431*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVUNTSCData; 432*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVONTSCData; 433*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVUPALData; 434*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVOPALData; 435*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVUPALMData; 436*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVOPALMData; 437*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVUPALNData; 438*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVOPALNData; 439*4882a593Smuzhiyun const struct SiS_LVDSData *SiS_CHTVSOPALData; 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun const struct SiS_LVDSDes *SiS_PanelType04_1a; 442*4882a593Smuzhiyun const struct SiS_LVDSDes *SiS_PanelType04_2a; 443*4882a593Smuzhiyun const struct SiS_LVDSDes *SiS_PanelType04_1b; 444*4882a593Smuzhiyun const struct SiS_LVDSDes *SiS_PanelType04_2b; 445*4882a593Smuzhiyun 446*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1320x240_1; 447*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1320x240_2; 448*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1320x240_2_H; 449*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1320x240_3; 450*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1320x240_3_H; 451*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1640x480_1; 452*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_LVDSCRT1640x480_1_H; 453*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_CHTVCRT1UNTSC; 454*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_CHTVCRT1ONTSC; 455*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_CHTVCRT1UPAL; 456*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_CHTVCRT1OPAL; 457*4882a593Smuzhiyun const struct SiS_LVDSCRT1Data *SiS_CHTVCRT1SOPAL; 458*4882a593Smuzhiyun 459*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_UNTSC; 460*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_ONTSC; 461*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_UPAL; 462*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_OPAL; 463*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_UPALM; 464*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_OPALM; 465*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_UPALN; 466*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_OPALN; 467*4882a593Smuzhiyun const struct SiS_CHTVRegData *SiS_CHTVReg_SOPAL; 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKUNTSC; 470*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKONTSC; 471*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKUPAL; 472*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKOPAL; 473*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKUPALM; 474*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKOPALM; 475*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKUPALN; 476*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKOPALN; 477*4882a593Smuzhiyun const unsigned char *SiS_CHTVVCLKSOPAL; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun unsigned short PanelXRes, PanelHT; 480*4882a593Smuzhiyun unsigned short PanelYRes, PanelVT; 481*4882a593Smuzhiyun unsigned short PanelHRS, PanelHRE; 482*4882a593Smuzhiyun unsigned short PanelVRS, PanelVRE; 483*4882a593Smuzhiyun unsigned short PanelVCLKIdx300; 484*4882a593Smuzhiyun unsigned short PanelVCLKIdx315; 485*4882a593Smuzhiyun bool Alternate1600x1200; 486*4882a593Smuzhiyun 487*4882a593Smuzhiyun bool UseCustomMode; 488*4882a593Smuzhiyun bool CRT1UsesCustomMode; 489*4882a593Smuzhiyun unsigned short CHDisplay; 490*4882a593Smuzhiyun unsigned short CHSyncStart; 491*4882a593Smuzhiyun unsigned short CHSyncEnd; 492*4882a593Smuzhiyun unsigned short CHTotal; 493*4882a593Smuzhiyun unsigned short CHBlankStart; 494*4882a593Smuzhiyun unsigned short CHBlankEnd; 495*4882a593Smuzhiyun unsigned short CVDisplay; 496*4882a593Smuzhiyun unsigned short CVSyncStart; 497*4882a593Smuzhiyun unsigned short CVSyncEnd; 498*4882a593Smuzhiyun unsigned short CVTotal; 499*4882a593Smuzhiyun unsigned short CVBlankStart; 500*4882a593Smuzhiyun unsigned short CVBlankEnd; 501*4882a593Smuzhiyun unsigned int CDClock; 502*4882a593Smuzhiyun unsigned int CFlags; 503*4882a593Smuzhiyun unsigned char CCRT1CRTC[17]; 504*4882a593Smuzhiyun unsigned char CSR2B; 505*4882a593Smuzhiyun unsigned char CSR2C; 506*4882a593Smuzhiyun unsigned short CSRClock; 507*4882a593Smuzhiyun unsigned short CSRClock_CRT1; 508*4882a593Smuzhiyun unsigned short CModeFlag; 509*4882a593Smuzhiyun unsigned short CModeFlag_CRT1; 510*4882a593Smuzhiyun unsigned short CInfoFlag; 511*4882a593Smuzhiyun 512*4882a593Smuzhiyun int LVDSHL; 513*4882a593Smuzhiyun 514*4882a593Smuzhiyun bool Backup; 515*4882a593Smuzhiyun unsigned char Backup_Mode; 516*4882a593Smuzhiyun unsigned char Backup_14; 517*4882a593Smuzhiyun unsigned char Backup_15; 518*4882a593Smuzhiyun unsigned char Backup_16; 519*4882a593Smuzhiyun unsigned char Backup_17; 520*4882a593Smuzhiyun unsigned char Backup_18; 521*4882a593Smuzhiyun unsigned char Backup_19; 522*4882a593Smuzhiyun unsigned char Backup_1a; 523*4882a593Smuzhiyun unsigned char Backup_1b; 524*4882a593Smuzhiyun unsigned char Backup_1c; 525*4882a593Smuzhiyun unsigned char Backup_1d; 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun unsigned char Init_P4_0E; 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun int UsePanelScaler; 530*4882a593Smuzhiyun int CenterScreen; 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun unsigned short CP_Vendor, CP_Product; 533*4882a593Smuzhiyun bool CP_HaveCustomData; 534*4882a593Smuzhiyun int CP_PreferredX, CP_PreferredY, CP_PreferredIndex; 535*4882a593Smuzhiyun int CP_MaxX, CP_MaxY, CP_MaxClock; 536*4882a593Smuzhiyun unsigned char CP_PrefSR2B, CP_PrefSR2C; 537*4882a593Smuzhiyun unsigned short CP_PrefClock; 538*4882a593Smuzhiyun bool CP_Supports64048075; 539*4882a593Smuzhiyun int CP_HDisplay[7], CP_VDisplay[7]; /* For Custom LCD panel dimensions */ 540*4882a593Smuzhiyun int CP_HTotal[7], CP_VTotal[7]; 541*4882a593Smuzhiyun int CP_HSyncStart[7], CP_VSyncStart[7]; 542*4882a593Smuzhiyun int CP_HSyncEnd[7], CP_VSyncEnd[7]; 543*4882a593Smuzhiyun int CP_HBlankStart[7], CP_VBlankStart[7]; 544*4882a593Smuzhiyun int CP_HBlankEnd[7], CP_VBlankEnd[7]; 545*4882a593Smuzhiyun int CP_Clock[7]; 546*4882a593Smuzhiyun bool CP_DataValid[7]; 547*4882a593Smuzhiyun bool CP_HSync_P[7], CP_VSync_P[7], CP_SyncValid[7]; 548*4882a593Smuzhiyun }; 549*4882a593Smuzhiyun 550*4882a593Smuzhiyun #endif 551*4882a593Smuzhiyun 552