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

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

?? mconfig.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* mConfig.c - contians configuration and setup functions for manlib */
/* Copyright (c) 2001 Atheros Communications, Inc., All Rights Reserved */

#ident  "ACI $Id: //depot/sw/branches/ART_V53_dragon/sw/src/dk/mdk/devlib/mConfig.c#9 $, $Header: //depot/sw/branches/ART_V53_dragon/sw/src/dk/mdk/devlib/mConfig.c#9 $"

/* 
Revsision history
--------------------
1.0       Created.
*/

#ifdef VXWORKS
#include "vxworks.h"
#endif

#ifdef __ATH_DJGPPDOS__
#include <unistd.h>
#ifndef EILSEQ  
    #define EILSEQ EIO
#endif  // EILSEQ

#define __int64 long long
#define HANDLE long
typedef unsigned long DWORD;
#define Sleep   delay
#endif  // #ifdef __ATH_DJGPPDOS__


#include "wlantype.h"
#include "ar5210reg.h"

#if defined(SPIRIT_AP) || defined(FREEDOM_AP)
#ifdef COBRA_AP
#include "ar531xPlusreg.h"
#else
#include "ar531xreg.h"
#endif

#ifdef FALCON_ART_CLIENT
#include "ar5513reg.h"
#endif

#endif

#include "athreg.h"
#include "manlib.h"
#include "mdata.h"
#include "mEeprom.h"
#include "mConfig.h"
#include "mDevtbl.h"
#ifdef LINUX 
#include "../mdk/dk_ver.h"
#else
#include "..\mdk\dk_ver.h"
#endif
#include "mCfg210.h"
#include "mCfg211.h"
#include "mData211.h"
#include "mEEP210.h"
#include "mEEP211.h"
#include "..\ar5513\mCfg513.h"
#include "..\ar6000\mEep6000.h"
#include "artEar.h"
#include "art_ani.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <math.h>
#include "mIds.h"
#include "rate_constants.h"
//#ifdef LINUX
//#include "linuxdrv.h"
//#else
#include "ntdrv.h"
//#endif
#if !defined(VXWORKS) && !defined(LINUX)
#include <io.h>
#endif

#if (!CUSTOMER_REL) && (INCLUDE_DRIVER_CODE)
#if (MDK_AP) 
int m_ar5212Reset(LIB_DEV_INFO *pLibDev, A_UCHAR *mac, A_UCHAR *bss, A_UINT32 freq, A_UINT32 turbo) {
        return -1;
}
#else
  #include "m_ar5212.h"
#endif
#endif //CUSTOMER_REL

// ARCH_BIG_ENDIAN is defined some where. Cannot determine where it is defined
// Undefined LINUX for now
//#ifdef LINUX 
//#undef ARCH_BIG_ENDIAN
//#endif

// Mapping _access to access
#if defined (LINUX) || defined (__ATH_DJGPPDOS__ )
#define _access(fileName,mode) access((const char *)(fileName),(int)(mode))
#endif

#ifdef ARCH_BIG_ENDIAN
#include "endian_func.h"
#endif


//###########Temp place for ar5001 definitions
#define F2_EEPROM_ADDR      0x6000  // EEPROM address register (10 bit)
#define F2_EEPROM_DATA      0x6004  // EEPROM data register (16 bit)

#define F2_EEPROM_CMD       0x6008  // EEPROM command register
#define F2_EEPROM_CMD_READ   0x00000001
#define F2_EEPROM_CMD_WRITE  0x00000002
#define F2_EEPROM_CMD_RESET  0x00000004

#define F2_EEPROM_STS       0x600c  // EEPROM status register
#define F2_EEPROM_STS_READ_ERROR     0x00000001
#define F2_EEPROM_STS_READ_COMPLETE  0x00000002
#define F2_EEPROM_STS_WRITE_ERROR    0x00000004
#define F2_EEPROM_STS_WRITE_COMPLETE 0x00000008


LIB_INFO gLibInfo = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
MANLIB_API A_UINT32 enableCal = DO_NF_CAL | DO_OFSET_CAL;

A_UINT32 lib_memory_range;
A_UINT32 cache_line_size;

