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

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

?? aticlock.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 4 頁
字號:
         * the common layer's xf86GetClocks() reworked to fit.  One difference         * is the ability to monitor a VSync bit in MMIO space.         */        CanDisableInterrupts = TRUE;    /* An assumption verified below */        for (ClockIndex = 0;  ClockIndex < NumberOfClocks;  ClockIndex++)        {            pScreenInfo->clock[ClockIndex] = 0;            /* Remap clock number */            Index = MapClockIndex(pATI->OldHW.ClockMap, ClockIndex);            /* Select the clock */            switch (pATI->OldHW.crtc)            {#ifndef AVOID_CPIO                case ATI_CRTC_VGA:                    /* Get generic two low-order bits */                    genmo = (inb(R_GENMO) & 0xF3U) | ((Index << 2) & 0x0CU);                    if (pATI->CPIO_VGAWonder)                    {                        /*                         * On adapters with crystals, switching to one of the                         * spare assignments doesn't do anything (i.e. the                         * previous setting remains in effect).  So, disable                         * their selection.                         */                        if (((Index & 0x03U) == 0x02U) &&                            ((pATI->Chip <= ATI_CHIP_18800) ||                             (pATI->Adapter == ATI_ADAPTER_V4)))                            continue;                        /* Start sequencer reset */                        PutReg(SEQX, 0x00U, 0x00U);                        /* Set high-order bits */                        if (pATI->Chip <= ATI_CHIP_18800)                        {                            ATIModifyExtReg(pATI, 0xB2U, -1, 0xBFU,                                Index << 4);                        }                        else                        {                            ATIModifyExtReg(pATI, 0xBEU, -1, 0xEFU,                                Index << 2);                            if (pATI->Adapter != ATI_ADAPTER_V4)                            {                                Index >>= 1;                                ATIModifyExtReg(pATI, 0xB9U, -1, 0xFDU,                                    Index >> 1);                            }                        }                        /* Set clock divider bits */                        ATIModifyExtReg(pATI, 0xB8U, -1, 0x00U,                            (Index << 3) & 0xC0U);                    }                    else                    {                        /*                         * Reject clocks that cannot be selected.                         */                        if (Index & ~0x03U)                            continue;                        /* Start sequencer reset */                        PutReg(SEQX, 0x00U, 0x00U);                    }                    /* Must set miscellaneous output register last */                    outb(GENMO, genmo);                    /* End sequencer reset */                    PutReg(SEQX, 0x00U, 0x03U);                    break;#endif /* AVOID_CPIO */                case ATI_CRTC_MACH64:                    out8(CLOCK_CNTL, CLOCK_STROBE |                        SetBits(Index, CLOCK_SELECT | CLOCK_DIVIDER));                    break;                default:                    continue;            }            usleep(50000);      /* Let clock stabilise */            xf86SetPriority(TRUE);            /* Try to disable interrupts */            if (CanDisableInterrupts && !xf86DisableInterrupts())            {                xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING,                    "Unable to disable interrupts;  Clock probe will not be as"                    " accurate.\n");                CanDisableInterrupts = FALSE;            }            /*             * Generate a count while monitoring the vertical sync or blanking             * pulse.  This is dependent on the CRTC used by the mode on server             * entry.             */            switch (pATI->OldHW.crtc)            {#ifndef AVOID_CPIO                case ATI_CRTC_VGA:                    /* Verify vertical sync pulses are in fact occurring */                    Index = 1 << 19;                    while (!(inb(GENS1(pATI->CPIO_VGABase)) & 0x08U))                        if (Index-- <= 0)                            goto EnableInterrupts;                    Index = 1 << 19;                    while (inb(GENS1(pATI->CPIO_VGABase)) & 0x08U)                        if (Index-- <= 0)                            goto EnableInterrupts;                    Index = 1 << 19;                    while (!(inb(GENS1(pATI->CPIO_VGABase)) & 0x08U))                        if (Index-- <= 0)                            goto EnableInterrupts;                    /* Generate the count */                    for (Index = 0;  Index < 8;  Index++)                    {                        while (inb(GENS1(pATI->CPIO_VGABase)) & 0x08U)                            pScreenInfo->clock[ClockIndex]++;                        while (!(inb(GENS1(pATI->CPIO_VGABase)) & 0x08U))                            pScreenInfo->clock[ClockIndex]++;                    }                    break;#endif /* AVOID_CPIO */                case ATI_CRTC_MACH64:                    /* Verify vertical blanking pulses are in fact occurring */                    Index = 1 << 19;                    while (!(inr(CRTC_INT_CNTL) & CRTC_VBLANK))                        if (Index-- <= 0)                            goto EnableInterrupts;                    Index = 1 << 19;                    while (inr(CRTC_INT_CNTL) & CRTC_VBLANK)                        if (Index-- <= 0)                            goto EnableInterrupts;                    Index = 1 << 19;                    while (!(inr(CRTC_INT_CNTL) & CRTC_VBLANK))                        if (Index-- <= 0)                            goto EnableInterrupts;                    /* Generate the count */                    for (Index = 0;  Index < 4;  Index++)                    {                        while (inr(CRTC_INT_CNTL) & CRTC_VBLANK)                            pScreenInfo->clock[ClockIndex]++;                        while (!(inr(CRTC_INT_CNTL) & CRTC_VBLANK))                            pScreenInfo->clock[ClockIndex]++;                    }                    break;                default:                    break;            }        EnableInterrupts:            if (CanDisableInterrupts)                xf86EnableInterrupts();            xf86SetPriority(FALSE);        }        ScaleFactor = (double)CalibrationClockValue *            (double)pScreenInfo->clock[CalibrationClockNumber];        /* Scale the clocks from counts to kHz */        for (ClockIndex = 0;  ClockIndex < NumberOfClocks;  ClockIndex++)        {            if (ClockIndex == CalibrationClockNumber)                pScreenInfo->clock[ClockIndex] = CalibrationClockValue;            else if (pScreenInfo->clock[ClockIndex])                /* Round to the nearest 10 kHz */                pScreenInfo->clock[ClockIndex] =                    (int)(((ScaleFactor /                            (double)pScreenInfo->clock[ClockIndex]) +                           5) / 10) * 10;        }        pScreenInfo->numClocks = NumberOfClocks;#ifndef AVOID_CPIO        if (pATI->VGAAdapter != ATI_ADAPTER_NONE)        {            /* Restore video state */            ATIModeSet(pScreenInfo, pATI, &pATI->OldHW);            xfree(pATI->OldHW.frame_buffer);            pATI->OldHW.frame_buffer = NULL;        }#endif /* AVOID_CPIO */        /* Tell user clocks were probed, instead of supplied */        pATI->OptionProbeClocks = TRUE;        /* Attempt to match probed clocks to a known specification */        pATI->Clock = ATIMatchClockLine(pScreenInfo, pATI,            SpecificationClockLine, NumberOfUndividedClocks,            CalibrationClockNumber, 0);#ifndef AVOID_CPIO        if ((pATI->Chip <= ATI_CHIP_18800) ||            (pATI->Adapter == ATI_ADAPTER_V4))        {            /* V3 and V4 adapters don't have clock chips */            if (pATI->Clock > ATI_CLOCK_CRYSTALS)                pATI->Clock = ATI_CLOCK_NONE;        }        else#endif /* AVOID_CPIO */        {            /* All others don't have crystals */            if (pATI->Clock == ATI_CLOCK_CRYSTALS)                pATI->Clock = ATI_CLOCK_NONE;        }    }    else    {        /*         * Allow for an initial subset of specification clocks.  Can't allow         * for any more than that though...         */        if (NumberOfClocks > pGDev->numclocks)        {            NumberOfClocks = pGDev->numclocks;            if (NumberOfUndividedClocks > NumberOfClocks)                NumberOfUndividedClocks = NumberOfClocks;        }        /* Move XF86Config clocks into the ScrnInfoRec */        for (ClockIndex = 0;  ClockIndex < NumberOfClocks;  ClockIndex++)            pScreenInfo->clock[ClockIndex] = pGDev->clock[ClockIndex];        pScreenInfo->numClocks = NumberOfClocks;        /* Attempt to match clocks to a known specification */        pATI->Clock = ATIMatchClockLine(pScreenInfo, pATI,            SpecificationClockLine, NumberOfUndividedClocks, -1, 0);#ifndef AVOID_CPIO        if (pATI->Adapter != ATI_ADAPTER_VGA)#endif /* AVOID_CPIO */        {            if (pATI->Clock == ATI_CLOCK_NONE)            {                /*                 * Reject certain clock lines that are obviously wrong.  This                 * includes the standard VGA clocks for ATI adapters, and clock                 * lines that could have been used with the pre-2.1.1 driver.                 */                if (ATIMatchClockLine(pScreenInfo, pATI, InvalidClockLine,                    NumberOfClocks, -1, 0))                {                    pATI->OptionProbeClocks = TRUE;                }                else#ifndef AVOID_CPIO                if ((pATI->Chip >= ATI_CHIP_18800) &&                    (pATI->Adapter != ATI_ADAPTER_V4))#endif /* AVOID_CPIO */                {                    /*                     * Check for clocks that are specified in the wrong order.                     * This is meant to catch those who are trying to use the                     * clock order intended for the old accelerated servers.                     */                    while ((++ClockMap, ClockMap %= NumberOf(ClockMaps)))                    {                        pATI->Clock = ATIMatchClockLine(pScreenInfo, pATI,                            SpecificationClockLine, NumberOfUndividedClocks,                            -1, ClockMap);                        if (pATI->Clock != ATI_CLOCK_NONE)                        {                            xf86DrvMsgVerb(pScreenInfo->scrnIndex,                                X_WARNING, 0,                                "XF86Config clock ordering incorrect.  Clocks"                                " will be reordered.\n");                            break;                        }                    }                }            }            else            /* Ensure crystals are not matched to clock chips, and vice versa */#ifndef AVOID_CPIO            if ((pATI->Chip <= ATI_CHIP_18800) ||                (pATI->Adapter == ATI_ADAPTER_V4))            {                if (pATI->Clock > ATI_CLOCK_CRYSTALS)                    pATI->OptionProbeClocks = TRUE;            }            else#endif /* AVOID_CPIO */            {                if (pATI->Clock == ATI_CLOCK_CRYSTALS)                    pATI->OptionProbeClocks = TRUE;            }            if (pATI->OptionProbeClocks)            {                xf86DrvMsgVerb(pScreenInfo->scrnIndex, X_WARNING, 0,                    "Invalid or obsolete XF86Config clocks line rejected.\n"                    " Clocks will be probed.\n");                goto ProbeClocks;            }        }    }    if (pATI->ProgrammableClock != ATI_CLOCK_FIXED)    {        pATI->ProgrammableClock = ATI_CLOCK_FIXED;    }    else if (pATI->Clock == ATI_CLOCK_NONE)    {        xf86DrvMsgVerb(pScreenInfo->scrnIndex, X_WARNING, 0,            "Unknown clock generator detected.\n");    }    else#ifndef AVOID_CPIO    if (pATI->Clock == ATI_CLOCK_CRYSTALS)    {        xf86DrvMsg(pScreenInfo->scrnIndex, X_PROBED,            "This adapter uses crystals to generate clock frequencies.\n");    }    else if (pATI->Clock != ATI_CLOCK_VGA)#endif /* AVOID_CPIO */    {        xf86DrvMsg(pScreenInfo->scrnIndex, X_PROBED,            "%s clock chip detected.\n", ATIClockNames[pATI->Clock]);    }    if (pATI->Clock != ATI_CLOCK_NONE)    {        /* Replace undivided clocks with specification values */        for (ClockIndex = 0;             ClockIndex < NumberOfUndividedClocks;             ClockIndex++)        {            /*             * Don't replace clocks that are probed, documented, or set by the             * user to zero.  One exception is that we need to override the             * user's value for the spare settings on a crystal-based adapter.             * Another exception is when the user specifies the clock ordering             * intended for the old accelerated servers.             */            SpecificationClock =                SpecificationClockLine[pATI->Clock][ClockIndex];            if (SpecificationClock < 0)                break;            if (!ClockMap)            {                if (!pScreenInfo->clock[ClockIndex])                    continue;                if (!SpecificationClock)                {                    if (pATI->Clock != ATI_CLOCK_CRYSTALS)                        continue;                }                else                {                    /*                     * Due to the way clock lines are matched, the following                     * can prevent the override if the clock is probed,                     * documented or set by the user to a value greater than                     * maxClock.                     */                    if (abs(SpecificationClock -                            pScreenInfo->clock[ClockIndex]) > CLOCK_TOLERANCE)                        continue;                }            }            pScreenInfo->clock[ClockIndex] = SpecificationClock;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级一级性生活免费录像| 日韩精品一区二区三区三区免费 | 午夜婷婷国产麻豆精品| xfplay精品久久| 在线观看欧美精品| 国产成人精品免费网站| 日韩二区三区在线观看| 依依成人精品视频| 欧美激情在线观看视频免费| 欧美丰满美乳xxx高潮www| 91麻豆免费观看| 国产乱码字幕精品高清av| 免费人成精品欧美精品| 亚洲国产wwwccc36天堂| 中文字幕一区二区不卡| 久久精子c满五个校花| 精品三级在线看| 欧美精品第1页| 欧美日韩一区在线| 91久久人澡人人添人人爽欧美| 成人午夜私人影院| 国产在线播放一区二区三区| 免费久久99精品国产| 亚洲高清视频中文字幕| 中文字幕欧美一区| 国产精品卡一卡二| 国产网站一区二区三区| 久久日一线二线三线suv| 日韩一区二区三区观看| 欧美福利视频导航| 欧美日韩一区二区在线视频| 欧美视频精品在线| 欧美主播一区二区三区| 日本精品视频一区二区三区| 91视频在线观看| 91日韩一区二区三区| 91在线播放网址| 色综合久久99| 在线亚洲高清视频| 欧美三级日韩三级| 欧美肥妇bbw| 日韩精品一区在线观看| 欧美mv和日韩mv的网站| 欧美电影免费观看高清完整版在线 | 欧美精品一区二区三区高清aⅴ | 91精品国产综合久久久久久久久久| 欧美视频一区在线| 欧美精品一二三| 日韩午夜激情av| 日韩三级在线观看| 久久青草欧美一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲精品一区二区三区影院 | 制服丝袜日韩国产| 制服丝袜亚洲网站| 精品毛片乱码1区2区3区| 久久天堂av综合合色蜜桃网| 国产视频一区二区在线观看| 国产精品丝袜91| 伊人一区二区三区| 日韩福利电影在线| 精品伊人久久久久7777人| 国产99久久久国产精品潘金网站| a亚洲天堂av| 欧美日本乱大交xxxxx| 精品免费一区二区三区| 国产精品久久久久一区二区三区 | 69堂精品视频| 久久精品视频在线免费观看| 国产精品二区一区二区aⅴ污介绍| 一区二区三区免费在线观看| 青青草伊人久久| 国产精品1024| 欧美最新大片在线看| 欧美大片在线观看一区二区| 国产精品久久午夜| 夜夜精品浪潮av一区二区三区| 久久精品国产在热久久| 不卡av免费在线观看| 欧美男男青年gay1069videost| 精品国产精品网麻豆系列| 国产精品对白交换视频| 日韩不卡免费视频| 成人激情免费视频| 日韩一区二区在线观看视频| 中文字幕在线不卡一区| 日韩专区中文字幕一区二区| 国产精品资源在线| 欧美老人xxxx18| 国产精品国产三级国产aⅴ原创 | 亚洲国产sm捆绑调教视频| 国产一区二区精品久久| 欧美色网站导航| 中文字幕高清不卡| 日韩国产欧美视频| 色妞www精品视频| 日韩精品在线一区二区| 亚洲综合色婷婷| 国产激情精品久久久第一区二区| 欧美日韩国产免费| 国产精品激情偷乱一区二区∴| 精品一区二区三区免费毛片爱| 91精品办公室少妇高潮对白| 精品国产网站在线观看| 亚洲成人激情综合网| 99久久婷婷国产综合精品电影| 91精品国产综合久久久久久漫画 | 亚洲国产精品久久久男人的天堂| 国产成人超碰人人澡人人澡| 欧美一区二区三区色| 樱花影视一区二区| 99精品久久免费看蜜臀剧情介绍| 精品国产91乱码一区二区三区 | 欧美国产禁国产网站cc| 日本伊人色综合网| 在线视频国内自拍亚洲视频| 国产精品美日韩| 国产毛片精品视频| 日韩一区二区三| 五月天久久比比资源色| 91麻豆国产香蕉久久精品| 欧美高清在线精品一区| 国产精品亚洲第一区在线暖暖韩国| 日韩欧美国产综合| 视频在线观看一区二区三区| 欧美亚洲免费在线一区| 一区av在线播放| 99视频精品全部免费在线| 中文字幕欧美日韩一区| 国产·精品毛片| 国产欧美综合在线| 成人一道本在线| 中文字幕一区av| 一本大道久久a久久精品综合| 国产精品午夜在线| 成人黄色大片在线观看| 中文字幕免费在线观看视频一区| 国产美女在线精品| 国产亚洲精品超碰| 国产成人精品三级麻豆| 国产精品久久久久久福利一牛影视| 大尺度一区二区| 国产精品丝袜91| 99免费精品在线| 一区二区三国产精华液| 欧美亚洲国产怡红院影院| 一区二区三区不卡视频在线观看| 欧美优质美女网站| 亚洲国产精品一区二区久久恐怖片| 在线成人小视频| 国内成人自拍视频| 国产三级欧美三级| av一本久道久久综合久久鬼色| 亚洲精品国产一区二区精华液| 色菇凉天天综合网| 日韩av一区二区在线影视| 精品国产免费久久| 成人福利电影精品一区二区在线观看| 国产精品麻豆网站| 91国偷自产一区二区开放时间 | 国产a久久麻豆| 中文幕一区二区三区久久蜜桃| 99在线精品一区二区三区| 亚洲精品中文字幕在线观看| 欧美日韩黄色一区二区| 精品亚洲国产成人av制服丝袜 | 欧美亚洲动漫精品| 日韩经典一区二区| 国产欧美一区二区三区鸳鸯浴 | 精品国免费一区二区三区| 国产精品一二三区| 亚洲私人黄色宅男| 欧美日韩激情一区二区| 国产一区二区三区| 亚洲人成7777| 欧美电视剧在线观看完整版| 不卡在线观看av| 日韩在线观看一区二区| 久久久久久久久久久久久久久99| 99热99精品| 国产在线播放一区三区四| 亚洲日本护士毛茸茸| 91麻豆精品国产综合久久久久久 | 91精品国产综合久久精品 | 97se狠狠狠综合亚洲狠狠| 日韩二区三区四区| 亚洲欧美影音先锋| 欧美一级一级性生活免费录像| eeuss鲁片一区二区三区| 手机精品视频在线观看| 国产精品久久久久一区| 在线91免费看| www.成人在线| 麻豆精品在线视频| 亚洲欧美日韩一区| 国产亚洲精久久久久久| 在线不卡中文字幕播放| 91美女蜜桃在线| 国产精一区二区三区| 日韩激情视频网站|