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

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

?? mconfig.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
    }
// phyonly reset. Used in the emulation board
#if defined(SPIRIT_AP) || defined(FREEDOM_AP)
#ifdef EMULATION
    REGW(devNum,0x9928,0);
    mSleep(10);
    REGW(devNum,0x9928,1);
#endif
#endif

#ifdef FREEDOM_AP
//  changeField(devNum, "rf_ovr", 1);
//  changeField(devNum, "rf_gain_I", 0x10);
#endif
    // Setup Values from EEPROM - only touches EEPROM the first time
    //FJC: 06/09/03 moved reading eeprom to here, since it reads the EAR
    if (pLibDev->eePromLoad) {
        if(pLibDev->swDevID >= 0x0012) {
            REGW(devNum, 0x6010, REGR(devNum, 0x6010) | 0x3);
        }
        if(!setupEEPromMap(devNum)) {
            mError(devNum, EIO, "Error: unable to load EEPROM\n");
            return;
        }
        if((((pLibDev->eepData.version >> 12) & 0xF) >= 4) &&
           (((pLibDev->eepData.version >> 12) & 0xF) <= 5) &&
           (!isFalcon(devNum))) 
        {
            earHere = ar5212IsEarEngaged(devNum, pLibDev->pEarHead, freq);
//          printf("In reset Device pLibDev->p16kEepHeader->majorVersion loadcfgdata ar5212IsEarEngaged\n");
        }
    }

    //do a check for EAR changes to rf registers
    if ((earHere) && (!isFalcon(devNum))){
        ar5212EarModify(devNum, pLibDev->pEarHead, EAR_LC_RF_WRITE, freq, &modifier);
    }
    /* Initialize chips with values from register file */
    for(i = 0; i < pLibDev->sizePciValuesArray; i++ ) {
#if defined(SPIRIT_AP) || defined(FREEDOM_AP)
#ifdef EMULATION
        if (pLibDev->pciValuesArray[i].offset == 0x9928) continue;
#endif
#endif

        /*if dealing with a version 2 config file, 
          then all values are found in the base array */
        pciValues[i].offset = pLibDev->pciValuesArray[i].offset;
        if((pLibDev->turbo == TURBO_ENABLE) && (ar5kInitData[pLibDev->ar5kInitIndex].cfgVersion < 2)) {
            if (pLibDev->devMap.remoteLib) {
                pciValues[i].baseValue = pLibDev->pciValuesArray[i].turboValue;
            }
            else {
#if defined(COBRA_AP)
                if(pLibDev->pciValuesArray[i].offset < 0x14000)
#endif
                REGW(devNum, pLibDev->pciValuesArray[i].offset, pLibDev->pciValuesArray[i].turboValue);
            }
        }
        else {
            if (pLibDev->devMap.remoteLib) {
                pciValues[i].baseValue = pLibDev->pciValuesArray[i].baseValue;
            }
            else {
#if defined(COBRA_AP)
                if(pLibDev->pciValuesArray[i].offset < 0x14000)
#endif
                    REGW(devNum, pLibDev->pciValuesArray[i].offset, pLibDev->pciValuesArray[i].baseValue);
            }
        }


        //++JC++ For Griffin bank6 problem - temporary - remove after the problem is fixed
        // Capture the data that is written to bank6
        if((pLibDev->swDevID & 0xff) == 0x0018) {
            if (isGriffin_1_0(pLibDev->macRev) || isGriffin_1_1(pLibDev->macRev)) {
                if((pLibDev->pciValuesArray[i].offset == 0x989c) || (pLibDev->pciValuesArray[i].offset == 0x98d8)) { 
   
                    if ((pLibDev->pciValuesArray[i].offset == 0x989c) && (bank6_over == 0)) {
                        bank6_data[zz] = pLibDev->pciValuesArray[i].baseValue;
                        zz++; 
                    } else if ((pLibDev->pciValuesArray[i].offset == 0x98d8) && (zz >= 25)) {
                        bank6_data[zz] = pLibDev->pciValuesArray[i].baseValue;
                        bank6_over = 1;
                    }
                }
            }
        }
        //++JC++
    } // end of for
    if (pLibDev->devMap.remoteLib) 
        sendPciWrites(devNum, pciValues, pLibDev->sizePciValuesArray);

    //++JC++
    // Form the data that needs to be compared with data read out of bank6
    if(isGriffin(pLibDev->swDevID)) {
        if (isGriffin_1_0(pLibDev->macRev) || isGriffin_1_1(pLibDev->macRev)) {
        di_31_00 = (bank6_data[zz - 8] & 0xff) | ((bank6_data[zz - 7] & 0xff) << 8) |
            ((bank6_data[zz - 6] & 0xff) << 16) | ((bank6_data[zz - 5] & 0xff) << 24);

        di_63_32 = (bank6_data[zz - 4] & 0xff) | ((bank6_data[zz - 3] & 0xff) << 8) |
            ((bank6_data[zz - 2] & 0xff) << 16) | ((bank6_data[zz - 1] & 0xff) << 24);

        di_67_64 = (bank6_data[zz] & 0xf);

        // Program reg5 to read out tx chain
        REGW(devNum, (0x9800+(0x34<<2)), 0x0);
        os1 = 1;
        os0 = 0;

        dreg1 = 0;
        dreg0 = 0;

        da2 = 1;
        da1 = 1;
        da0 = 0;

        tmp = da0<<20 | da1<<19 | da2<<18 | dreg0<<17 | dreg1<<16
                | 0x5<<2 | os0<<1 | os1;

        REGW(devNum, (0x9800+(0x34<<2)), tmp);
        
        //------------------------------------------------------------------------
        //loop to do write and check
        //------------------------------------------------------------------------

        shift_good = 0;
        num_tries  = 0;
        
        while ((shift_good == 0) && (num_tries<1000)) {

            //
            // shift in data
            //
            for (kk=0;kk<27;kk++) {
                if (kk==26) {
                    offset = 0x36;
                } else {
                    offset = 0x27;
                }
                data = bank6_data[zz-26+kk];
        
                REGW(devNum,0x9800+(offset<<2), data);
            }
            //
            // shift out data
            //
            for (kk=0; kk<32; kk++) {
                    REGW(devNum,(0x9800+(0x20<<2)), 0x00010000);
            }
            do_31_00 = REGR(devNum,0x9800+(256<<2));
        
            for (kk=0; kk<32; kk++) {
                REGW(devNum,(0x9800+(0x20<<2)), 0x00010000);
                }
            do_63_32 = REGR(devNum,0x9800+(256<<2));
        
            for (kk=0; kk<4; kk++) {
                REGW(devNum,(0x9800+(0x20<<2)), 0x00010000);
            }
            do_67_64 = (REGR(devNum,0x9800+(256<<2)))>>28;
        
            //printf ("\n");
            //printf (" di: 0x%01x  0x%08x  0x%08x\n", di_67_64, di_63_32, di_31_00);
            //printf (" do: 0x%01x  0x%08x  0x%08x\n", do_67_64, do_63_32, do_31_00);
            if ((((di_31_00)&0xffffffff) != ((do_31_00)&0xffffffff)) 
                || (((di_63_32)&0xffffffff) != ((do_63_32)&0xffffffff)) 
                || ((di_67_64 & 0xf) != (do_67_64 & 0xf))) {
        
                //printf ("\n");
                //printf (" di: 0x%01x  0x%08x  0x%08x\n", di_67_64, di_63_32, di_31_00);
                //printf (" do: 0x%01x  0x%08x  0x%08x\n", do_67_64, do_63_32, do_31_00);
                shift_good = 0;
            } else {
                shift_good = 1;
            }
            num_tries++;
        }
        //printf ("Done Bank 6 problem workaround\n\n");
    }
}
// End of workaround for griffin bank6 problem
//++JC++
    
    if((turbo == TURBO_ENABLE) && (ar5kInitData[pLibDev->ar5kInitIndex].cfgVersion < 3)) {
        //quick enable to venice 11g turbo.  Force minimum fields in here
        //version 3 config files have a 11g turbo column
        if(((pLibDev->swDevID & 0xff) >= 0x0013) && ((pLibDev->mode == MODE_11G)||(pLibDev->mode == MODE_11O))) {
            changeRegValueField(devNum, "bb_short20", 1);
            changeRegValueField(devNum, "rf_turbo", 1);
            changeRegValueField(devNum, "bb_turbo", 1);
            changeRegValueField(devNum, "mc_turbo_mode", 1);
            changeRegValueField(devNum, "bb_dyn_ofdm_cck_mode", 0);
            changeRegValueField(devNum, "bb_agc_settling", 0x25);
            changeRegValueField(devNum, "mc_sifs_dcu", 480);
            changeRegValueField(devNum, "mc_slot_dcu", 480);
            changeRegValueField(devNum, "mc_eifs_dcu", 4480);
            changeRegValueField(devNum, "mc_usec_duration", 80);
            changeRegValueField(devNum, "mc_sifs_duration_usec", 6);
            changeRegValueField(devNum, "mc_cts_timeout", 0x12c0);
            changeRegValueField(devNum, "mc_ack_timeout", 0x12c0);
            changeRegValueField(devNum, "mc_usec", 79);
        }
    }

    if(((pLibDev->swDevID & 0xff) >= 0x0013) && (pLibDev->mode == MODE_11O)) {
        changeRegValueField(devNum, "bb_dyn_ofdm_cck_mode", 0);
    }

