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

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

?? mconfig.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
    // Finished getting the first set of data

   // Get second set of data - in the while loop till the second set is obtained
   cl_cal_done = 0;
   while (cl_cal_done == 0) {
   
      data = REGR(devNum,0x9860);
      data = data | 0x1;
      REGW(devNum,0x9860, data);
   
      // Check for cal done
      for (i = 0; i < 1000; i++) {
         if ((REGR(devNum, PHY_AGC_CONTROL) & (enableCal)) == 0 ) {
            break;
         }
         mSleep(1);
      }
      if(i >= 1000) {
         printf("Device Number %d:Didn't complete cal but keep going anyway\n", devNum);
      }

      offset = cl_cal_reg[0];
      data = REGR(devNum, offset);
      add_I_second[0] = (data >> 16) & 0x7ff;
      add_Q_second[0] = (data >>  5) & 0x7ff;
   
      if (((add_I_second[0]>>10) & 0x1) == 1) {
          add_I_second[0] = add_I_second[0] | 0xfffff800;
      }
      if (((add_Q_second[0]>>10) & 0x1) == 1) {
          add_Q_second[0] = add_Q_second[0] | 0xfffff800;
      }
   
      // Get the difference between the first set and the current set
      add_I_diff = abs(add_I_first[0] - add_I_second[0]);
      add_Q_diff = abs(add_Q_first[0] - add_Q_second[0]);

      // Recognize the current set as the second set if diff > 8
      if ((add_I_diff > 8) || (add_Q_diff > 8)) {
          for (kk=0; kk<9; kk++) {             // Get the full second set
          offset = cl_cal_reg[kk];
              data = REGR(devNum, offset);
   
              add_I_second[kk] = (data >> 16) & 0x7ff;
              add_Q_second[kk] = (data >>  5) & 0x7ff;
   
              if (((add_I_second[kk]>>10) & 0x1) == 1) {
                  add_I_second[kk] = add_I_second[kk] | 0xfffff800;
              }
              if (((add_Q_second[kk]>>10) & 0x1) == 1) {
                  add_Q_second[kk] = add_Q_second[kk] | 0xfffff800;
              }
          }
          cl_cal_done = 1;
      }
   }

   // Form the average of the two values
   for (kk=0; kk<9; kk++) {             
      add_I_avg[kk] = (add_I_first[kk] + add_I_second[kk])/2;
      add_Q_avg[kk] = (add_Q_first[kk] + add_Q_second[kk])/2;

      add_I_avg[kk] = add_I_avg[kk] & 0x7FF;  // To take care of signed values
      add_Q_avg[kk] = add_Q_avg[kk] & 0x7FF;  // To take care of signed values
   }

   // Write back the average values into the registers
   for (kk=0; kk<9; kk++) {             
      offset = cl_cal_reg[kk];
      data = REGR(devNum, offset);
      data = data & 0xF800001F;               // Clear the bits where the avg is to be written
      data = data | (add_I_avg[kk] << 16) | (add_Q_avg[kk] << 5);     // Or in the avg data
      REGW(devNum,cl_cal_reg[kk], data);
   }

   // Enable Carrier Leak Correction
   data = REGR(devNum,0xa358);
   data = data | 0x40000000;
   REGW(devNum,0xa358, data);
   //printf("Done Carrier Leak cal workaround\n\n");

}
//++JC++


/**************************************************************************
* resetDevice - reset the device and initialize all registers
*
*/
MANLIB_API void resetDevice
(
 A_UINT32 devNum, 
 A_UCHAR *mac, 
 A_UCHAR *bss, 
 A_UINT32 freq, 
 A_UINT32 turbo
)
{
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];
    A_INT32 i;
    A_UINT32  *pValue = NULL;
    A_UINT32  newThreshold, newThresholdTurbo;
    A_UINT32 temp1, temp2, temp3, temp4, temp5, temp6;
    A_UINT32 modifier;
    A_BOOL   earHere = FALSE;
    A_UINT32 prev_freq;
    A_UINT32 gpioData;
    A_UINT32 timeout = 0;