static A_INT32 tempMDKErrno = 0;
static char tempMDKErrStr[SIZE_ERROR_BUFFER];
#ifndef MDK_AP
static FILE     *logFileHandle;
static A_BOOL   logging = 0;
#endif


PCI_VALUES pciValues[MAX_PCI_ENTRIES];

//MANLIB_API A_UINT32 checkSumLength=0x400; //default to 16k
//MANLIB_API A_UINT32 eepromSize=0;
                    
// Local Functions
static void    initializeTransmitPower(A_UINT32 devNum, A_UINT32 freq,  
    A_INT32  override, A_UCHAR  *pwrSettings);
static A_BOOL setChannel(A_UINT32 devNum, A_UINT32 freq);
static void setSpurMitigation(A_UINT32 devNum, A_UINT32 freq);
static void testEEProm(A_UINT32 devNum);
static void enable_beamforming(A_UINT32 devNum);
static void init_beamforming_weights(A_UINT32 devNum);
#ifdef HEADER_LOAD_SCHEME
static A_BOOL setupEEPromHeaderMap(A_UINT32 devNum);
#endif //HEADER_LOAD_SCHEME

static PWR_CTL_PARAMS  pwrParams = { {FALSE, FALSE, FALSE}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0}, 
                                    {0, 0, 0} };

A_UINT32 hwReset ( A_UINT32 devNum, A_UINT32 resetMask) {
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

    //printf("SNOOP:::hwReset passing to %s\n", (pLibDev->devMap.remoteLib?"remote":"local"));

    if (pLibDev->devMap.remoteLib)
       return (pLibDev->devMap.r_hwReset(devNum, resetMask));
    else {
       ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->hwReset(devNum, resetMask);
       return(0xDEADBEEF); // it appears hwReset is overloaded to return macRev ONLY for remoteLib.
                          // return a bogus value in other case to suppress warnings. PD 1/04
    }
}

void pllProgram ( A_UINT32 devNum, A_UINT32 turbo) {

    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];


    if (pLibDev->devMap.remoteLib) {
        if((ar5kInitData[pLibDev->ar5kInitIndex].deviceID & 0xf000 == 0xa000) && pLibDev->mode == MODE_11B)
           changeField(devNum,"bb_tx_frame_to_xpab_on", 0x7);
        pLibDev->devMap.r_pllProgram(devNum, turbo, pLibDev->mode);
    }
    else
        ar5kInitData[pLibDev->ar5kInitIndex].pMacAPI->pllProgram(devNum, turbo);
}

MANLIB_API A_INT32 getNextDevNum() {
    A_UINT32 i;
    for(i = 0; i < LIB_MAX_DEV; i++) {
        if(gLibInfo.pLibDevArray[i] == NULL) {
            return i;
        }
    }
    return -1;
}