/* Remove this after moving this value to config file  */

#ifdef FREEDOM_AP
/*
    REGW(devNum,0x9848,0x0018d410);
    REGW(devNum,0x996c, 0x1301); // sigma-delta control
    REGW(devNum, 0x982c, 0x0002effe);
*/
#endif


    /* delta_slope_coeff_exp and delta_slope_coeff_man for venice */
    if ((pLibDev->swDevID & 0x00ff) >= 0x0013) {
        double fclk,coeff;
        A_UINT32 coeffExp,coeffMan;
        A_UINT32 deltaSlopeCoeffMan, deltaSlopeCoeffExp;
        A_UINT32 progCoeff;

        switch (pLibDev->mode) {
            case MODE_11A:
                if(pLibDev->swDevID == 0xf013) {
                    fclk = 16.0;
                }
                else {
                    switch (turbo) {
                    case QUARTER_SPEED_MODE:
                        fclk = 10;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 1);
                            writeField(devNum, "bb_half_rate_mode", 0);
                            writeField(devNum, "bb_window_length", 3);
                        }
                        break;
                    case HALF_SPEED_MODE:
                        fclk = 20;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 0);
                            writeField(devNum, "bb_half_rate_mode", 1);
                            writeField(devNum, "bb_window_length", 3);
                        }
                        break;
                    case TURBO_ENABLE:
                        fclk = 80;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 0);
                            writeField(devNum, "bb_half_rate_mode", 0);
                            writeField(devNum, "bb_window_length", 0);
                        }
                        break;
                    default :   // base 
                        fclk = 40;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 0);
                            writeField(devNum, "bb_half_rate_mode", 0);
                            writeField(devNum, "bb_window_length", 0);
                        }
                        break;
                    }
                }
                progCoeff = 1;
                break;
            case MODE_11G:
            case MODE_11O:
                if(pLibDev->swDevID == 0xf013) {
                    fclk = (16.0 * 10.0) / 11.0;
                }
                else {
                    switch (turbo) {
                    case QUARTER_SPEED_MODE:
                        fclk = 10;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 1);
                            writeField(devNum, "bb_half_rate_mode", 0);
                        }
                        break;
                    case HALF_SPEED_MODE:
                        fclk = 20;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 0);
                            writeField(devNum, "bb_half_rate_mode", 1);
                        }
                        break;
                    case TURBO_ENABLE:
                        fclk = 80;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 0);
                            writeField(devNum, "bb_half_rate_mode", 0);
                        }
                        break;
                    default :   // base 
                        fclk = 40;
                        if(isEagle(pLibDev->swDevID)) {
                            writeField(devNum, "bb_quarter_rate_mode", 0);
                            writeField(devNum, "bb_half_rate_mode", 0);
                        }
                        break;
                    }
                }
                progCoeff = 1;
                break;
            default:
                fclk = 0;
                progCoeff = 0;
                break;
        }
        if (progCoeff) {
            coeff = (2.5 * fclk) / ((double)freq);
            coeffExp = 14 -  (int)(floor(log10(coeff)/log10(2)));
            coeffMan = (int)(floor((coeff*(pow(2,coeffExp))) + 0.5));
            deltaSlopeCoeffExp = coeffExp - 16;
            deltaSlopeCoeffMan = coeffMan;
            REGW(devNum, 0x9814, (REGR(devNum,0x9814) & 0x00001fff) | 
                                 (deltaSlopeCoeffExp << 13) |
                                      (deltaSlopeCoeffMan << 17));


        }
    }
    //Disable all the mac queue clocks
    if((pLibDev->swDevID != 0x0007) && (pLibDev->swDevID != 0x0010)) {
        disable5211QueueClocks(devNum);
    }
    
    