//++JC++
A_UINT32 bank6_data[63];
A_INT32 zz = 0;
A_INT32 bank6_over = 0;
A_UINT32 di_31_00, di_63_32, di_67_64, do_31_00, do_63_32, do_67_64;
A_UINT32 os0, os1, dreg0, dreg1, da0, da1, da2, tmp, offset, data;
A_INT32 kk, shift_good, num_tries;
//++JC++

#ifndef CUSTOMER_REL
//    A_UINT32 resetDevice_start, resetDevice_end;
//    printf("SNOOP::calling resetDevice:with turbo=%d:freq=%d\n", turbo, freq);
//    resetDevice_start=milliTime();
#endif
    //strip off the channelMask flags, not using this any more, leave for now just 
    //in case somewhere in the code we set the mask.
    pLibDev->channelMasks = turbo & 0xffff0000;
    turbo = turbo & 0xffff;

    //look for the other alternative way of setting the 2.5Mhz channel centers
    //look for channel *10 
//printf("SNOOP: freq at 1= %d\n", freq);
    if((freq >= 49000) && (freq < 60000)) {
        if((freq % 10) == 0) {
            freq = freq / 10;
//printf("SNOOP: freq at 2= %d\n", freq);
        }
        else {
            //must be a 2.5 MHz channel - check
//printf("SNOOP: freq at 3= %d\n", freq);
            if((freq % 25) != 0) {
                mError(devNum, EINVAL, "Illegal channel value %d:resetDevice\n", freq);
                return;
            }
            pLibDev->channelMasks |= QUARTER_CHANNEL_MASK;
            freq = (freq - 25) / 10;
        }
    }
    if((freq >= 24120) && (freq <= 24840)) {
        if((freq % 10) == 0) {
            freq = freq / 10;
        }
        else {
            mError(devNum, EINVAL, "Illegal channel value %d:resetDevice\n", freq);
            return;
        }
    }
//printf("SNOOP: freq = %d, channelMasks = %x\n", freq, pLibDev->channelMasks);

    // temporarily disable eeprom load for griffin SNOOP: remove asap
    if (isGriffin(pLibDev->swDevID)) {
//      printf("Disabling EEPROM load for griffin\n");
//      pLibDev->eePromLoad = FALSE;
    }

    prev_freq = pLibDev->freqForResetDevice;

    pLibDev->turbo = 0;
    pLibDev->mdkErrno = 0;
    if (checkDevNum(devNum) == FALSE) {
        mError(devNum, EINVAL, "Device Number %d:resetDevice\n", devNum);
        return;
    }
    if (gLibInfo.pLibDevArray[devNum]->devState < INIT_STATE) {
        mError(devNum, EILSEQ, "Device Number %d:resetDevice: Device should be initialized before calling reset\n", devNum);
        return;
    }

    pLibDev->hwDevID = (pLibDev->devMap.OScfgRead(devNum, 0) >> 16) & 0xffff;

// Dont call the driver init code for now
#if (MDK_AP) || (CUSTOMER_REL) || (!INCLUDE_DRIVER_CODE)
    pLibDev->use_init = !DRIVER_INIT_CODE;