/**************************************************************************
* initializeDevice - Setup all structures associated with this device
*
*/
MANLIB_API A_UINT32 initializeDevice
(
 struct DeviceMap map
) 
{
    A_UINT32     i, devNum = LIB_MAX_DEV;
    LIB_DEV_INFO *pLibDev;

    if (map.remoteLib) { // Thin client
        lib_memory_range = 32 * 1024; // 100kB
        //lib_memory_range = 10 * 1024; // 100kB
        cache_line_size = 0x10;
    }
    else { // library present locally
        lib_memory_range = 1048576; // 1mB
        cache_line_size = 0x20;
    }

    //printf("SNOOP:: intializeDevice called\n");
    if(gLibInfo.devCount+1 > LIB_MAX_DEV) {
        mError(0xdead, EINVAL, "initializeDevice: Cannot initialize more than %d devices\n", LIB_MAX_DEV);
        return 0xdead;
    }

    // Device sanity checks
    if(map.DEV_CFG_RANGE != LIB_CFG_RANGE) {
        mError(0xdead, EINVAL, "initializeDevice: DEV_CFG_RANGE should be %d, was given %d\n", LIB_CFG_RANGE, map.DEV_CFG_RANGE);
        return 0xdead;
    }
    // Atleast 1 MB of memory is required

    if(map.DEV_MEMORY_RANGE < lib_memory_range) {
        mError(0xdead, EINVAL, "initializeDevice: DEV_MEMORY_RANGE should be more than %d, was given %d\n", lib_memory_range, map.DEV_MEMORY_RANGE);
        return 0xdead;
    }

    if(map.DEV_REG_RANGE != LIB_REG_RANGE) {
        mError(0xdead, EINVAL, "initializeDevice: DEV_REG_RANGE should be %d, was given %d\n", LIB_REG_RANGE, map.DEV_REG_RANGE);
        return 0xdead;
    }

    //check for the allocated memory being cache line aligned.
        if (map.DEV_MEMORY_ADDRESS & (cache_line_size - 1)) {
            mError(0xdead, EINVAL, 
                "initializeDevice: DEV_MEMORY_ADDRESS should be cache line aligned (0x%x), was given 0x%08lx\n", 
                cache_line_size, map.DEV_MEMORY_ADDRESS);
            return 0xdead;
        }

        for(i = 0; i < LIB_MAX_DEV; i++) {
        if(gLibInfo.pLibDevArray[i] == NULL) {
            devNum = i;
            break;
        }
    }

    assert(i < LIB_MAX_DEV);

    // Allocate the structures for the new device
    gLibInfo.pLibDevArray[devNum] = (LIB_DEV_INFO *)malloc(sizeof(LIB_DEV_INFO));
        if  (gLibInfo.pLibDevArray[devNum] == NULL) {
       mError(devNum, ENOMEM, "initializeDevice: Failed to allocate the library device information structure\n");
       return 0xdead;
    }

    // Zero out all structures
    pLibDev = gLibInfo.pLibDevArray[devNum];
    memset(pLibDev, 0, sizeof(LIB_DEV_INFO));

    pLibDev->devNum = devNum;
    pLibDev->ar5kInitIndex = UNKNOWN_INIT_INDEX;
    gLibInfo.devCount++;
    memcpy(&(pLibDev->devMap), &map, sizeof(struct DeviceMap));

    /* Initialize the map bytes for tracking memory management: calloc will init to 0 as well*/
    pLibDev->mem.allocMapSize = (pLibDev->devMap.DEV_MEMORY_RANGE / BUFF_BLOCK_SIZE) / 8;
    pLibDev->mem.pAllocMap = (A_UCHAR *) calloc(pLibDev->mem.allocMapSize, sizeof(A_UCHAR));
    if(pLibDev->mem.pAllocMap == NULL) {
        mError(devNum, ENOMEM, "initializeDevice: Failed to allocate the allocation map\n");
        free(gLibInfo.pLibDevArray[devNum]);
        return 0xdead;
    }

    pLibDev->mem.pIndexBlocks = (A_UINT16 *) calloc((pLibDev->mem.allocMapSize * 8), sizeof(A_UINT16));
    if(pLibDev->mem.pIndexBlocks == NULL) {
        mError(devNum, ENOMEM, "initializeDevice: Failed to allocate the indexBlock map\n");
        free(gLibInfo.pLibDevArray[devNum]->mem.pAllocMap);
        free(gLibInfo.pLibDevArray[devNum]);
        return 0xdead;
    }
    pLibDev->mem.usingExternalMemory = FALSE;

    pLibDev->regFileRead = 0;
    pLibDev->regFilename[0] = '\0'; // empty string

    pLibDev->mdkErrno = 0;
    pLibDev->mdkErrStr[0] = '\0';
    pLibDev->libCfgParams.refClock = REF_CLK_DYNAMIC;
    pLibDev->devState = INIT_STATE;

    pLibDev->eepromStartLoc = 0x00; // default. set to 0x400 for the 2nd eeprom_block if present
    pLibDev->maxLinPwrx4    = 0;    // default init to 0 dBm

    pLibDev->libCfgParams.chainSelect = 2;
    pLibDev->libCfgParams.flashCalSectorErased = FALSE;
    pLibDev->libCfgParams.useShadowEeprom = FALSE;
    pLibDev->libCfgParams.useEepromNotFlash = FALSE; // AR5005 configured to use flash by default 
    pLibDev->libCfgParams.tx_chain_mask = 0x3; // default dual for falcon
    pLibDev->libCfgParams.rx_chain_mask = 0x3; // default dual for falcon
    pLibDev->libCfgParams.chain_mask_updated_from_eeprom = FALSE; 
    pLibDev->blockFlashWriteOn = FALSE;
    pLibDev->noEndPacket = FALSE;

#ifndef __ATH_DJGPPDOS__
    // enable ART ANI and reuse by default
    configArtAniSetup(devNum, ART_ANI_ENABLED, ART_ANI_REUSE_ON);
#endif

    return devNum;
}

