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

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

?? aticlock.c

?? x.org上有關(guān)ati系列顯卡最新驅(qū)動
?? C
?? 第 1 頁 / 共 4 頁
字號:
        }        /* Adjust divided clocks */        for (ClockIndex = NumberOfUndividedClocks;             ClockIndex < NumberOfClocks;             ClockIndex++)            pScreenInfo->clock[ClockIndex] = ATIDivide(                pScreenInfo->clock[ClockIndex % NumberOfUndividedClocks],                (ClockIndex / NumberOfUndividedClocks) + 1, 0, 0);    }    /* Tell user about fixed clocks */    xf86ShowClocks(pScreenInfo, pATI->OptionProbeClocks ? X_PROBED : X_CONFIG);    /* Prevent selection of high clocks, even by V_CLKDIV2 modes */    for (ClockIndex = 0;  ClockIndex < NumberOfClocks;  ClockIndex++)        if (pScreenInfo->clock[ClockIndex] > pRange->maxClock)            pScreenInfo->clock[ClockIndex] = 0;}/* * ATIClockSave -- * * This function saves that part of an ATIHWRec that relates to clocks. */voidATIClockSave(    ScrnInfoPtr pScreenInfo,    ATIPtr      pATI,    ATIHWPtr    pATIHW){    if (pScreenInfo->vtSema && (pATI->ProgrammableClock > ATI_CLOCK_FIXED))    {#ifndef AVOID_CPIO        if (pATIHW->crtc == ATI_CRTC_VGA)        {            pATIHW->ClockMap = ATIVGAProgrammableClockMap;            pATIHW->ClockUnmap = ATIVGAProgrammableClockUnmap;        }        else#endif /* AVOID_CPIO */        {            pATIHW->ClockMap = ATIProgrammableClockMap;            pATIHW->ClockUnmap = ATIProgrammableClockUnmap;        }    }    else    {#ifndef AVOID_CPIO        if (pATIHW->crtc != ATI_CRTC_VGA)#endif /* AVOID_CPIO */        {            pATIHW->ClockMap = ATIAcceleratorClockMap;            pATIHW->ClockUnmap = ATIAcceleratorClockUnmap;        }#ifndef AVOID_CPIO        else if (pATI->Chip < ATI_CHIP_68800)        {            pATIHW->ClockMap = ATIVGAWonderClockMap;            pATIHW->ClockUnmap = ATIVGAWonderClockUnmap;        }        else        {            pATIHW->ClockMap = ATIMachVGAClockMap;            pATIHW->ClockUnmap = ATIMachVGAClockUnmap;        }#endif /* AVOID_CPIO */    }}/* * ATIClockCalculate -- * * This function is called to generate, if necessary, the data needed for clock * programming, and set clock select bits in various register values. */BoolATIClockCalculate(    int            iScreen,    ATIPtr         pATI,    ATIHWPtr       pATIHW,    DisplayModePtr pMode){    int N, M, D;    int ClockSelect, N1, MinimumGap;    int Frequency, Multiple;            /* Used as temporaries */    /* Set default values */    pATIHW->FeedbackDivider = pATIHW->ReferenceDivider = pATIHW->PostDivider = 0;    if ((pATI->ProgrammableClock <= ATI_CLOCK_FIXED) ||        ((pATI->ProgrammableClock == ATI_CLOCK_CH8398) &&         (pMode->ClockIndex < 2)))    {        /* Use a fixed clock */        ClockSelect = pMode->ClockIndex;    }    else    {        /* Generate clock programme word, using units of kHz */        MinimumGap = ((unsigned int)(-1)) >> 1;        /* Loop through reference dividers */        for (M = pATI->ClockDescriptor.MinM;             M <= pATI->ClockDescriptor.MaxM;             M++)        {            /* Loop through post-dividers */            for (D = 0;  D < pATI->ClockDescriptor.NumD;  D++)            {                if (!pATI->ClockDescriptor.PostDividers[D])                    continue;                /* Limit undivided VCO to maxClock */                if (pATI->maxClock &&                    ((pATI->maxClock / pATI->ClockDescriptor.PostDividers[D]) <                     pMode->Clock))                    continue;                /*                 * Calculate closest feedback divider and apply its                 * restrictions.                 */                Multiple = M * pATI->ReferenceDenominator *                    pATI->ClockDescriptor.PostDividers[D];                N = ATIDivide(pMode->Clock * Multiple,                    pATI->ReferenceNumerator, 0, 0);                if (N < pATI->ClockDescriptor.MinN)                    N = pATI->ClockDescriptor.MinN;                else if (N > pATI->ClockDescriptor.MaxN)                    N = pATI->ClockDescriptor.MaxN;                N -= pATI->ClockDescriptor.NAdjust;                N1 = (N / pATI->ClockDescriptor.N1) * pATI->ClockDescriptor.N2;                if (N > N1)                    N = ATIDivide(N1 + 1, pATI->ClockDescriptor.N1, 0, 1);                N += pATI->ClockDescriptor.NAdjust;                N1 += pATI->ClockDescriptor.NAdjust;                for (;  ;  N = N1)                {                    /* Pick the closest setting */                    Frequency = abs(ATIDivide(N * pATI->ReferenceNumerator,                        Multiple, 0, 0) - pMode->Clock);                    if ((Frequency < MinimumGap) ||                        ((Frequency == MinimumGap) &&                         (pATIHW->FeedbackDivider < N)))                    {                        /* Save settings */                        pATIHW->FeedbackDivider = N;                        pATIHW->ReferenceDivider = M;                        pATIHW->PostDivider = D;                        MinimumGap = Frequency;                    }                    if (N <= N1)                        break;                }            }        }        Multiple = pATIHW->ReferenceDivider * pATI->ReferenceDenominator *            pATI->ClockDescriptor.PostDividers[pATIHW->PostDivider];        Frequency = pATIHW->FeedbackDivider * pATI->ReferenceNumerator;        Frequency = ATIDivide(Frequency, Multiple, 0, 0);        if (abs(Frequency - pMode->Clock) > CLOCK_TOLERANCE)        {            xf86DrvMsg(iScreen, X_ERROR,                "Unable to programme clock %.3fMHz for mode %s.\n",                (double)(pMode->Clock) / 1000.0, pMode->name);            return FALSE;        }        pMode->SynthClock = Frequency;        ClockSelect = pATI->ClockNumberToProgramme;        xf86ErrorFVerb(4,            "\n Programming clock %d to %.3fMHz for mode %s."            "  N=%d, M=%d, D=%d.\n",            ClockSelect, (double)Frequency / 1000.0, pMode->name,            pATIHW->FeedbackDivider, pATIHW->ReferenceDivider,            pATIHW->PostDivider);        if (pATI->Chip >= ATI_CHIP_264VTB)            ATIDSPCalculate(pATI, pATIHW, pMode);    }    /* Set clock select bits, after remapping them */    pATIHW->clock = ClockSelect;        /* Save pre-map clock number */    ClockSelect = MapClockIndex(pATIHW->ClockMap, ClockSelect);    switch (pATIHW->crtc)    {#ifndef AVOID_CPIO        case ATI_CRTC_VGA:            pATIHW->genmo = (pATIHW->genmo & 0xF3U) |                ((ClockSelect << 2) & 0x0CU);            if (pATI->CPIO_VGAWonder)            {                /* Set ATI clock select bits */                if (pATI->Chip <= ATI_CHIP_18800)                {                    pATIHW->b2 = (pATIHW->b2 & 0xBFU) |                        ((ClockSelect << 4) & 0x40U);                }                else                {                    pATIHW->be = (pATIHW->be & 0xEFU) |                        ((ClockSelect << 2) & 0x10U);                    if (pATI->Adapter != ATI_ADAPTER_V4)                    {                        ClockSelect >>= 1;                        pATIHW->b9 = (pATIHW->b9 & 0xFDU) |                            ((ClockSelect >> 1) & 0x02U);                    }                }                /* Set clock divider bits */                pATIHW->b8 = (pATIHW->b8 & 0x3FU) |                    ((ClockSelect << 3) & 0xC0U);            }            break;#endif /* AVOID_CPIO */        case ATI_CRTC_MACH64:            pATIHW->clock_cntl = CLOCK_STROBE |                SetBits(ClockSelect, CLOCK_SELECT | CLOCK_DIVIDER);            break;        default:            break;    }    return TRUE;}/* * ATIClockSet -- * * This function is called to programme a clock for the mode being set. */voidATIClockSet(    ATIPtr      pATI,    ATIHWPtr    pATIHW){    CARD32 crtc_gen_cntl, tmp;    CARD8 clock_cntl0;    CARD8 tmp2;    unsigned int Programme;    int N = pATIHW->FeedbackDivider - pATI->ClockDescriptor.NAdjust;    int M = pATIHW->ReferenceDivider - pATI->ClockDescriptor.MAdjust;    int D = pATIHW->PostDivider;    /* Temporarily switch to accelerator mode */    crtc_gen_cntl = inr(CRTC_GEN_CNTL);    if (!(crtc_gen_cntl & CRTC_EXT_DISP_EN))        outr(CRTC_GEN_CNTL, crtc_gen_cntl | CRTC_EXT_DISP_EN);    switch (pATI->ProgrammableClock)    {        case ATI_CLOCK_ICS2595:            clock_cntl0 = in8(CLOCK_CNTL);            Programme = (SetBits(pATIHW->clock, ICS2595_CLOCK) |                SetBits(N, ICS2595_FB_DIV) | SetBits(D, ICS2595_POST_DIV)) ^                ICS2595_TOGGLE;            ATIDelay(50000);            /* 50 milliseconds */            (void)xf86DisableInterrupts();            /* Send all 20 bits of programme word */            while (Programme >= CLOCK_BIT)            {                tmp = (Programme & CLOCK_BIT) | CLOCK_STROBE;                out8(CLOCK_CNTL, tmp);                ATIDelay(26);           /* 26 microseconds */                out8(CLOCK_CNTL, tmp | CLOCK_PULSE);                ATIDelay(26);           /* 26 microseconds */                Programme >>= 1;            }            xf86EnableInterrupts();            /* Restore register */            out8(CLOCK_CNTL, clock_cntl0 | CLOCK_STROBE);            break;        case ATI_CLOCK_STG1703:            (void)ATIGetDACCmdReg(pATI);            (void)in8(M64_DAC_MASK);            out8(M64_DAC_MASK, (pATIHW->clock << 1) + 0x20U);            out8(M64_DAC_MASK, 0);            out8(M64_DAC_MASK, SetBits(N, 0xFFU));            out8(M64_DAC_MASK, SetBits(M, 0x1FU) | SetBits(D, 0xE0U));            break;        case ATI_CLOCK_CH8398:            tmp = inr(DAC_CNTL) | (DAC_EXT_SEL_RS2 | DAC_EXT_SEL_RS3);            outr(DAC_CNTL, tmp);            out8(M64_DAC_WRITE, pATIHW->clock);            out8(M64_DAC_DATA, SetBits(N, 0xFFU));            out8(M64_DAC_DATA, SetBits(M, 0x3FU) | SetBits(D, 0xC0U));            out8(M64_DAC_MASK, 0x04U);            outr(DAC_CNTL, tmp & ~(DAC_EXT_SEL_RS2 | DAC_EXT_SEL_RS3));            tmp2 = in8(M64_DAC_WRITE);            out8(M64_DAC_WRITE, (tmp2 & 0x70U) | 0x80U);            outr(DAC_CNTL, tmp & ~DAC_EXT_SEL_RS2);            break;        case ATI_CLOCK_INTERNAL:            /* Reset VCLK generator */            ATIMach64PutPLLReg(PLL_VCLK_CNTL, pATIHW->pll_vclk_cntl);            /* Set post-divider */            tmp2 = pATIHW->clock << 1;            tmp = ATIMach64GetPLLReg(PLL_VCLK_POST_DIV);            tmp &= ~(0x03U << tmp2);            tmp |= SetBits(D, 0x03U) << tmp2;            ATIMach64PutPLLReg(PLL_VCLK_POST_DIV, tmp);            /* Set extended post-divider */            tmp = ATIMach64GetPLLReg(PLL_XCLK_CNTL);            tmp &= ~(SetBits(1, PLL_VCLK0_XDIV) << pATIHW->clock);            tmp |= SetBits(D >> 2, PLL_VCLK0_XDIV) << pATIHW->clock;            ATIMach64PutPLLReg(PLL_XCLK_CNTL, tmp);            /* Set feedback divider */            tmp = PLL_VCLK0_FB_DIV + pATIHW->clock;            ATIMach64PutPLLReg(tmp, SetBits(N, 0xFFU));            /* End VCLK generator reset */            ATIMach64PutPLLReg(PLL_VCLK_CNTL,                pATIHW->pll_vclk_cntl & ~PLL_VCLK_RESET);            /* Reset write bit */            ATIMach64AccessPLLReg(pATI, 0, FALSE);            break;        case ATI_CLOCK_ATT20C408:            (void)ATIGetDACCmdReg(pATI);            tmp = in8(M64_DAC_MASK);            (void)ATIGetDACCmdReg(pATI);            out8(M64_DAC_MASK, tmp | 1);            out8(M64_DAC_WRITE, 1);            out8(M64_DAC_MASK, tmp | 9);            ATIDelay(400);              /* 400 microseconds */            tmp2 = (pATIHW->clock << 2) + 0x40U;            out8(M64_DAC_WRITE, tmp2);            out8(M64_DAC_MASK, SetBits(N, 0xFFU));            out8(M64_DAC_WRITE, ++tmp2);            out8(M64_DAC_MASK, SetBits(M, 0x3FU) | SetBits(D, 0xC0U));            out8(M64_DAC_WRITE, ++tmp2);            out8(M64_DAC_MASK, 0x77U);            ATIDelay(400);              /* 400 microseconds */            out8(M64_DAC_WRITE, 1);            out8(M64_DAC_MASK, tmp);            break;        case ATI_CLOCK_IBMRGB514:            /*             * Here, only update in-core data.  It will be written out later by             * ATIRGB514Set().             */            tmp = (pATIHW->clock << 1) + 0x20U;            pATIHW->ibmrgb514[tmp] =                (SetBits(N, 0x3FU) | SetBits(D, 0xC0U)) ^ 0xC0U;            pATIHW->ibmrgb514[tmp + 1] = SetBits(M, 0x3FU);            break;        default:            break;    }    (void)in8(M64_DAC_WRITE);    /* Clear DAC counter */    /* Restore register */    if (!(crtc_gen_cntl & CRTC_EXT_DISP_EN))        outr(CRTC_GEN_CNTL, crtc_gen_cntl);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91极品美女在线| 亚洲三级在线免费| 日韩无一区二区| 5月丁香婷婷综合| 91精品黄色片免费大全| 欧美一激情一区二区三区| 日韩一级大片在线观看| 日韩欧美亚洲国产精品字幕久久久 | 国产蜜臀97一区二区三区| 2024国产精品| 国产视频亚洲色图| 国产精品福利电影一区二区三区四区| 中文字幕在线视频一区| 亚洲免费资源在线播放| 亚洲成av人片| 久久成人免费网| 风流少妇一区二区| 91毛片在线观看| 欧美在线制服丝袜| 7777精品伊人久久久大香线蕉超级流畅| 99久久综合国产精品| 国产福利一区二区三区视频在线| 国产精品羞羞答答xxdd| 成人中文字幕合集| 色88888久久久久久影院野外| 欧美三级电影网| 国产精品麻豆一区二区| 国产精品午夜免费| 亚洲最新视频在线观看| 秋霞午夜av一区二区三区| 国内精品免费在线观看| 99精品视频一区二区三区| 色噜噜狠狠色综合中国| 欧美精选在线播放| 国产欧美日韩在线| 一区二区三区成人在线视频| 日韩av一区二| 成人黄色777网| 欧美日韩高清一区二区不卡| 欧美tickling挠脚心丨vk| 国产精品久久久久影视| 视频一区视频二区中文字幕| 风间由美一区二区av101| 欧美主播一区二区三区| 久久一区二区视频| 亚洲精品高清视频在线观看| 麻豆精品国产传媒mv男同| 成人av资源网站| 91精品国产综合久久久久久久久久| 久久久精品黄色| 亚洲成a人片在线不卡一二三区| 国产精品自拍在线| 欧美亚洲综合网| 欧美韩国日本不卡| 免费视频最近日韩| 99国产精品久久久久| 日韩精品一区二区三区四区| 亚洲人成精品久久久久久| 韩国三级中文字幕hd久久精品| 色8久久人人97超碰香蕉987| 久久久久久综合| 三级在线观看一区二区| 91丨porny丨最新| 2021久久国产精品不只是精品| 亚洲自拍偷拍av| 成人av电影在线| 日韩女优电影在线观看| 亚洲国产综合色| 不卡区在线中文字幕| 久久先锋资源网| 肉丝袜脚交视频一区二区| 91小视频在线| 极品尤物av久久免费看| 欧美日韩视频第一区| 日韩美女啊v在线免费观看| 国产一区二区三区视频在线播放| 欧美久久久久免费| 亚洲欧美日韩国产另类专区| 国产999精品久久久久久绿帽| 538在线一区二区精品国产| 亚洲欧美日韩在线播放| 成人av综合一区| 国产午夜亚洲精品不卡| 蜜臀av一区二区| 在线电影欧美成精品| 一区二区三区欧美日| 99精品热视频| 国产精品美女久久久久久久久久久| 精油按摩中文字幕久久| 91精品在线观看入口| 天天爽夜夜爽夜夜爽精品视频 | 久久综合九色综合97_久久久| 性欧美大战久久久久久久久| 在线一区二区视频| 亚洲精品国产无天堂网2021| 99精品视频一区二区| 成人免费一区二区三区在线观看| 国产一区二区三区香蕉| 久久久久久久久蜜桃| 国产在线一区二区| 久久蜜臀精品av| 国产成人免费在线观看不卡| 久久久99精品久久| 国产精品白丝av| 久久久国产午夜精品| 国产精品 欧美精品| 国产日产亚洲精品系列| 高清国产一区二区| 国产精品久线在线观看| 成人av在线一区二区三区| 国产精品久久久久影院| 色综合久久久久网| 夜夜嗨av一区二区三区四季av| 在线免费av一区| 香蕉成人伊视频在线观看| 日韩一区二区三区三四区视频在线观看| 天天色综合成人网| 欧美大胆人体bbbb| 国产呦萝稀缺另类资源| 国产精品久久久久久久久晋中| 91在线你懂得| 亚洲国产乱码最新视频| 91精品欧美福利在线观看| 精品一区二区三区日韩| 国产日韩影视精品| 一本久久a久久免费精品不卡| 一区二区成人在线| 欧美高清视频在线高清观看mv色露露十八 | 日韩一级完整毛片| 国内精品国产三级国产a久久| 国产午夜精品久久久久久久| 99re成人精品视频| 午夜久久久久久久久| 精品国产一区二区三区忘忧草| 国产露脸91国语对白| 亚洲欧美激情在线| 欧美久久一二三四区| 精品一区二区三区的国产在线播放| 亚洲国产成人一区二区三区| 色综合久久66| 捆绑变态av一区二区三区| 亚洲国产精品二十页| 日本精品裸体写真集在线观看| 日本不卡视频一二三区| 国产日韩欧美综合一区| 欧美网站一区二区| 国产酒店精品激情| 一区二区三区在线高清| 26uuu亚洲婷婷狠狠天堂| 色欧美片视频在线观看在线视频| 爽好多水快深点欧美视频| 亚洲国产精品激情在线观看| 欧美日本国产视频| 国产suv一区二区三区88区| 亚洲综合免费观看高清完整版| 久久伊人中文字幕| 欧美性猛交xxxx乱大交退制版| 国产老肥熟一区二区三区| 亚洲国产日韩综合久久精品| 欧美国产日韩a欧美在线观看 | 中文字幕日韩一区| 日韩欧美激情一区| 色www精品视频在线观看| 国产呦精品一区二区三区网站| 亚洲午夜久久久久久久久电影院| 久久亚洲一区二区三区四区| 欧美中文字幕亚洲一区二区va在线 | 欧美精品一区二区精品网| 91论坛在线播放| 国产乱淫av一区二区三区| 亚洲电影激情视频网站| 亚洲天堂中文字幕| 久久精品人人做人人综合 | 日韩av中文字幕一区二区| 中文字幕日韩一区二区| 久久久综合视频| 日韩视频永久免费| 欧美无砖专区一中文字| 91免费看视频| 成人高清在线视频| 国产在线一区二区综合免费视频| 日韩中文字幕亚洲一区二区va在线| 国产精品久久久久一区二区三区共| 精品对白一区国产伦| 在线不卡中文字幕播放| 色综合天天综合在线视频| 成人视屏免费看| 国产精品自产自拍| 韩国在线一区二区| 精品在线免费视频| 麻豆91在线观看| 日本不卡免费在线视频| 丝袜美腿成人在线| 天堂在线一区二区| 香蕉成人啪国产精品视频综合网| 亚洲与欧洲av电影| 一区二区激情小说| 一区二区三区欧美视频| 一区二区免费在线| 亚洲午夜久久久久中文字幕久|