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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? init301.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* $XFree86$ *//* $XdotOrg$ *//* * Mode initializing code (CRT2 section) * for SiS 300/305/540/630/730 and *     SiS 315/550/650/M650/651/661FX/M661xX/740/741(GX)/M741/330/660/M660/760/M760 * (Universal module for Linux kernel framebuffer and XFree86/X.org 4.x) * * Copyright (C) 2001-2004 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 EXPRESSED 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. * * TW says: This code looks awful, I know. But please don't do anything about * this otherwise debugging will be hell. * The code is extremely fragile as regards the different chipsets, different * video bridges and combinations thereof. If anything is changed, extreme * care has to be taken that that change doesn't break it for other chipsets, * bridges or combinations thereof. * All comments in this file are by me, regardless if marked TW or not. * */#if 1#define SET_EMI		/* 302LV/ELV: Set EMI values */#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 USHORT SiS_GetBIOSLCDResInfo(SiS_Private *SiS_Pr);/*********************************************//*         HELPER: Lock/Unlock CRT2          *//*********************************************/voidSiS_UnLockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){   if(HwInfo->jChipType >= SIS_315H)      SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2f,0x01);   else      SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24,0x01);}voidSiS_LockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){   if(HwInfo->jChipType >= 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(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, USHORT DataAND, USHORT DataOR){   if(HwInfo->jChipType >= SIS_661) {      DataAND &= 0x0f;      DataOR  &= 0x0f;   }   SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x11,DataAND,DataOR);}/*********************************************//*    HELPER: Get Pointer to LCD structure   *//*********************************************/#ifdef SIS315Hstatic UCHAR *GetLCDStructPtr661(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){   UCHAR  *ROMAddr = HwInfo->pjVirtualRomBase;   UCHAR  *myptr = NULL;   USHORT romindex = 0;   /* Use the BIOS tables only for LVDS panels; DVI is unreliable    * due to the variaty of panels the BIOS doesn't know about.    */   if((SiS_Pr->SiS_ROMNew) && (SiS_Pr->SiS_VBType & VB_SIS301LV302LV)) {      myptr = (UCHAR *)SiS_LCDStruct661;      romindex = SISGETROMW(0x100);      if(romindex) {         romindex += ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x7d) & 0x1f) * 26);         myptr = &ROMAddr[romindex];      }   }   return myptr;}static USHORTGetLCDStructPtr661_2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){   UCHAR  *ROMAddr = HwInfo->pjVirtualRomBase;   USHORT romptr = 0;   /* Use the BIOS tables only for LVDS panels; DVI is unreliable    * due to the variaty of panels the BIOS doesn't know about.    */   if((SiS_Pr->SiS_ROMNew) && (SiS_Pr->SiS_VBType & VB_SIS301LV302LV)) {      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(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex,                   USHORT RefreshRateTableIndex, USHORT *i,		   PSIS_HW_INFO HwInfo){  USHORT checkmask=0,modeid,infoflag;  modeid = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex + (*i)].ModeID;  if(SiS_Pr->SiS_VBType & VB_SISVB) {     if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) {      	checkmask |= SupportRAMDAC2;	if(HwInfo->jChipType >= SIS_315H) {	   checkmask |= SupportRAMDAC2_135;	   if(SiS_Pr->SiS_VBType & VB_SIS301BLV302BLV) {	      checkmask |= SupportRAMDAC2_162;	      if(SiS_Pr->SiS_VBType & VB_SIS301C) {		 checkmask |= SupportRAMDAC2_202;	      }	   }	}     } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) {     	checkmask |= SupportLCD;	if(HwInfo->jChipType >= 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_SIS301BLV302BLV) {	   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[RefreshRateTableIndex+(*i)].ModeID == modeid; (*i)--) {     infoflag = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex + (*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[RefreshRateTableIndex + (*i)].ModeID != modeid) {     	return FALSE;     }     infoflag = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex + (*i)].Ext_InfoFlag;     if(infoflag & checkmask) return TRUE;  }  return TRUE;}/*********************************************//*              Get rate index               *//*********************************************/USHORTSiS_GetRatePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex,               PSIS_HW_INFO HwInfo){  SHORT  LCDRefreshIndex[] = { 0x00, 0x00, 0x01, 0x01,                               0x01, 0x01, 0x01, 0x01,			       0x01, 0x01, 0x01, 0x01,			       0x01, 0x01, 0x01, 0x01,			       0x00, 0x00, 0x00, 0x00 };  USHORT RefreshRateTableIndex,i,backup_i;  USHORT modeflag,index,temp,backupindex;  /* 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;        }     }  }  RefreshRateTableIndex = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].REFindex;  ModeNo = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].ModeID;  if(HwInfo->jChipType >= 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) RefreshRateTableIndex++;        }     }  }  i = 0;  do {     if(SiS_Pr->SiS_RefIndex[RefreshRateTableIndex + i].ModeID != ModeNo) break;     temp = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex + i].Ext_InfoFlag;     temp &= ModeInfoFlag;     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[RefreshRateTableIndex + 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, RefreshRateTableIndex, &i, HwInfo))) {	i = backup_i;     }  }  return(RefreshRateTableIndex + i);}/*********************************************//*            STORE CRT2 INFO in CR34        *//*********************************************/static voidSiS_SaveCRT2Info(SiS_Private *SiS_Pr, USHORT ModeNo){  USHORT 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(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){  UCHAR *ROMAddr = (UCHAR *)HwInfo->pjVirtualRomBase;  USHORT temp,temp1;  if(SiS_Pr->SiS_UseROM) {     if((ROMAddr[0x233] == 0x12) && (ROMAddr[0x234] == 0x34)) {        temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0xff) >> 4);        temp1 = SISGETROMW(0x23b);        if(temp1 & temp) return TRUE;     }  }  return FALSE;}static BOOLEANSiS_CR36BIOSWord23d(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){  UCHAR *ROMAddr = (UCHAR *)HwInfo->pjVirtualRomBase;  USHORT temp,temp1;  if(SiS_Pr->SiS_UseROM) {     if((ROMAddr[0x233] == 0x12) && (ROMAddr[0x234] == 0x34)) {        temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0xff) >> 4);        temp1 = SISGETROMW(0x23d);        if(temp1 & temp) return TRUE;     }  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲小说欧美激情另类| 欧美中文字幕一区| 日本一区二区三区四区在线视频 | 国产一区激情在线| 中文字幕一区二区三区色视频| 777xxx欧美| 欧美日韩综合色| 激情综合色播激情啊| 亚洲日本青草视频在线怡红院| 精品国产91亚洲一区二区三区婷婷| 91丨九色丨蝌蚪丨老版| 在线免费一区三区| 亚洲综合激情网| 久久综合丝袜日本网| 欧美精品tushy高清| 国产成人综合网站| 久色婷婷小香蕉久久| 亚洲va欧美va天堂v国产综合| 久久久www免费人成精品| 色美美综合视频| 91在线porny国产在线看| 韩国毛片一区二区三区| 韩国v欧美v亚洲v日本v| 另类小说综合欧美亚洲| 奇米影视一区二区三区| 蜜臀久久99精品久久久久宅男 | 93久久精品日日躁夜夜躁欧美| 国产一区二区视频在线播放| 久热成人在线视频| 精品一区二区三区久久| 日韩伦理电影网| 亚洲欧美日韩国产中文在线| 日韩美女视频19| 亚洲另类中文字| 亚洲一卡二卡三卡四卡| 一区二区三区在线影院| 一区二区三区四区国产精品| 亚洲自拍都市欧美小说| 亚洲欧美日韩人成在线播放| 亚洲欧美日韩国产另类专区| 亚洲精品免费在线观看| 久久久99久久| 一色桃子久久精品亚洲| 亚洲福利一区二区| 轻轻草成人在线| 国产精品99久久久久久久vr| 成人性生交大片免费看视频在线 | 日本最新不卡在线| 国产一区在线看| 国产一区二区三区四区五区入口 | 久久久精品2019中文字幕之3| 中文字幕一区二区不卡| 亚洲一级不卡视频| 亚洲无人区一区| 久久成人久久鬼色| 国产一区二区导航在线播放| 99re这里都是精品| 欧美日韩高清一区二区| 久久在线观看免费| 中文成人综合网| 午夜欧美2019年伦理| 国产伦精一区二区三区| 99精品视频免费在线观看| 91黄色免费版| 国产日韩欧美在线一区| 亚洲国产日日夜夜| 国产99久久久国产精品免费看| 一本大道久久精品懂色aⅴ| 日韩一区和二区| 亚洲麻豆国产自偷在线| 亚洲黄色尤物视频| 国产一区二区按摩在线观看| 一本色道a无线码一区v| 91精品在线一区二区| 国产精品久久久久久久久免费丝袜| 亚洲va韩国va欧美va| 国产精品一区二区免费不卡| 欧美精品少妇一区二区三区| 国产精品福利影院| 亚洲成年人网站在线观看| 国产 日韩 欧美大片| 欧美一二三四区在线| 亚洲综合精品自拍| 99久久精品国产导航| 欧美mv和日韩mv国产网站| 亚洲与欧洲av电影| 91伊人久久大香线蕉| 欧美激情综合网| 成人黄色片在线观看| 国产精品乱码一区二三区小蝌蚪| 国产精品一区三区| 成人欧美一区二区三区白人| www.欧美色图| 一区二区在线观看视频在线观看| 色94色欧美sute亚洲线路一ni| 亚洲欧美国产三级| 欧美日本免费一区二区三区| 日韩激情视频网站| 91精品免费观看| 另类成人小视频在线| 久久精品夜色噜噜亚洲a∨| 成人免费毛片嘿嘿连载视频| 国产精品免费久久| 在线观看亚洲a| 奇米影视在线99精品| 欧美精品一区二区三区视频 | 亚洲免费观看高清完整| 欧美在线|欧美| 免费一区二区视频| 久久蜜桃av一区二区天堂| www.av精品| 午夜欧美在线一二页| 久久亚洲一级片| 91亚洲国产成人精品一区二区三| 亚洲一区二区三区中文字幕 | 麻豆91在线播放| 日本一区二区三区久久久久久久久不| 成人激情小说网站| 日本欧美大码aⅴ在线播放| 精品少妇一区二区三区在线视频| 成人一级黄色片| 日本伊人午夜精品| 1024亚洲合集| 欧美电影免费观看完整版| 成人精品免费看| 亚洲国产aⅴ成人精品无吗| 欧美一区二区三区在| 波多野结衣亚洲| 丝瓜av网站精品一区二区| 久久久综合网站| 欧美夫妻性生活| 成人免费av资源| 日本不卡一二三区黄网| 亚洲女同女同女同女同女同69| 日韩精品一区二区三区在线播放 | 韩国v欧美v亚洲v日本v| 一区二区成人在线| 亚洲国产精华液网站w| 欧美一区二区视频在线观看2022 | 国产精品美女久久久久高潮| 欧美高清精品3d| 91在线丨porny丨国产| 久久99九九99精品| 亚洲在线中文字幕| 国产精品狼人久久影院观看方式| 91精品久久久久久久91蜜桃| 91香蕉国产在线观看软件| 国产精品亚洲专一区二区三区| 性做久久久久久久久| 国产精品久久久久aaaa| 2020国产精品自拍| 粉嫩欧美一区二区三区高清影视| 亚洲一区在线视频观看| 亚洲一区二区三区自拍| 免费xxxx性欧美18vr| 成人国产电影网| 欧美精品一级二级三级| 国产精品美女久久久久aⅴ| 免费欧美在线视频| 色综合一区二区| 亚洲精品在线一区二区| 亚洲国产一区二区三区青草影视| 国产a视频精品免费观看| 7777精品伊人久久久大香线蕉经典版下载| 久久久久久一级片| 天使萌一区二区三区免费观看| 成人免费视频网站在线观看| 欧美一区午夜视频在线观看| 一区二区中文视频| 国产在线视频不卡二| 欧美无砖专区一中文字| 国产精品毛片久久久久久| 精品一区二区三区在线观看 | 一区二区视频免费在线观看| 国产乱码精品一区二区三区忘忧草 | 偷拍自拍另类欧美| 91视频精品在这里| 精品国产亚洲一区二区三区在线观看| 夜夜嗨av一区二区三区四季av| 国产黄色精品视频| 欧美mv日韩mv亚洲| 日韩黄色片在线观看| 91视频在线观看| 精品免费99久久| 久久激五月天综合精品| 欧美日韩mp4| 亚洲最大色网站| 91在线你懂得| 成人免费一区二区三区在线观看| 精品写真视频在线观看| 日韩西西人体444www| 亚洲第一二三四区| 91久久一区二区| 亚洲男人的天堂在线观看| 成人免费看黄yyy456| 亚洲国产精品成人久久综合一区| 国产一区二区h| 久久久久久99久久久精品网站| 狠狠色伊人亚洲综合成人| xf在线a精品一区二区视频网站|