/**************************************************************************
* useMDKMemory - Repoints the libraries memory map at the one used by
*                MDK so they can share the map
*
*/

MANLIB_API void useMDKMemory
(
 A_UINT32 devNum, 
 A_UCHAR *pExtAllocMap,
 A_UINT16 *pExtIndexBlocks
)
{
    LIB_DEV_INFO *pLibDev = gLibInfo.pLibDevArray[devNum];

    if(gLibInfo.pLibDevArray[devNum] == NULL) {
        mError(devNum, EINVAL, "Device Number %d:useMDKMemory\n", devNum);
        return;
    }
    if (gLibInfo.pLibDevArray[devNum]->devState < INIT_STATE) {
        mError(devNum, EILSEQ, "Device Number %d:useMDKMemory: initializeDevice must be called first\n", devNum);
        return;
    }
    if((pExtAllocMap == NULL) || (pExtIndexBlocks == NULL)) {
        mError(devNum, EINVAL, "Device Number %d:useMDKMemory: provided memory pointers are NULL\n", devNum);
        return;
    }
    // Free the current Memory Map
    free(gLibInfo.pLibDevArray[devNum]->mem.pIndexBlocks);
    free(gLibInfo.pLibDevArray[devNum]->mem.pAllocMap);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服.丝袜.亚洲.中文.综合| 亚洲欧美在线视频| 国产日韩欧美a| 亚洲成av人片一区二区三区| 国产成人精品免费看| 欧美日韩免费电影| 亚洲三级在线观看| 成人性视频网站| 欧美白人最猛性xxxxx69交| 亚洲午夜久久久| 99精品国产热久久91蜜凸| 国产日韩成人精品| 精品一区二区三区在线播放视频 | 国产一区三区三区| 欧美日免费三级在线| 国产精品美女久久久久久| 九九精品视频在线看| 91精品国产品国语在线不卡| 亚洲国产成人tv| 国产风韵犹存在线视精品| 日韩一区二区免费视频| 亚洲成人在线网站| 在线观看三级视频欧美| 中文字幕佐山爱一区二区免费| 国产精品123| 国产婷婷色一区二区三区| 老司机免费视频一区二区三区| 91麻豆精品国产综合久久久久久| 亚洲激情第一区| 欧美做爰猛烈大尺度电影无法无天| 日韩一区有码在线| 91黄色激情网站| 日本不卡123| 欧美美女激情18p| 欧美日韩免费观看一区三区| 一区二区三区中文在线| 91猫先生在线| 亚洲国产综合人成综合网站| 色呦呦一区二区三区| 亚洲制服丝袜av| 欧美日韩视频在线观看一区二区三区 | 91丝袜国产在线播放| 国产精品白丝在线| 91国产福利在线| 日韩黄色小视频| 精品少妇一区二区三区在线播放| 精品系列免费在线观看| 国产欧美视频一区二区| 91免费版在线| 日本中文字幕不卡| 精品区一区二区| 成人免费精品视频| 亚洲成人777| 精品国产凹凸成av人网站| 国产乱码精品一品二品| 亚洲三级久久久| 欧美日本精品一区二区三区| 国精产品一区一区三区mba视频| 国产精品天天看| 欧美日韩国产一区二区三区地区| 青青草成人在线观看| 国产日产亚洲精品系列| 欧美三区在线观看| 狠狠色丁香婷婷综合久久片| 国产精品国产三级国产a| 欧美日韩亚洲综合一区| 国产福利91精品一区| 亚洲高清视频在线| 国产精品视频一二| 日韩欧美资源站| 91同城在线观看| 国产在线一区观看| 亚洲高清在线视频| 国产精品久久久久久户外露出 | 色综合天天综合网国产成人综合天 | 欧美经典三级视频一区二区三区| 欧美主播一区二区三区美女| 久久99蜜桃精品| 亚洲成人激情综合网| 国产精品麻豆欧美日韩ww| 日韩一区二区三区高清免费看看| 99免费精品在线观看| 美女一区二区视频| 亚洲午夜三级在线| 国产精品福利在线播放| 久久先锋影音av| 日韩一区二区视频在线观看| 99久久99久久久精品齐齐| 国精产品一区一区三区mba桃花| 亚洲一区二区三区四区在线观看| 国产精品三级电影| 久久综合久久综合久久综合| 91精品免费在线| 在线亚洲免费视频| 91啦中文在线观看| 成人免费观看av| 国产成人午夜视频| 国产一区 二区| 激情国产一区二区| 日韩黄色在线观看| 日韩激情一二三区| 天堂久久久久va久久久久| 一级精品视频在线观看宜春院| 亚洲色图制服丝袜| 亚洲欧美在线aaa| **性色生活片久久毛片| 欧美国产禁国产网站cc| 久久丝袜美腿综合| wwwwww.欧美系列| 精品国产伦一区二区三区观看方式 | 精品福利一区二区三区| 日韩欧美亚洲国产另类| 欧美一级专区免费大片| 制服视频三区第一页精品| 欧美一区二区精品久久911| 欧美日本一区二区三区| 欧美高清视频不卡网| 欧美色手机在线观看| 欧美日本不卡视频| 日韩欧美黄色影院| 欧美大片日本大片免费观看| 精品国产免费视频| 亚洲国产精品国自产拍av| 国产欧美日韩麻豆91| 亚洲欧洲日韩一区二区三区| 亚洲欧美一区二区三区国产精品| 亚洲欧美日韩国产综合| 亚洲一区二区三区视频在线播放| 亚洲高清一区二区三区| 日本成人在线看| 国产精品正在播放| 色综合天天视频在线观看| 欧美日韩极品在线观看一区| 日韩视频一区二区在线观看| www一区二区| 亚洲欧美日韩中文播放| 亚洲成a人v欧美综合天堂下载| 蓝色福利精品导航| 成人污污视频在线观看| 在线观看一区不卡| 日韩欧美国产一区在线观看| 国产三级一区二区| 一区二区国产视频| 久久电影网电视剧免费观看| 成人av网址在线| 91精品国产欧美一区二区18| 国产日产精品一区| 亚洲va在线va天堂| 国产成人精品免费网站| 欧美日韩三级视频| 久久精品一区二区三区不卡牛牛| 亚洲视频免费观看| 狠狠色丁香久久婷婷综合_中| 91在线免费播放| 日韩欧美激情在线| 一区二区在线观看av| 精一区二区三区| 欧美影院午夜播放| 国产喷白浆一区二区三区| 亚洲午夜精品在线| 成人免费毛片嘿嘿连载视频| 欧美一区二区三区在线观看视频| 国产精品免费aⅴ片在线观看| 日韩精品电影在线观看| 成人黄色a**站在线观看| 日韩欧美国产不卡| 亚洲国产成人高清精品| 不卡的av中国片| 久久午夜羞羞影院免费观看| 午夜电影网一区| 欧洲一区二区三区免费视频| 国产精品视频你懂的| 蜜乳av一区二区三区| 欧美性生交片4| 亚洲精品国产一区二区精华液 | 青青草原综合久久大伊人精品优势| 波多野结衣在线一区| 久久精品一区四区| 精品一区二区三区的国产在线播放| 欧美亚洲综合久久| 亚洲婷婷国产精品电影人久久| 国产福利不卡视频| 久久亚洲综合色一区二区三区| 亚洲国产欧美一区二区三区丁香婷| www.爱久久.com| 亚洲国产成人在线| 国产成人aaaa| 久久精品日韩一区二区三区| 久久精品国产**网站演员| 欧美日韩国产美| 亚洲va国产天堂va久久en| 在线观看日韩一区| 亚洲影视资源网| 精品视频一区二区不卡| 亚洲国产色一区| 欧美美女网站色| 日本不卡中文字幕| 精品少妇一区二区三区日产乱码| 美女精品自拍一二三四| 欧美草草影院在线视频|