// Byteswap Tx and Rx descriptors for Big Endian systems
#if defined(ARCH_BIG_ENDIAN)
    REGW(devNum, F2_CFG, F2_CFG_SWTD | F2_CFG_SWRD);
#endif


#ifdef HEADER_LOAD_SCHEME
    else if (pLibDev->eePromHeaderLoad) {
        setupEEPromHeaderMap(devNum);
    }
#endif //HEADER_LOAD_SCHEME
    // Setup the macAddr in the chip
    memcpy(pLibDev->macAddr.octets, mac, WLAN_MAC_ADDR_SIZE);
#ifndef ARCH_BIG_ENDIAN
    REGW(devNum, F2_STA_ID0, pLibDev->macAddr.st.word);
    temp1 = REGR(devNum, F2_STA_ID1); 
    temp2 = (temp1 & 0xffff0000) | F2_STA_ID1_AD_HOC | pLibDev->macAddr.st.half | F2_STA_ID1_DESC_ANT;
    REGW(devNum, F2_STA_ID1, temp2); 
#else
    {
        A_UINT32 addr;
        
        addr = swap_l(pLibDev->macAddr.st.word);
        REGW(devNum, F2_STA_ID0, addr);
        addr = (A_UINT32)swap_s(pLibDev->macAddr.st.half);
        REGW(devNum, F2_STA_ID1, (REGR(devNum, F2_STA_ID1) & 0xffff0000

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线不卡一区| 97久久人人超碰| 成人免费毛片a| 欧美日韩精品欧美日韩精品 | 成人午夜激情影院| 欧美日韩国产高清一区二区三区| 久久免费美女视频| 亚洲bdsm女犯bdsm网站| 北条麻妃国产九九精品视频| 欧美一区二区免费视频| 亚洲女女做受ⅹxx高潮| 国产激情一区二区三区四区| 91麻豆精品国产91久久久使用方法| 国产日韩一级二级三级| 成人天堂资源www在线| 日韩视频在线观看一区二区| 一区二区三区中文在线| 99久久夜色精品国产网站| 精品久久人人做人人爱| 日韩国产在线一| 欧洲色大大久久| 亚洲欧美偷拍三级| 国产成人精品免费在线| 国产日韩一级二级三级| 国产精品资源网站| 精品国产91乱码一区二区三区 | 婷婷久久综合九色综合伊人色| 波多野结衣亚洲| 国产精品视频第一区| 狠狠久久亚洲欧美| 久久精品欧美一区二区三区不卡 | 国内精品写真在线观看| 日韩一级完整毛片| 奇米影视在线99精品| 欧美福利视频一区| 午夜精品国产更新| 欧美精品日韩综合在线| 视频一区二区不卡| 日韩欧美二区三区| 精品一区在线看| 久久女同性恋中文字幕| 国产高清视频一区| 国产精品污污网站在线观看| 成人妖精视频yjsp地址| 亚洲欧美一区二区久久| 欧美最新大片在线看| 亚洲成年人网站在线观看| 日韩一二三四区| 国产老肥熟一区二区三区| 国产午夜精品在线观看| 97成人超碰视| 蜜臀va亚洲va欧美va天堂| 久久一夜天堂av一区二区三区| 国产丶欧美丶日本不卡视频| 国产精品久久二区二区| 欧洲激情一区二区| 九一久久久久久| 国产精品乱人伦一区二区| 欧美亚一区二区| 国模套图日韩精品一区二区| 欧洲av一区二区嗯嗯嗯啊| 99精品桃花视频在线观看| 久久先锋影音av鲁色资源网| 国产日韩欧美a| 一区二区欧美国产| 日韩国产欧美一区二区三区| 91网站黄www| 国产乱码精品一区二区三区五月婷| 99re在线精品| 久久久久久久综合日本| 久久97超碰国产精品超碰| 久久精品免费在线观看| 色综合天天综合| 免费久久精品视频| 国产精品国产自产拍高清av王其| 欧美亚洲高清一区二区三区不卡| 蜜臀精品久久久久久蜜臀 | 99riav一区二区三区| 亚洲国产精品久久人人爱| 久久先锋影音av鲁色资源| 色婷婷综合中文久久一本| 韩国精品在线观看| 一区二区三区日韩精品视频| 日韩欧美国产综合| 国产一区二区不卡在线| 精品国产伦理网| 亚洲成人www| 欧美日韩国产另类一区| 毛片一区二区三区| 2023国产精华国产精品| 欧美精品久久天天躁| 久久精品一区二区三区不卡 | 另类综合日韩欧美亚洲| 国产一区二区三区| 日韩欧美在线观看一区二区三区| 色94色欧美sute亚洲线路一久| 国产福利一区在线观看| 成人性生交大片免费| 自拍av一区二区三区| 99久久久国产精品| 亚洲天堂免费看| 欧美在线观看一区二区| 国内精品国产成人| 日韩视频免费观看高清完整版 | 成人欧美一区二区三区1314| 欧美丰满一区二区免费视频| 91色.com| 欧美体内she精高潮| 免费看欧美女人艹b| 亚洲同性gay激情无套| 亚洲欧美激情在线| 欧美午夜精品理论片a级按摩| 一区二区成人在线视频| 国产日产欧美一区二区三区 | 91麻豆蜜桃一区二区三区| 亚洲国产成人精品视频| 日韩欧美国产系列| 日韩欧美二区三区| 日韩欧美电影一区| 日本韩国精品在线| 日本不卡不码高清免费观看| 在线免费观看日韩欧美| 久久机这里只有精品| 国产精品福利影院| 666欧美在线视频| 国精产品一区一区三区mba视频 | 不卡的av在线| 欧美日韩三级在线| 91电影在线观看| 欧亚一区二区三区| 欧美优质美女网站| 欧美午夜理伦三级在线观看| 91福利视频久久久久| 成人免费精品视频| 欧美在线观看视频在线| 国产日韩欧美麻豆| 亚洲二区视频在线| 日本怡春院一区二区| 国产高清亚洲一区| 国产精品自拍三区| 99热精品国产| 欧美电影影音先锋| 精品国产一区二区精华| 日本一区二区三区dvd视频在线| www激情久久| 一区在线观看视频| 亚洲另类在线制服丝袜| 综合久久给合久久狠狠狠97色| 亚洲欧洲成人自拍| 午夜精品一区二区三区三上悠亚| 日韩电影在线免费| 高清不卡一区二区| 欧美性做爰猛烈叫床潮| 精品国产三级a在线观看| 中文字幕一区二区三区精华液 | 成人免费毛片片v| 欧美亚洲综合另类| 2023国产精品自拍| 亚洲自拍偷拍图区| 国产一区二区在线免费观看| 不卡一卡二卡三乱码免费网站| 91福利国产精品| 国产欧美一区二区三区鸳鸯浴| 亚洲亚洲精品在线观看| 成人一区二区在线观看| 91精品免费观看| 久久色中文字幕| 日韩av电影天堂| 色综合欧美在线视频区| 精品捆绑美女sm三区| 一区二区不卡在线播放| 成人小视频在线| 久久亚洲精华国产精华液| 亚洲欧美欧美一区二区三区| 国产精品99久| 欧美一级精品在线| 亚洲成人高清在线| 色乱码一区二区三区88| 国产精品污网站| 国产自产视频一区二区三区| 91精品在线免费观看| 一区二区三区在线视频播放| 成人a区在线观看| 国产欧美一区二区精品秋霞影院 | 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 91成人国产精品| 国产精品美女视频| 国产精品自在在线| 欧美不卡视频一区| 美女www一区二区| 日韩美女主播在线视频一区二区三区| 亚洲永久免费av| 91女神在线视频| 亚洲免费观看高清完整版在线观看 | 国产一区二区在线看| 日韩一级成人av| 另类小说视频一区二区| 日韩一二三区视频| 久久精品久久99精品久久| 日韩欧美色电影|