#endif

    if (pLibDev->use_init == DRIVER_INIT_CODE) {
#if (!CUSTOMER_REL) && (INCLUDE_DRIVER_CODE)
#ifndef NO_LIB_PRINT
       printf("resetDevice::Using Driver init code\n"); 
#endif

       if (m_ar5212Reset(pLibDev, mac, bss, freq, turbo) != 0) {

       }
       if (!loadCfgData(devNum, freq))
         {
                 printf(" Load cfgdata\n");
                 return;
         }
        if(!setupEEPromMap(devNum)) 
        {
            mError(devNum, EIO, "Error: unable to load EEPROM\n");
            return;
        }
#endif //CUSTOMER_REL
    }
    else {

    // load config data, if return value = 0 return from resetDevice
    if (!loadCfgData(devNum, freq))
    {
            printf(" Load cfgdata\n");
            return;
    }

//++JC++
    if(((pLibDev->swDevID & 0xff) == 0x0018) && (pLibDev->mode == 0)) {
        pLibDev->mode = 1;
//              printf("Debug:: Setting 11g mode in resetDevice for Griffin\n"); 
    }
//++JC++
    hwReset(devNum, BUS_RESET | BB_RESET | MAC_RESET);

    // program the pll, check to see if we want to override it
    if(pLibDev->libCfgParams.applyPLLOverride) {
        REGW(devNum, 0xa200, 0);
        REGW(devNum, 0x987c, pLibDev->libCfgParams.pllValue);
        mSleep(2);
    }
    else {
        pllProgram(devNum, turbo);
    }
        
    // Put baseband into base/TURBO mode 
    pLibDev->turbo = turbo;  
    if(turbo == TURBO_ENABLE) {

        REGW(devNum, PHY_FRAME_CONTROL, REGR(devNum, PHY_FRAME_CONTROL) | PHY_FC_TURBO_MODE);

        //check the turbo bit is set
        //FJC, increased this timeout from 10 to 20, sometimes predator fails here.
        for (i = 0; i < 20; i++) {
            if (REGR(devNum, PHY_FRAME_CONTROL) & PHY_FC_TURBO_MODE) {
                break;
            }
            mSleep(1);
        }


        if(i == 10) {
            mError(devNum, EIO, "Device Number %d:ResetDevice: Unable to put the device into tubo mode\n", devNum);
            return;
        }

        // Reset the baseband 
        hwReset(devNum, BB_RESET);

    }
    else {
        // Base mode
        REGW(devNum, PHY_FRAME_CONTROL, REGR(devNum, PHY_FRAME_CONTROL) & ~PHY_FC_TURBO_MODE);
        //put these back, in case they were written for 11g turbo
    }

    /* Hack for AR6000 to stop reg defaulting so INI can be written */
    if (isDragon(devNum)) {
        REGW(devNum, 0x99dc, 0xFFFFFFFF);
    }

    /* New section to handle mode switching */
    if(ar5kInitData[pLibDev->ar5kInitIndex].cfgVersion < 2) {
        switch(pLibDev->mode) {
        case MODE_11A:  //11a
            if ((pLibDev->swDevID == 0xe011) || (pLibDev->swDevID == 0xf11b)||(pLibDev->swDevID == 0x0012)) {
                changeField(devNum, "bb_enable_xpaa", 1);
                changeField(devNum, "bb_enable_xpab", 0);
                changeField(devNum, "rf_b_B_mode", 0);
            }
            break;

        case MODE_11G: //11g
            if ((pLibDev->swDevID == 0xe011) || (pLibDev->swDevID == 0xf11b)||(pLibDev->swDevID == 0x0012)) {
                changeField(devNum, "bb_enable_xpaa", 0);
                changeField(devNum, "bb_enable_xpab", 1);
                changeField(devNum, "rf_b_B_mode", 1);
            }

            break;

        case MODE_11B: //11b

            break;
        }
    }
    else {
        //Do the new handling from the ini files
        switch(pLibDev->mode) {
        case MODE_11A:  //11a
            if(pLibDev->turbo != TURBO_ENABLE) {    //11a base
                pValue = &(pLibDev->pModeArray->value11a);
            }
            else {          //11a turbo
                pValue = &(pLibDev->pModeArray->value11aTurbo);
            }

            break;

        case MODE_11G: //11g
        case MODE_11O: //ofdm@2.4
            if((pLibDev->turbo != TURBO_ENABLE) || (ar5kInitData[pLibDev->ar5kInitIndex].cfgVersion < 3)) { //11g base
                pValue = &(pLibDev->pModeArray->value11g);
            }
            else {
                pValue = &(pLibDev->pModeArray->value11gTurbo);
            }
            break;

        case MODE_11B: //11b
            pValue = &(pLibDev->pModeArray->value11b);
            break;
        } //end switch

        //do all the mode change fields
        for(i = 0; i < pLibDev->sizeModeArray; i++) {
//          changeField(devNum, pLibDev->regArray[pLibDev->pModeArray[i].indexToMainArray].fieldName, 
//              *pValue);
            updateField(devNum, &pLibDev->regArray[pLibDev->pModeArray[i].indexToMainArray], 
                *pValue, 0);
            //increment value pointer by size of an array element
            pValue = (A_UINT32 *)((A_CHAR *)pValue + sizeof(MODE_INFO));
        }
    }

    //workaround needed for first rev of Oahu
    if(pLibDev->macRev == 0x40) {
        changeField(devNum, "mc_disable_dynamic_clock", 1);
    }

    //see if need to perform any tx threshold adjusting
    if(pLibDev->adjustTxThresh) {
        getField(devNum, "mc_trig_level", &newThreshold, &newThresholdTurbo);
        if((pLibDev->turbo == TURBO_ENABLE) && (ar5kInitData[pLibDev->ar5kInitIndex].cfgVersion < 2)) {
            newThreshold = newThresholdTurbo * 2;
        }
        else {
            newThreshold = newThreshold * 2;
        }
        if (newThreshold > 0x3f) {
            newThreshold = 0x3f;
        }
        changeField(devNum, "mc_trig_level", newThreshold);
        pLibDev->adjustTxThresh  = 0;
    }
    if(((pLibDev->swDevID & 0xff) >= 0x13) && (!isFalcon(devNum))) {
        if(pLibDev->libCfgParams.enableXR) {
            changeField(devNum, "bb_enable_xr", 1);
        }
        else {
            changeField(devNum, "bb_enable_xr", 0);
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品日韩一区| 成人av在线资源网| 国产精品乡下勾搭老头1| 99国产欧美久久久精品| 欧美一级久久久| 亚洲精品欧美专区| 国产高清无密码一区二区三区| 99精品国产热久久91蜜凸| 精品成人私密视频| 日本少妇一区二区| 99精品在线观看视频| 久久久久久综合| 美女网站色91| 欧美精品粉嫩高潮一区二区| 亚洲精品五月天| jvid福利写真一区二区三区| 久久亚洲一区二区三区明星换脸| 天天色天天爱天天射综合| 97精品电影院| 亚洲欧洲成人av每日更新| 国产高清不卡二三区| 久久综合久久鬼色| 国产在线精品一区二区不卡了| 91精品国产91久久综合桃花 | 在线视频欧美精品| 中文字幕av资源一区| 国产精品主播直播| 久久亚洲影视婷婷| 国产91精品露脸国语对白| 精品国产a毛片| 国内精品嫩模私拍在线| 精品国产99国产精品| 久久99精品国产91久久来源| 日韩欧美黄色影院| 久久国产精品72免费观看| 精品国产区一区| 国产激情一区二区三区桃花岛亚洲| 久久久影视传媒| 国产成人夜色高潮福利影视| 国产亚洲一区字幕| 国产91在线看| 综合色中文字幕| 欧洲一区二区三区在线| 午夜在线电影亚洲一区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲人成伊人成综合网小说| 色偷偷久久人人79超碰人人澡| 一区二区三区中文字幕电影| 欧美日韩一区不卡| 日韩中文字幕亚洲一区二区va在线| 欧美午夜理伦三级在线观看| 日韩黄色在线观看| 久久综合色之久久综合| 波多野结衣亚洲| 亚洲成av人片在www色猫咪| 欧美一区2区视频在线观看| 韩国av一区二区三区四区| 亚洲国产高清在线| 欧美综合色免费| 激情深爱一区二区| 亚洲视频在线一区二区| 777xxx欧美| 97精品国产露脸对白| 喷水一区二区三区| 国产精品无码永久免费888| 欧美熟乱第一页| 国产精品一品二品| 亚洲福利电影网| 久久久久久久综合日本| 欧美性猛交xxxxxx富婆| 卡一卡二国产精品| 亚洲卡通动漫在线| 亚洲精品在线免费播放| 色婷婷国产精品综合在线观看| 免费看黄色91| 亚洲欧美国产77777| 精品久久久久久久久久久久包黑料 | 一区二区在线观看视频| 欧美一区二区视频观看视频 | 色狠狠综合天天综合综合| 九色porny丨国产精品| 亚洲精品国产品国语在线app| 日韩一区二区三免费高清| 91在线视频18| 国产成人自拍网| 美美哒免费高清在线观看视频一区二区 | 日韩亚洲欧美一区二区三区| 成人午夜在线免费| 美国欧美日韩国产在线播放| 亚洲免费视频中文字幕| 国产日韩成人精品| 日韩欧美国产一二三区| 欧美视频一二三区| 91在线免费视频观看| 国产一区在线精品| 久久精品国内一区二区三区| 亚洲一区电影777| 亚洲精品老司机| 国产午夜精品久久久久久免费视| 717成人午夜免费福利电影| 91免费国产在线| 不卡的av中国片| 国产福利一区在线观看| 激情图片小说一区| 国内不卡的二区三区中文字幕| 一区二区三区 在线观看视频| 久久久91精品国产一区二区三区| 欧美一区二区三区四区在线观看| 色哟哟一区二区三区| 色综合天天综合网天天狠天天| 国产成人精品三级麻豆| 国产真实乱对白精彩久久| 蜜臀久久99精品久久久久久9| 日韩福利视频导航| 日本午夜一本久久久综合| 天天色综合成人网| 久久国产精品免费| 韩日欧美一区二区三区| 国内久久婷婷综合| 国产精品中文欧美| 成人免费毛片片v| 成人黄色小视频| 91丨九色丨蝌蚪富婆spa| 97久久精品人人做人人爽50路| 不卡av在线免费观看| 99精品视频一区| 欧美在线观看一区二区| 欧美日韩国产综合久久| 91精品国产色综合久久不卡电影| 日韩视频在线你懂得| 精品国产乱码久久久久久久| 欧美国产精品一区二区三区| 国产精品网站在线| 亚洲综合小说图片| 青椒成人免费视频| 国产成人免费视频| 一本色道久久综合精品竹菊| 欧美影视一区在线| 日韩欧美国产午夜精品| 国产亚洲精品资源在线26u| 成人欧美一区二区三区视频网页| 一区二区三区中文字幕在线观看| 三级久久三级久久久| 国产乱淫av一区二区三区 | 日韩一区二区三区视频在线观看| 日韩欧美123| 中文天堂在线一区| 亚洲高清视频中文字幕| 日本不卡免费在线视频| 成人免费观看视频| 欧美三级欧美一级| 久久九九全国免费| 亚洲v精品v日韩v欧美v专区| 黄色精品一二区| 欧美综合视频在线观看| 欧美精品一区二区三区四区| 亚洲欧美一区二区不卡| 日本不卡高清视频| 91麻豆国产福利在线观看| 欧美一区二区免费观在线| 亚洲欧洲在线观看av| 日韩成人dvd| 色综合久久久久综合体| 日韩欧美国产综合在线一区二区三区 | 99久久精品99国产精品| 日韩三级视频在线看| 中文字幕一区二区三区色视频 | 一级特黄大欧美久久久| 久久成人免费网| 91免费在线视频观看| 精品久久久久一区| 日韩综合小视频| 91国内精品野花午夜精品| 中文字幕av在线一区二区三区| 日韩精品每日更新| 91成人网在线| 国产精品的网站| 国产精品影视在线| 日韩精品自拍偷拍| 午夜精品一区二区三区三上悠亚| 91丨porny丨户外露出| 日本一区二区免费在线观看视频 | 精品国产91九色蝌蚪| 午夜视频在线观看一区二区三区| 成人免费高清在线观看| 久久久久久久久99精品| 日本视频中文字幕一区二区三区| 欧美午夜精品理论片a级按摩| 亚洲欧洲无码一区二区三区| 国产精品一区二区免费不卡 | 久久久天堂av| av午夜一区麻豆| 精品一区二区在线视频| 亚洲综合一二三区| 欧美激情一区不卡| 欧美日韩精品三区| 国产精品一二三四区| 亚洲欧美另类综合偷拍| 日韩一区二区中文字幕| 色综合天天综合给合国产|