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

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

?? r128_driver.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
	case PCI_CHIP_RAGE128SM:	case PCI_CHIP_RAGE128TF:	case PCI_CHIP_RAGE128TL:	case PCI_CHIP_RAGE128TR:	/* FIXME: Rage 128 S[EFGHKLN], T[STU], P[ABCEGHIJKLMNOQSTUVWX] are	 * believed to be AGP, but need confirmation. <mharris@redhat.com>	 */	case PCI_CHIP_RAGE128PA:	case PCI_CHIP_RAGE128PB:	case PCI_CHIP_RAGE128PC:	case PCI_CHIP_RAGE128PE:	case PCI_CHIP_RAGE128PG:	case PCI_CHIP_RAGE128PH:	case PCI_CHIP_RAGE128PI:	case PCI_CHIP_RAGE128PJ:	case PCI_CHIP_RAGE128PK:	case PCI_CHIP_RAGE128PL:	case PCI_CHIP_RAGE128PM:	case PCI_CHIP_RAGE128PN:	case PCI_CHIP_RAGE128PO:	case PCI_CHIP_RAGE128PQ:	case PCI_CHIP_RAGE128PS:	case PCI_CHIP_RAGE128PT:	case PCI_CHIP_RAGE128PU:	case PCI_CHIP_RAGE128PV:	case PCI_CHIP_RAGE128PW:	case PCI_CHIP_RAGE128PX:	case PCI_CHIP_RAGE128TS:	case PCI_CHIP_RAGE128TT:	case PCI_CHIP_RAGE128TU:	case PCI_CHIP_RAGE128SE:	case PCI_CHIP_RAGE128SF:	case PCI_CHIP_RAGE128SG:	case PCI_CHIP_RAGE128SH:	case PCI_CHIP_RAGE128SK:	case PCI_CHIP_RAGE128SL:	case PCI_CHIP_RAGE128SN:	default:                 info->IsPCI = FALSE; break;	}    }#endif    return TRUE;}static Bool R128PreInitDDC(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10){#if !defined(__powerpc__) && !defined(__alpha__)    R128InfoPtr   info = R128PTR(pScrn);    vbeInfoPtr pVbe;#endif    if (!xf86LoadSubModule(pScrn, "ddc")) return FALSE;    xf86LoaderReqSymLists(ddcSymbols, NULL);#if defined(__powerpc__) || defined(__alpha__)    /* Int10 is broken on PPC and some Alphas */    return TRUE;#else    if (xf86LoadSubModule(pScrn, "vbe")) {	xf86LoaderReqSymLists(vbeSymbols,NULL);	pVbe = VBEInit(pInt10,info->pEnt->index);	if (!pVbe) return FALSE;        xf86SetDDCproperties(pScrn,xf86PrintEDID(vbeDoEDID(pVbe,NULL)));	vbeFree(pVbe);	return TRUE;    } else	return FALSE;#endif}/* This is called by R128PreInit to initialize gamma correction. */static Bool R128PreInitGamma(ScrnInfoPtr pScrn){    Gamma zeros = { 0.0, 0.0, 0.0 };    if (!xf86SetGamma(pScrn, zeros)) return FALSE;    return TRUE;}static voidR128I2CGetBits(I2CBusPtr b, int *Clock, int *data){    ScrnInfoPtr   pScrn       = xf86Screens[b->scrnIndex];    R128InfoPtr info = R128PTR(pScrn);    unsigned long val;    unsigned char *R128MMIO = info->MMIO;    /* Get the result. */    val = INREG(info->DDCReg);    *Clock = (val & R128_GPIO_MONID_Y_3) != 0;    *data  = (val & R128_GPIO_MONID_Y_0) != 0;}static voidR128I2CPutBits(I2CBusPtr b, int Clock, int data){    ScrnInfoPtr   pScrn       = xf86Screens[b->scrnIndex];    R128InfoPtr info = R128PTR(pScrn);    unsigned long val;    unsigned char *R128MMIO = info->MMIO;    val = INREG(info->DDCReg)              & ~(CARD32)(R128_GPIO_MONID_EN_0 | R128_GPIO_MONID_EN_3);    val |= (Clock ? 0:R128_GPIO_MONID_EN_3);    val |= (data ? 0:R128_GPIO_MONID_EN_0);    OUTREG(info->DDCReg, val);}static BoolR128I2cInit(ScrnInfoPtr pScrn){    R128InfoPtr info = R128PTR(pScrn);    if ( xf86LoadSubModule(pScrn, "i2c") )        xf86LoaderReqSymLists(i2cSymbols,NULL);	else{        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,            "Failed to load i2c module\n");		return FALSE;    }    info->pI2CBus = xf86CreateI2CBusRec();    if(!info->pI2CBus) return FALSE;    info->pI2CBus->BusName    = "DDC";    info->pI2CBus->scrnIndex  = pScrn->scrnIndex;    info->DDCReg = R128_GPIO_MONID;    info->pI2CBus->I2CPutBits = R128I2CPutBits;    info->pI2CBus->I2CGetBits = R128I2CGetBits;    info->pI2CBus->AcknTimeout = 5;    if (!xf86I2CBusInit(info->pI2CBus)) {        return FALSE;    }    return TRUE;}/* return TRUE is a DFP is indeed connected to a DVI port */static Bool R128GetDFPInfo(ScrnInfoPtr pScrn){    R128InfoPtr info  = R128PTR(pScrn);    int i;    xf86MonPtr MonInfo = NULL;    xf86MonPtr ddc;    unsigned char *R128MMIO = info->MMIO;    if(!R128I2cInit(pScrn)){        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,                  "I2C initialization failed!\n");    }    OUTREG(info->DDCReg, (INREG(info->DDCReg)           | R128_GPIO_MONID_MASK_0 | R128_GPIO_MONID_MASK_3));    OUTREG(info->DDCReg, INREG(info->DDCReg)           & ~(CARD32)(R128_GPIO_MONID_A_0 | R128_GPIO_MONID_A_3));    MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, info->pI2CBus);    if(!MonInfo) {        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,                   "No DFP detected\n");        return FALSE;    }    xf86SetDDCproperties(pScrn, MonInfo);    ddc = pScrn->monitor->DDC;    for(i=0; i<4; i++)    {        if((ddc->det_mon[i].type == 0) &&	  (ddc->det_mon[i].section.d_timings.h_active > 0) &&	  (ddc->det_mon[i].section.d_timings.v_active > 0))        {            info->PanelXRes =                ddc->det_mon[i].section.d_timings.h_active;            info->PanelYRes =                ddc->det_mon[i].section.d_timings.v_active;            info->HOverPlus =                ddc->det_mon[i].section.d_timings.h_sync_off;            info->HSyncWidth =                ddc->det_mon[i].section.d_timings.h_sync_width;            info->HBlank =                ddc->det_mon[i].section.d_timings.h_blanking;            info->VOverPlus =                ddc->det_mon[i].section.d_timings.v_sync_off;            info->VSyncWidth =                ddc->det_mon[i].section.d_timings.v_sync_width;            info->VBlank =                ddc->det_mon[i].section.d_timings.v_blanking;        }    }    return TRUE;}static void R128SetSyncRangeFromEdid(ScrnInfoPtr pScrn, int flag){    int i;    xf86MonPtr ddc = pScrn->monitor->DDC;    if(flag)  /*HSync*/    {        for(i=0; i<4; i++)        {            if(ddc->det_mon[i].type == DS_RANGES)            {                pScrn->monitor->nHsync = 1;                pScrn->monitor->hsync[0].lo =                    ddc->det_mon[i].section.ranges.min_h;                pScrn->monitor->hsync[0].hi =                    ddc->det_mon[i].section.ranges.max_h;                return;            }        }        /*if no sync ranges detected in detailed timing table,          let's try to derive them from supported VESA modes          Are we doing too much here!!!?        **/        i = 0;        if(ddc->timings1.t1 & 0x02) /*800x600@56*/        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 35.2;            i++;        }        if(ddc->timings1.t1 & 0x04) /*640x480@75*/        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 37.5;            i++;        }        if((ddc->timings1.t1 & 0x08) || (ddc->timings1.t1 & 0x01))        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 37.9;            i++;        }        if(ddc->timings1.t2 & 0x40)        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 46.9;            i++;        }        if((ddc->timings1.t2 & 0x80) || (ddc->timings1.t2 & 0x08))        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 48.1;            i++;        }        if(ddc->timings1.t2 & 0x04)        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 56.5;            i++;        }        if(ddc->timings1.t2 & 0x02)        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 60.0;            i++;        }        if(ddc->timings1.t2 & 0x01)        {            pScrn->monitor->hsync[i].lo =                pScrn->monitor->hsync[i].hi = 64.0;            i++;        }        pScrn->monitor->nHsync = i;    }    else      /*Vrefresh*/    {        for(i=0; i<4; i++)        {            if(ddc->det_mon[i].type == DS_RANGES)            {                pScrn->monitor->nVrefresh = 1;                pScrn->monitor->vrefresh[0].lo =                    ddc->det_mon[i].section.ranges.min_v;                pScrn->monitor->vrefresh[0].hi =                    ddc->det_mon[i].section.ranges.max_v;                return;            }        }        i = 0;        if(ddc->timings1.t1 & 0x02) /*800x600@56*/        {            pScrn->monitor->vrefresh[i].lo =                pScrn->monitor->vrefresh[i].hi = 56;            i++;        }        if((ddc->timings1.t1 & 0x01) || (ddc->timings1.t2 & 0x08))        {            pScrn->monitor->vrefresh[i].lo =                pScrn->monitor->vrefresh[i].hi = 60;            i++;        }        if(ddc->timings1.t2 & 0x04)        {            pScrn->monitor->vrefresh[i].lo =                pScrn->monitor->vrefresh[i].hi = 70;            i++;        }        if((ddc->timings1.t1 & 0x08) || (ddc->timings1.t2 & 0x80))        {            pScrn->monitor->vrefresh[i].lo =                pScrn->monitor->vrefresh[i].hi = 72;            i++;        }        if((ddc->timings1.t1 & 0x04) || (ddc->timings1.t2 & 0x40)           || (ddc->timings1.t2 & 0x02) || (ddc->timings1.t2 & 0x01))        {            pScrn->monitor->vrefresh[i].lo =                pScrn->monitor->vrefresh[i].hi = 75;            i++;        }        pScrn->monitor->nVrefresh = i;    }}/***********   xfree's xf86ValidateModes routine deosn't work well with DFPs   here is our own validation routine. All modes between   640<=XRes<=MaxRes and 480<=YRes<=MaxYRes will be permitted.   NOTE: RageProII doesn't support rmx, can only work with the         standard modes the monitor can support (scale).************/static int R128ValidateFPModes(ScrnInfoPtr pScrn){    int i, j, count=0, width, height;    R128InfoPtr info = R128PTR(pScrn);    DisplayModePtr last = NULL, new = NULL, first = NULL;    xf86MonPtr ddc;    /* Free any allocated modes during configuration. We don't need them*/    while (pScrn->modes)    {	    xf86DeleteMode(&pScrn->modes, pScrn->modes);    }    while (pScrn->modePool)    {	    xf86DeleteMode(&pScrn->modePool, pScrn->modePool);    }    pScrn->virtualX = pScrn->display->virtualX;    pScrn->virtualY = pScrn->display->virtualY;    /* If no mode specified in config, we use native resolution*/    if(!pScrn->display->modes[0])    {        pScrn->display->modes[0] = xnfalloc(16);        sprintf(pScrn->display->modes[0], "%dx%d",               info->PanelXRes, info->PanelYRes);    }    for(i=0; pScrn->display->modes[i] != NULL; i++)    {        if (sscanf(pScrn->display->modes[i], "%dx%d", &width, &height) == 2)        {            if(width < 640 || width > info->PanelXRes ||               height < 480 || height > info->PanelYRes)            {                xf86DrvMsg(pScrn->scrnIndex, X_WARNING,                    "Mode %s is out of range.\n"                    "Valid mode should be between 640x480-%dx%d\n",                    pScrn->display->modes[i], info->PanelXRes, info->PanelYRes);                continue;            }            new = xnfcalloc(1, sizeof(DisplayModeRec));            new->prev = last;            new->name = xnfalloc(strlen(pScrn->display->modes[i]) + 1);            strcpy(new->name, pScrn->display->modes[i]);            new->HDisplay = new->CrtcHDisplay = width;            new->VDisplay = new->CrtcVDisplay = height;            ddc = pScrn->monitor->DDC;            for(j=0; j<DET_TIMINGS; j++)            {                /*We use native mode clock only*/                if(ddc->det_mon[j].type == 0){                    new->Clock = ddc->det_mon[j].section.d_timings.clock / 1000;                    break;                }            }            if(new->prev) new->prev->next = new;            last = new;            if(!first) first = new;            pScrn->display->virtualX =            pScrn->virtualX = MAX(pScrn->virtualX, width);            pScrn->display->virtualY =            pScrn->virtualY = MAX(pScrn->virtualY, height);            count++;        }        else        {            xf86DrvMsg(pScrn->scrnIndex, X_WARNING,                "Mode name %s is invalid\n", pScrn->display->modes[i]);            continue;        }   }   if(last)   {       last->next = first;       first->prev = last;       pScrn->modes = first;       /*FIXME: May need to validate line pitch here*/       {           int dummy = 0;           switch(pScrn->depth / 8)           {              case 1:                  dummy = 128 - pScrn->virtualX % 128;                  break;              case 2:                  dummy = 32 - pScrn->virtualX % 32;                  break;              case 3:              case 4:                  dummy = 16 - pScrn->virtualX % 16;           }           pScrn->displayWidth = pScrn->virtualX + dummy;       }   }   return count;}/* This is called by R128PreInit to validate modes and compute parameters   for all of the valid modes. */static Bool R128PreInitModes(ScrnInfoPtr pScrn){    R128InfoPtr   info = R128PTR(pScrn);    ClockRangePtr clockRanges;    int           modesFound;    if(info->isDFP) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本视频一区二区| 成人国产亚洲欧美成人综合网| 亚洲天堂免费看| 欧美激情综合在线| 久久精品一区二区三区av | 中文字幕一区二区在线观看| 久久综合色播五月| 精品国产自在久精品国产| 日韩一卡二卡三卡四卡| 日韩午夜电影在线观看| 欧美刺激脚交jootjob| 91精品国产综合久久蜜臀| 8v天堂国产在线一区二区| 欧美军同video69gay| 欧美精品久久99久久在免费线 | 91精品国产综合久久精品| 911国产精品| 欧美一区二区三区四区五区| 欧美成人猛片aaaaaaa| 欧美成人三级电影在线| 国产亚洲欧美色| 中文字幕在线观看一区二区| 亚洲精品亚洲人成人网| 亚洲一区av在线| 天天色天天操综合| 激情文学综合丁香| 成人免费视频一区二区| 日本精品裸体写真集在线观看| 欧美午夜精品一区二区蜜桃| 欧美剧情电影在线观看完整版免费励志电影 | 4438亚洲最大| 精品电影一区二区三区| 国产精品人妖ts系列视频| 一区二区三区四区不卡在线| 午夜伦欧美伦电影理论片| 久久国产视频网| 成人性视频免费网站| 99久久免费精品高清特色大片| 欧美自拍偷拍一区| 日韩一区二区三| 日本一区二区综合亚洲| 依依成人综合视频| 蓝色福利精品导航| 成人精品一区二区三区四区| 欧美午夜精品一区二区三区| 欧美一级一区二区| 中文字幕在线观看不卡视频| 三级精品在线观看| 成人午夜短视频| 欧美日韩国产乱码电影| 国产欧美1区2区3区| 亚洲国产人成综合网站| 国产麻豆视频一区| 色94色欧美sute亚洲线路一ni | 亚洲国产视频a| 国产精品一区二区视频| 91成人在线精品| 久久蜜臀精品av| 亚洲大片免费看| 成人午夜精品一区二区三区| 欧美日韩国产经典色站一区二区三区| 久久久久久久综合狠狠综合| 亚洲福中文字幕伊人影院| 国产成人综合亚洲91猫咪| 欧美日韩不卡在线| 成人欧美一区二区三区1314| 男女视频一区二区| 色香蕉成人二区免费| 欧美成人精品1314www| 玉米视频成人免费看| 国内精品伊人久久久久av影院 | 日韩影院精彩在线| 99国产精品视频免费观看| 欧美一区二区在线视频| 亚洲情趣在线观看| 国产91丝袜在线播放| 欧美一区二区大片| 一区二区日韩电影| 99久久精品国产麻豆演员表| 精品电影一区二区三区| 婷婷丁香激情综合| 日本道色综合久久| 国产农村妇女精品| 狠狠v欧美v日韩v亚洲ⅴ| 欧美色老头old∨ideo| 中文字幕一区二区三区不卡| 国产一区二区三区精品视频| 欧美一级爆毛片| 天天射综合影视| 欧美色精品在线视频| 亚洲免费资源在线播放| 不卡的av网站| 国产精品高潮呻吟| 国产一区二区导航在线播放| 精品伦理精品一区| 男人的j进女人的j一区| 91精品国产综合久久久久久漫画| 亚洲欧美国产高清| 97久久久精品综合88久久| 中文av一区特黄| 高清beeg欧美| 欧美韩日一区二区三区四区| 国产精品一二三在| 久久蜜桃香蕉精品一区二区三区| 久久精品国产亚洲5555| 欧美一区二区三区公司| 日韩国产精品久久久| 欧美肥妇毛茸茸| 肉色丝袜一区二区| 欧美日韩免费不卡视频一区二区三区 | 欧美成人女星排名| 美女网站在线免费欧美精品| 欧美一区二区三区免费观看视频| 日韩精品电影在线观看| 91精品国模一区二区三区| 视频在线观看一区二区三区| 欧美精品在线一区二区| 日韩黄色在线观看| 欧美成人综合网站| 狠狠色伊人亚洲综合成人| 亚洲精品在线观看视频| 国产成人啪免费观看软件| 亚洲国产精品成人综合| 99久久精品免费看| 一区二区三区波多野结衣在线观看| 91久久香蕉国产日韩欧美9色| 一区二区激情小说| 欧美精品粉嫩高潮一区二区| 免费看欧美女人艹b| 久久综合精品国产一区二区三区| 国产在线观看免费一区| 日本一区二区高清| 色视频成人在线观看免| 香蕉久久一区二区不卡无毒影院| 正在播放一区二区| 国产乱子伦视频一区二区三区| 国产女主播视频一区二区| 波多野结衣视频一区| 一区二区三区在线视频播放 | 国产丝袜美腿一区二区三区| 国产成人av一区二区| 亚洲欧美日韩系列| 91精品国产综合久久国产大片| 国产一区二区毛片| 亚洲精品国产无套在线观| 日韩亚洲欧美成人一区| 成人精品视频网站| 午夜精品福利一区二区三区蜜桃| 久久新电视剧免费观看| 色屁屁一区二区| 另类成人小视频在线| 国产精品动漫网站| 欧美精品在线视频| 成人免费视频网站在线观看| 午夜私人影院久久久久| 日本一区二区久久| 欧美高清dvd| 成人黄色片在线观看| 日韩在线播放一区二区| 国产精品三级av| 欧美一级在线免费| 色婷婷综合久久久久中文一区二区 | 欧美一三区三区四区免费在线看| 久99久精品视频免费观看| 日韩三级视频在线观看| 91免费看`日韩一区二区| 亚洲激情中文1区| 日韩美女视频一区二区在线观看| 国产在线一区观看| 亚洲午夜一二三区视频| 久久久久久久久伊人| 日本电影欧美片| 久久99国产精品久久| 亚洲视频一二三| 欧美xxx久久| 欧美日韩高清一区二区不卡| 欧美日韩在线综合| 日本美女视频一区二区| 国产精品毛片无遮挡高清| 色综合色综合色综合色综合色综合 | 欧美日韩不卡一区二区| 成人av免费网站| 日韩激情av在线| 亚洲色图清纯唯美| 精品国产乱码久久久久久老虎 | 欧美视频一区二区三区在线观看| 激情五月激情综合网| 一区二区三区精品| 欧美xingq一区二区| 日本久久精品电影| 99国产精品久久久久| 免费观看日韩av| 依依成人精品视频| 国产日韩欧美不卡| 26uuu成人网一区二区三区| 在线观看视频一区二区欧美日韩| 国产福利一区二区三区| 久久精品国产免费| 午夜精品久久久久久久 | 亚洲视频 欧洲视频|