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