亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? init301.c

?? LINUX 2.6.17.4的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/* $XFree86$ *//* $XdotOrg$ *//* * Mode initializing code (CRT2 section) * for SiS 300/305/540/630/730, *     SiS 315/550/[M]650/651/[M]661[FGM]X/[M]74x[GX]/330/[M]76x[GX], *     XGI V3XT/V5/V8, Z7 * (Universal module for Linux kernel framebuffer and X.org/XFree86 4.x) * * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria * * If distributed as part of the Linux kernel, the following license terms * apply: * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the named License, * * or any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA * * Otherwise, the following license terms apply: * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * 1) Redistributions of source code must retain the above copyright * *    notice, this list of conditions and the following disclaimer. * * 2) Redistributions in binary form must reproduce the above copyright * *    notice, this list of conditions and the following disclaimer in the * *    documentation and/or other materials provided with the distribution. * * 3) The name of the author may not be used to endorse or promote products * *    derived from this software without specific prior written permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Author: 	Thomas Winischhofer <thomas@winischhofer.net> * * Formerly based on non-functional code-fragements for 300 series by SiS, Inc. * Used by permission. * */#ifdef HAVE_CONFIG_H#include "config.h"#endif#if 1#define SET_EMI		/* 302LV/ELV: Set EMI values */#endif#if 1#define SET_PWD		/* 301/302LV: Set PWD */#endif#define COMPAL_HACK	/* Needed for Compal 1400x1050 (EMI) */#define COMPAQ_HACK	/* Needed for Inventec/Compaq 1280x1024 (EMI) */#define ASUS_HACK	/* Needed for Asus A2H 1024x768 (EMI) */#include "init301.h"#ifdef SIS300#include "oem300.h"#endif#ifdef SIS315H#include "oem310.h"#endif#define SiS_I2CDELAY      1000#define SiS_I2CDELAYSHORT  150static unsigned short	SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr);#ifdef SIS_LINUX_KERNELstatic void		SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);#endif/*********************************************//*         HELPER: Lock/Unlock CRT2          *//*********************************************/voidSiS_UnLockCRT2(struct SiS_Private *SiS_Pr){   if(SiS_Pr->ChipType == XGI_20)      return;   else if(SiS_Pr->ChipType >= SIS_315H)      SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2f,0x01);   else      SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24,0x01);}#ifdef SIS_LINUX_KERNELstatic#endifvoidSiS_LockCRT2(struct SiS_Private *SiS_Pr){   if(SiS_Pr->ChipType == XGI_20)      return;   else if(SiS_Pr->ChipType >= SIS_315H)      SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2F,0xFE);   else      SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x24,0xFE);}/*********************************************//*            HELPER: Write SR11             *//*********************************************/static voidSiS_SetRegSR11ANDOR(struct SiS_Private *SiS_Pr, unsigned short DataAND, unsigned short DataOR){   if(SiS_Pr->ChipType >= SIS_661) {      DataAND &= 0x0f;      DataOR  &= 0x0f;   }   SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x11,DataAND,DataOR);}/*********************************************//*    HELPER: Get Pointer to LCD structure   *//*********************************************/#ifdef SIS315Hstatic unsigned char *GetLCDStructPtr661(struct SiS_Private *SiS_Pr){   unsigned char  *ROMAddr = SiS_Pr->VirtualRomBase;   unsigned char  *myptr = NULL;   unsigned short romindex = 0, reg = 0, idx = 0;   /* Use the BIOS tables only for LVDS panels; TMDS is unreliable    * due to the variaty of panels the BIOS doesn't know about.    * Exception: If the BIOS has better knowledge (such as in case    * of machines with a 301C and a panel that does not support DDC)    * use the BIOS data as well.    */   if((SiS_Pr->SiS_ROMNew) &&      ((SiS_Pr->SiS_VBType & VB_SISLVDS) || (!SiS_Pr->PanelSelfDetected))) {      if(SiS_Pr->ChipType < SIS_661) reg = 0x3c;      else                           reg = 0x7d;      idx = (SiS_GetReg(SiS_Pr->SiS_P3d4,reg) & 0x1f) * 26;      if(idx < (8*26)) {         myptr = (unsigned char *)&SiS_LCDStruct661[idx];      }      romindex = SISGETROMW(0x100);      if(romindex) {         romindex += idx;         myptr = &ROMAddr[romindex];      }   }   return myptr;}static unsigned shortGetLCDStructPtr661_2(struct SiS_Private *SiS_Pr){   unsigned char  *ROMAddr = SiS_Pr->VirtualRomBase;   unsigned short romptr = 0;   /* Use the BIOS tables only for LVDS panels; TMDS is unreliable    * due to the variaty of panels the BIOS doesn't know about.    * Exception: If the BIOS has better knowledge (such as in case    * of machines with a 301C and a panel that does not support DDC)    * use the BIOS data as well.    */   if((SiS_Pr->SiS_ROMNew) &&      ((SiS_Pr->SiS_VBType & VB_SISLVDS) || (!SiS_Pr->PanelSelfDetected))) {      romptr = SISGETROMW(0x102);      romptr += ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) * SiS_Pr->SiS661LCD2TableSize);   }   return romptr;}#endif/*********************************************//*           Adjust Rate for CRT2            *//*********************************************/static BOOLEANSiS_AdjustCRT2Rate(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,		unsigned short RRTI, unsigned short *i){   unsigned short checkmask=0, modeid, infoflag;   modeid = SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID;   if(SiS_Pr->SiS_VBType & VB_SISVB) {      if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) {	 checkmask |= SupportRAMDAC2;	 if(SiS_Pr->ChipType >= SIS_315H) {	    checkmask |= SupportRAMDAC2_135;	    if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) {	       checkmask |= SupportRAMDAC2_162;	       if(SiS_Pr->SiS_VBType & VB_SISRAMDAC202) {		  checkmask |= SupportRAMDAC2_202;	       }	    }	 }      } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) {	 checkmask |= SupportLCD;	 if(SiS_Pr->ChipType >= SIS_315H) {	    if(SiS_Pr->SiS_VBType & VB_SISVB) {	       if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) {	          if(modeid == 0x2e) checkmask |= Support64048060Hz;	       }	    }	 }      } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) {	 checkmask |= SupportHiVision;      } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToYPbPr525750|SetCRT2ToAVIDEO|SetCRT2ToSVIDEO|SetCRT2ToSCART)) {	 checkmask |= SupportTV;	 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) {	    checkmask |= SupportTV1024;	    if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) {	       if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) {	          checkmask |= SupportYPbPr750p;	       }	    }	 }      }   } else {	/* LVDS */      if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) {	 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) {	    checkmask |= SupportCHTV;	 }      }      if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) {	 checkmask |= SupportLCD;      }   }   /* Look backwards in table for matching CRT2 mode */   for(; SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID == modeid; (*i)--) {      infoflag = SiS_Pr->SiS_RefIndex[RRTI + (*i)].Ext_InfoFlag;      if(infoflag & checkmask) return TRUE;      if((*i) == 0) break;   }   /* Look through the whole mode-section of the table from the beginning    * for a matching CRT2 mode if no mode was found yet.    */   for((*i) = 0; ; (*i)++) {      if(SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID != modeid) break;      infoflag = SiS_Pr->SiS_RefIndex[RRTI + (*i)].Ext_InfoFlag;      if(infoflag & checkmask) return TRUE;   }   return FALSE;}/*********************************************//*              Get rate index               *//*********************************************/unsigned shortSiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex){   unsigned short RRTI,i,backup_i;   unsigned short modeflag,index,temp,backupindex;   static const unsigned short LCDRefreshIndex[] = {		0x00, 0x00, 0x01, 0x01,		0x01, 0x01, 0x01, 0x01,		0x01, 0x01, 0x01, 0x01,		0x01, 0x01, 0x01, 0x01,		0x00, 0x00, 0x00, 0x00   };   /* Do NOT check for UseCustomMode here, will skrew up FIFO */   if(ModeNo == 0xfe) return 0;   if(ModeNo <= 0x13) {      modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag;   } else {      modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag;   }   if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) {      if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) {	 if(modeflag & HalfDCLK) return 0;      }   }   if(ModeNo < 0x14) return 0xFFFF;   index = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x33) >> SiS_Pr->SiS_SelectCRT2Rate) & 0x0F;   backupindex = index;   if(index > 0) index--;   if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) {      if(SiS_Pr->SiS_VBType & VB_SISVB) {	 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) {	    if(SiS_Pr->SiS_VBType & VB_NoLCD)		 index = 0;	    else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index = backupindex = 0;	 }	 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) {	    if(!(SiS_Pr->SiS_VBType & VB_NoLCD)) {	       temp = LCDRefreshIndex[SiS_GetBIOSLCDResInfo(SiS_Pr)];	       if(index > temp) index = temp;	    }	 }      } else {	 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) index = 0;	 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) {	    if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) index = 0;	 }      }   }   RRTI = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].REFindex;   ModeNo = SiS_Pr->SiS_RefIndex[RRTI].ModeID;   if(SiS_Pr->ChipType >= SIS_315H) {      if(!(SiS_Pr->SiS_VBInfo & DriverMode)) {	 if( (SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_VESAID == 0x105) ||	     (SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_VESAID == 0x107) ) {	    if(backupindex <= 1) RRTI++;	 }      }   }   i = 0;   do {      if(SiS_Pr->SiS_RefIndex[RRTI + i].ModeID != ModeNo) break;      temp = SiS_Pr->SiS_RefIndex[RRTI + i].Ext_InfoFlag;      temp &= ModeTypeMask;      if(temp < SiS_Pr->SiS_ModeType) break;      i++;      index--;   } while(index != 0xFFFF);   if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) {      if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) {	 temp = SiS_Pr->SiS_RefIndex[RRTI + i - 1].Ext_InfoFlag;	 if(temp & InterlaceMode) i++;      }   }   i--;   if((SiS_Pr->SiS_SetFlag & ProgrammingCRT2) && (!(SiS_Pr->SiS_VBInfo & DisableCRT2Display))) {      backup_i = i;      if(!(SiS_AdjustCRT2Rate(SiS_Pr, ModeNo, ModeIdIndex, RRTI, &i))) {	 i = backup_i;      }   }   return (RRTI + i);}/*********************************************//*            STORE CRT2 INFO in CR34        *//*********************************************/static voidSiS_SaveCRT2Info(struct SiS_Private *SiS_Pr, unsigned short ModeNo){   unsigned short temp1, temp2;   /* Store CRT1 ModeNo in CR34 */   SiS_SetReg(SiS_Pr->SiS_P3d4,0x34,ModeNo);   temp1 = (SiS_Pr->SiS_VBInfo & SetInSlaveMode) >> 8;   temp2 = ~(SetInSlaveMode >> 8);   SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x31,temp2,temp1);}/*********************************************//*    HELPER: GET SOME DATA FROM BIOS ROM    *//*********************************************/#ifdef SIS300static BOOLEANSiS_CR36BIOSWord23b(struct SiS_Private *SiS_Pr){   unsigned char  *ROMAddr = SiS_Pr->VirtualRomBase;   unsigned short temp,temp1;   if(SiS_Pr->SiS_UseROM) {      if((ROMAddr[0x233] == 0x12) && (ROMAddr[0x234] == 0x34)) {	 temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) & 0x0f);	 temp1 = SISGETROMW(0x23b);	 if(temp1 & temp) return TRUE;      }   }   return FALSE;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色产在线精品| 免费看日韩a级影片| 日韩一区二区三| 播五月开心婷婷综合| 免费的成人av| 夜夜夜精品看看| 国产欧美精品区一区二区三区 | 国产精品久久久久桃色tv| 欧美色综合天天久久综合精品| 九色|91porny| 午夜精品视频在线观看| 国产精品女主播av| 久久久久久久综合狠狠综合| 69堂精品视频| 欧美日韩国产天堂| 在线观看区一区二| 99久久99久久精品免费观看| 黄色小说综合网站| 日本美女一区二区| 亚洲综合成人网| 亚洲日穴在线视频| 日本一区二区三区四区在线视频| 日韩视频免费直播| 精品视频1区2区| 91在线无精精品入口| 国产成人综合自拍| 久久精品国产一区二区三| 日韩电影网1区2区| 日韩不卡手机在线v区| 亚洲电影在线免费观看| 一区二区三区四区高清精品免费观看 | 美女在线观看视频一区二区| 亚洲成人动漫在线免费观看| 亚洲一区二区3| 18欧美乱大交hd1984| 亚洲国产成人私人影院tom| 国产三级一区二区三区| ww久久中文字幕| xvideos.蜜桃一区二区| 亚洲精品一区在线观看| 精品国产人成亚洲区| 精品国产免费视频| 精品国产青草久久久久福利| 久久先锋影音av鲁色资源网| 久久嫩草精品久久久精品| 久久亚洲欧美国产精品乐播| 久久精品一区二区三区四区| 国产欧美日韩一区二区三区在线观看| 2024国产精品视频| 日本一区二区三区免费乱视频| 久久久久久久电影| 中文字幕欧美三区| 亚洲色图欧洲色图婷婷| 亚洲韩国一区二区三区| 亚洲成人1区2区| 日本三级亚洲精品| 精品一区二区三区在线视频| 国产一区二区三区| 成人国产在线观看| 色天使色偷偷av一区二区| 欧美日韩一区视频| 日韩午夜在线影院| 欧美激情艳妇裸体舞| 亚洲视频你懂的| 日韩中文字幕亚洲一区二区va在线| 麻豆国产欧美一区二区三区| 国产精品一区二区无线| 成人性生交大合| 91久久香蕉国产日韩欧美9色| 欧美亚洲国产bt| wwwwxxxxx欧美| 亚洲精品视频观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美日韩在线直播| 日韩精品中文字幕一区| 日本一区二区三区国色天香| 亚洲美女免费在线| 日韩—二三区免费观看av| 国产a视频精品免费观看| 91美女片黄在线观看91美女| 91精品国产欧美一区二区成人 | 色一区在线观看| 日韩精品一区二区三区视频播放| 国产视频在线观看一区二区三区| 亚洲欧美日韩小说| 久久激五月天综合精品| a亚洲天堂av| 制服丝袜在线91| 国产精品欧美精品| 日本欧美在线观看| 99国产欧美另类久久久精品| 欧美一区二区三区视频在线观看| 国产精品久久久久久久久免费桃花 | 成人激情av网| 91精品国产91久久综合桃花| 国产精品视频第一区| 欧美aa在线视频| 在线亚洲免费视频| 欧美激情在线一区二区三区| 秋霞电影网一区二区| 色激情天天射综合网| 久久一区二区视频| 日本欧洲一区二区| 色老综合老女人久久久| 亚洲精品一区二区精华| 亚洲国产成人av网| av电影一区二区| 精品国产乱码久久久久久图片| 亚洲午夜电影网| 国产成人午夜精品影院观看视频| 欧美一区二区人人喊爽| 一区二区三区在线观看网站| 成人晚上爱看视频| 久久青草国产手机看片福利盒子| 亚洲国产一区二区三区| 92精品国产成人观看免费| 国产日韩欧美制服另类| 久久福利视频一区二区| 欧美日韩精品一区二区天天拍小说 | 日韩1区2区3区| 欧美在线色视频| 亚洲欧美另类小说视频| 国产成人日日夜夜| 欧美精品一区二区三| 青青草97国产精品免费观看无弹窗版| 色丁香久综合在线久综合在线观看| 国产精品日产欧美久久久久| 国产一区二区三区黄视频| 精品国产髙清在线看国产毛片 | 国产精品亚洲综合一区在线观看| 欧美一区二区美女| 丝袜诱惑亚洲看片| 欧美久久一二区| 日韩av一区二区在线影视| 欧美区一区二区三区| 亚洲福利一区二区| 欧美影院一区二区| 亚洲高清三级视频| 在线不卡a资源高清| 天天影视涩香欲综合网| 欧美电影一区二区| 男女男精品网站| 精品乱码亚洲一区二区不卡| 精彩视频一区二区三区| 2欧美一区二区三区在线观看视频| 久久99精品国产91久久来源| 久久网站最新地址| 国产99一区视频免费| 国产精品网站在线| 91黄色免费观看| 天天综合色天天综合| 欧美成人三级电影在线| 国产激情精品久久久第一区二区 | 91精品国产一区二区三区| 青青国产91久久久久久| 精品福利一二区| 成人午夜在线播放| 亚洲精品高清视频在线观看| 欧美日韩一区二区三区在线| 视频一区在线视频| 久久九九久精品国产免费直播| 成人福利电影精品一区二区在线观看| 最近日韩中文字幕| 日本电影亚洲天堂一区| 蜜桃精品视频在线观看| 久久精品一区二区三区av| 成人av网站大全| 性久久久久久久| 久久女同性恋中文字幕| 91丝袜美女网| 日韩高清不卡一区二区三区| 国产日产欧产精品推荐色| 欧美少妇xxx| 国产精品资源站在线| 亚洲男人天堂一区| 国产精品国产精品国产专区不蜜 | 亚洲与欧洲av电影| 欧美成人一区二区| 91亚洲精华国产精华精华液| 亚洲一区二区三区爽爽爽爽爽| 日韩欧美一区中文| 97久久精品人人做人人爽 | 欧美一区二区三区四区视频| 色老汉一区二区三区| 欧美另类一区二区三区| 欧美va亚洲va香蕉在线| 日韩欧美国产综合一区 | 国产精品99久久久久| 国产黄色成人av| 色婷婷亚洲一区二区三区| 欧美日韩1区2区| 精品少妇一区二区三区视频免付费| 日韩欧美在线不卡| 亚洲美女视频一区| 国产suv精品一区二区883| 粉嫩久久99精品久久久久久夜| 成人午夜精品在线| 欧美日韩第一区日日骚| 国产亚洲人成网站| 麻豆精品在线看|