staging: vt6655: remove typedef enum __device_init_type
The value is either DEVICE_INIT_COLD or DEVICE_INIT_DXPL making no difference to code. Remove typedef and remove if statement in device_init_registers pulling the code in. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fbf515b815
commit
9f34de35d5
2 changed files with 254 additions and 222 deletions
|
@ -185,12 +185,6 @@ typedef enum __device_msg_level {
|
||||||
MSG_LEVEL_DEBUG = 4 //Only for debug purpose.
|
MSG_LEVEL_DEBUG = 4 //Only for debug purpose.
|
||||||
} DEVICE_MSG_LEVEL, *PDEVICE_MSG_LEVEL;
|
} DEVICE_MSG_LEVEL, *PDEVICE_MSG_LEVEL;
|
||||||
|
|
||||||
typedef enum __device_init_type {
|
|
||||||
DEVICE_INIT_COLD = 0, // cold init
|
|
||||||
DEVICE_INIT_RESET, // reset init or Dx to D0 power remain init
|
|
||||||
DEVICE_INIT_DXPL // Dx to D0 power lost init
|
|
||||||
} DEVICE_INIT_TYPE, *PDEVICE_INIT_TYPE;
|
|
||||||
|
|
||||||
//++ NDIS related
|
//++ NDIS related
|
||||||
|
|
||||||
#define MAX_BSSIDINFO_4_PMKID 16
|
#define MAX_BSSIDINFO_4_PMKID 16
|
||||||
|
|
|
@ -304,7 +304,7 @@ static int ethtool_ioctl(struct net_device *dev, void __user *useraddr);
|
||||||
static int device_rx_srv(PSDevice pDevice, unsigned int uIdx);
|
static int device_rx_srv(PSDevice pDevice, unsigned int uIdx);
|
||||||
static int device_tx_srv(PSDevice pDevice, unsigned int uIdx);
|
static int device_tx_srv(PSDevice pDevice, unsigned int uIdx);
|
||||||
static bool device_alloc_rx_buf(PSDevice pDevice, PSRxDesc pDesc);
|
static bool device_alloc_rx_buf(PSDevice pDevice, PSRxDesc pDesc);
|
||||||
static void device_init_registers(PSDevice pDevice, DEVICE_INIT_TYPE InitType);
|
static void device_init_registers(PSDevice pDevice);
|
||||||
static void device_free_tx_buf(PSDevice pDevice, PSTxDesc pDesc);
|
static void device_free_tx_buf(PSDevice pDevice, PSTxDesc pDesc);
|
||||||
static void device_free_td0_ring(PSDevice pDevice);
|
static void device_free_td0_ring(PSDevice pDevice);
|
||||||
static void device_free_td1_ring(PSDevice pDevice);
|
static void device_free_td1_ring(PSDevice pDevice);
|
||||||
|
@ -453,7 +453,7 @@ static void s_vCompleteCurrentMeasure(PSDevice pDevice, unsigned char byResult)
|
||||||
// Initialisation of MAC & BBP registers
|
// Initialisation of MAC & BBP registers
|
||||||
//
|
//
|
||||||
|
|
||||||
static void device_init_registers(PSDevice pDevice, DEVICE_INIT_TYPE InitType)
|
static void device_init_registers(PSDevice pDevice)
|
||||||
{
|
{
|
||||||
unsigned int ii;
|
unsigned int ii;
|
||||||
unsigned char byValue;
|
unsigned char byValue;
|
||||||
|
@ -466,239 +466,276 @@ static void device_init_registers(PSDevice pDevice, DEVICE_INIT_TYPE InitType)
|
||||||
MACbShutdown(pDevice->PortOffset);
|
MACbShutdown(pDevice->PortOffset);
|
||||||
BBvSoftwareReset(pDevice->PortOffset);
|
BBvSoftwareReset(pDevice->PortOffset);
|
||||||
|
|
||||||
if ((InitType == DEVICE_INIT_COLD) ||
|
/* Do MACbSoftwareReset in MACvInitialize */
|
||||||
(InitType == DEVICE_INIT_DXPL)) {
|
MACbSoftwareReset(pDevice->PortOffset);
|
||||||
// Do MACbSoftwareReset in MACvInitialize
|
|
||||||
MACbSoftwareReset(pDevice->PortOffset);
|
|
||||||
// force CCK
|
|
||||||
pDevice->bCCK = true;
|
|
||||||
pDevice->bAES = false;
|
|
||||||
pDevice->bProtectMode = false; //Only used in 11g type, sync with ERP IE
|
|
||||||
pDevice->bNonERPPresent = false;
|
|
||||||
pDevice->bBarkerPreambleMd = false;
|
|
||||||
pDevice->wCurrentRate = RATE_1M;
|
|
||||||
pDevice->byTopOFDMBasicRate = RATE_24M;
|
|
||||||
pDevice->byTopCCKBasicRate = RATE_1M;
|
|
||||||
|
|
||||||
pDevice->byRevId = 0; //Target to IF pin while programming to RF chip.
|
/* force CCK */
|
||||||
|
pDevice->bCCK = true;
|
||||||
|
pDevice->bAES = false;
|
||||||
|
|
||||||
// init MAC
|
/* Only used in 11g type, sync with ERP IE */
|
||||||
MACvInitialize(pDevice->PortOffset);
|
pDevice->bProtectMode = false;
|
||||||
|
|
||||||
// Get Local ID
|
pDevice->bNonERPPresent = false;
|
||||||
VNSvInPortB(pDevice->PortOffset + MAC_REG_LOCALID, &(pDevice->byLocalID));
|
pDevice->bBarkerPreambleMd = false;
|
||||||
|
pDevice->wCurrentRate = RATE_1M;
|
||||||
|
pDevice->byTopOFDMBasicRate = RATE_24M;
|
||||||
|
pDevice->byTopCCKBasicRate = RATE_1M;
|
||||||
|
|
||||||
spin_lock_irq(&pDevice->lock);
|
/* Target to IF pin while programming to RF chip. */
|
||||||
SROMvReadAllContents(pDevice->PortOffset, pDevice->abyEEPROM);
|
pDevice->byRevId = 0;
|
||||||
|
|
||||||
spin_unlock_irq(&pDevice->lock);
|
/* init MAC */
|
||||||
|
MACvInitialize(pDevice->PortOffset);
|
||||||
|
|
||||||
// Get Channel range
|
/* Get Local ID */
|
||||||
|
VNSvInPortB(pDevice->PortOffset + MAC_REG_LOCALID, &pDevice->byLocalID);
|
||||||
|
|
||||||
pDevice->byMinChannel = 1;
|
spin_lock_irq(&pDevice->lock);
|
||||||
pDevice->byMaxChannel = CB_MAX_CHANNEL;
|
|
||||||
|
|
||||||
// Get Antena
|
SROMvReadAllContents(pDevice->PortOffset, pDevice->abyEEPROM);
|
||||||
byValue = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_ANTENNA);
|
|
||||||
if (byValue & EEP_ANTINV)
|
spin_unlock_irq(&pDevice->lock);
|
||||||
pDevice->bTxRxAntInv = true;
|
|
||||||
|
/* Get Channel range */
|
||||||
|
pDevice->byMinChannel = 1;
|
||||||
|
pDevice->byMaxChannel = CB_MAX_CHANNEL;
|
||||||
|
|
||||||
|
/* Get Antena */
|
||||||
|
byValue = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_ANTENNA);
|
||||||
|
if (byValue & EEP_ANTINV)
|
||||||
|
pDevice->bTxRxAntInv = true;
|
||||||
|
else
|
||||||
|
pDevice->bTxRxAntInv = false;
|
||||||
|
|
||||||
|
byValue &= (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN);
|
||||||
|
/* if not set default is All */
|
||||||
|
if (byValue == 0)
|
||||||
|
byValue = (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN);
|
||||||
|
|
||||||
|
pDevice->ulDiversityNValue = 100*260;
|
||||||
|
pDevice->ulDiversityMValue = 100*16;
|
||||||
|
pDevice->byTMax = 1;
|
||||||
|
pDevice->byTMax2 = 4;
|
||||||
|
pDevice->ulSQ3TH = 0;
|
||||||
|
pDevice->byTMax3 = 64;
|
||||||
|
|
||||||
|
if (byValue == (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN)) {
|
||||||
|
pDevice->byAntennaCount = 2;
|
||||||
|
pDevice->byTxAntennaMode = ANT_B;
|
||||||
|
pDevice->dwTxAntennaSel = 1;
|
||||||
|
pDevice->dwRxAntennaSel = 1;
|
||||||
|
|
||||||
|
if (pDevice->bTxRxAntInv)
|
||||||
|
pDevice->byRxAntennaMode = ANT_A;
|
||||||
else
|
else
|
||||||
pDevice->bTxRxAntInv = false;
|
pDevice->byRxAntennaMode = ANT_B;
|
||||||
|
|
||||||
byValue &= (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN);
|
byValue1 = SROMbyReadEmbedded(pDevice->PortOffset,
|
||||||
if (byValue == 0) // if not set default is All
|
EEP_OFS_ANTENNA);
|
||||||
byValue = (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN);
|
|
||||||
|
|
||||||
pDevice->ulDiversityNValue = 100*260;
|
if ((byValue1 & 0x08) == 0)
|
||||||
pDevice->ulDiversityMValue = 100*16;
|
pDevice->bDiversityEnable = false;
|
||||||
pDevice->byTMax = 1;
|
else
|
||||||
pDevice->byTMax2 = 4;
|
pDevice->bDiversityEnable = true;
|
||||||
pDevice->ulSQ3TH = 0;
|
} else {
|
||||||
pDevice->byTMax3 = 64;
|
pDevice->bDiversityEnable = false;
|
||||||
|
pDevice->byAntennaCount = 1;
|
||||||
|
pDevice->dwTxAntennaSel = 0;
|
||||||
|
pDevice->dwRxAntennaSel = 0;
|
||||||
|
|
||||||
if (byValue == (EEP_ANTENNA_AUX | EEP_ANTENNA_MAIN)) {
|
if (byValue & EEP_ANTENNA_AUX) {
|
||||||
pDevice->byAntennaCount = 2;
|
pDevice->byTxAntennaMode = ANT_A;
|
||||||
|
|
||||||
|
if (pDevice->bTxRxAntInv)
|
||||||
|
pDevice->byRxAntennaMode = ANT_B;
|
||||||
|
else
|
||||||
|
pDevice->byRxAntennaMode = ANT_A;
|
||||||
|
} else {
|
||||||
pDevice->byTxAntennaMode = ANT_B;
|
pDevice->byTxAntennaMode = ANT_B;
|
||||||
pDevice->dwTxAntennaSel = 1;
|
|
||||||
pDevice->dwRxAntennaSel = 1;
|
|
||||||
if (pDevice->bTxRxAntInv)
|
if (pDevice->bTxRxAntInv)
|
||||||
pDevice->byRxAntennaMode = ANT_A;
|
pDevice->byRxAntennaMode = ANT_A;
|
||||||
else
|
else
|
||||||
pDevice->byRxAntennaMode = ANT_B;
|
pDevice->byRxAntennaMode = ANT_B;
|
||||||
// chester for antenna
|
|
||||||
byValue1 = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_ANTENNA);
|
|
||||||
if ((byValue1 & 0x08) == 0)
|
|
||||||
pDevice->bDiversityEnable = false;
|
|
||||||
else
|
|
||||||
pDevice->bDiversityEnable = true;
|
|
||||||
} else {
|
|
||||||
pDevice->bDiversityEnable = false;
|
|
||||||
pDevice->byAntennaCount = 1;
|
|
||||||
pDevice->dwTxAntennaSel = 0;
|
|
||||||
pDevice->dwRxAntennaSel = 0;
|
|
||||||
if (byValue & EEP_ANTENNA_AUX) {
|
|
||||||
pDevice->byTxAntennaMode = ANT_A;
|
|
||||||
if (pDevice->bTxRxAntInv)
|
|
||||||
pDevice->byRxAntennaMode = ANT_B;
|
|
||||||
else
|
|
||||||
pDevice->byRxAntennaMode = ANT_A;
|
|
||||||
} else {
|
|
||||||
pDevice->byTxAntennaMode = ANT_B;
|
|
||||||
if (pDevice->bTxRxAntInv)
|
|
||||||
pDevice->byRxAntennaMode = ANT_A;
|
|
||||||
else
|
|
||||||
pDevice->byRxAntennaMode = ANT_B;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "bDiversityEnable=[%d],NValue=[%d],MValue=[%d],TMax=[%d],TMax2=[%d]\n",
|
|
||||||
pDevice->bDiversityEnable, (int)pDevice->ulDiversityNValue, (int)pDevice->ulDiversityMValue, pDevice->byTMax, pDevice->byTMax2);
|
|
||||||
|
|
||||||
//2008-8-4 <add> by chester
|
|
||||||
//zonetype initial
|
|
||||||
pDevice->byOriginalZonetype = pDevice->abyEEPROM[EEP_OFS_ZONETYPE];
|
|
||||||
zonetype = Config_FileOperation(pDevice, false, NULL);
|
|
||||||
if (zonetype >= 0) { //read zonetype file ok!
|
|
||||||
if ((zonetype == 0) &&
|
|
||||||
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] != 0x00)) { //for USA
|
|
||||||
pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0;
|
|
||||||
pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0B;
|
|
||||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Init Zone Type :USA\n");
|
|
||||||
} else if ((zonetype == 1) &&
|
|
||||||
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] != 0x01)) { //for Japan
|
|
||||||
pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0x01;
|
|
||||||
pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0D;
|
|
||||||
} else if ((zonetype == 2) &&
|
|
||||||
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] != 0x02)) { //for Europe
|
|
||||||
pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0x02;
|
|
||||||
pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0D;
|
|
||||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Init Zone Type :Europe\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
|
||||||
if (zonetype != pDevice->abyEEPROM[EEP_OFS_ZONETYPE])
|
|
||||||
pr_debug("zonetype in file[%02x] mismatch with in EEPROM[%02x]\n", zonetype, pDevice->abyEEPROM[EEP_OFS_ZONETYPE]);
|
|
||||||
else
|
|
||||||
pr_debug("Read Zonetype file success,use default zonetype setting[%02x]\n", zonetype);
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
pr_debug("Read Zonetype file fail,use default zonetype setting[%02x]\n", SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_ZONETYPE));
|
|
||||||
|
|
||||||
// Get RFType
|
|
||||||
pDevice->byRFType = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_RFTYPE);
|
|
||||||
|
|
||||||
if ((pDevice->byRFType & RF_EMU) != 0) {
|
|
||||||
// force change RevID for VT3253 emu
|
|
||||||
pDevice->byRevId = 0x80;
|
|
||||||
}
|
|
||||||
|
|
||||||
pDevice->byRFType &= RF_MASK;
|
|
||||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pDevice->byRFType = %x\n", pDevice->byRFType);
|
|
||||||
|
|
||||||
if (!pDevice->bZoneRegExist)
|
|
||||||
pDevice->byZoneType = pDevice->abyEEPROM[EEP_OFS_ZONETYPE];
|
|
||||||
|
|
||||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pDevice->byZoneType = %x\n", pDevice->byZoneType);
|
|
||||||
|
|
||||||
//Init RF module
|
|
||||||
RFbInit(pDevice);
|
|
||||||
|
|
||||||
//Get Desire Power Value
|
|
||||||
pDevice->byCurPwr = 0xFF;
|
|
||||||
pDevice->byCCKPwr = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_PWR_CCK);
|
|
||||||
pDevice->byOFDMPwrG = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_PWR_OFDMG);
|
|
||||||
|
|
||||||
// Load power Table
|
|
||||||
|
|
||||||
for (ii = 0; ii < CB_MAX_CHANNEL_24G; ii++) {
|
|
||||||
pDevice->abyCCKPwrTbl[ii + 1] = SROMbyReadEmbedded(pDevice->PortOffset, (unsigned char)(ii + EEP_OFS_CCK_PWR_TBL));
|
|
||||||
if (pDevice->abyCCKPwrTbl[ii + 1] == 0)
|
|
||||||
pDevice->abyCCKPwrTbl[ii+1] = pDevice->byCCKPwr;
|
|
||||||
|
|
||||||
pDevice->abyOFDMPwrTbl[ii + 1] = SROMbyReadEmbedded(pDevice->PortOffset, (unsigned char)(ii + EEP_OFS_OFDM_PWR_TBL));
|
|
||||||
if (pDevice->abyOFDMPwrTbl[ii + 1] == 0)
|
|
||||||
pDevice->abyOFDMPwrTbl[ii + 1] = pDevice->byOFDMPwrG;
|
|
||||||
|
|
||||||
pDevice->abyCCKDefaultPwr[ii + 1] = byCCKPwrdBm;
|
|
||||||
pDevice->abyOFDMDefaultPwr[ii + 1] = byOFDMPwrdBm;
|
|
||||||
}
|
|
||||||
//2008-8-4 <add> by chester
|
|
||||||
//recover 12,13 ,14channel for EUROPE by 11 channel
|
|
||||||
if (((pDevice->abyEEPROM[EEP_OFS_ZONETYPE] == ZoneType_Japan) ||
|
|
||||||
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] == ZoneType_Europe)) &&
|
|
||||||
(pDevice->byOriginalZonetype == ZoneType_USA)) {
|
|
||||||
for (ii = 11; ii < 14; ii++) {
|
|
||||||
pDevice->abyCCKPwrTbl[ii] = pDevice->abyCCKPwrTbl[10];
|
|
||||||
pDevice->abyOFDMPwrTbl[ii] = pDevice->abyOFDMPwrTbl[10];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load OFDM A Power Table
|
|
||||||
for (ii = 0; ii < CB_MAX_CHANNEL_5G; ii++) { //RobertYu:20041224, bug using CB_MAX_CHANNEL
|
|
||||||
pDevice->abyOFDMPwrTbl[ii + CB_MAX_CHANNEL_24G + 1] = SROMbyReadEmbedded(pDevice->PortOffset, (unsigned char)(ii + EEP_OFS_OFDMA_PWR_TBL));
|
|
||||||
pDevice->abyOFDMDefaultPwr[ii + CB_MAX_CHANNEL_24G + 1] = SROMbyReadEmbedded(pDevice->PortOffset, (unsigned char)(ii + EEP_OFS_OFDMA_PWR_dBm));
|
|
||||||
}
|
|
||||||
init_channel_table((void *)pDevice);
|
|
||||||
|
|
||||||
if (pDevice->byLocalID > REV_ID_VT3253_B1) {
|
|
||||||
MACvSelectPage1(pDevice->PortOffset);
|
|
||||||
VNSvOutPortB(pDevice->PortOffset + MAC_REG_MSRCTL + 1, (MSRCTL1_TXPWR | MSRCTL1_CSAPAREN));
|
|
||||||
MACvSelectPage0(pDevice->PortOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
// use relative tx timeout and 802.11i D4
|
|
||||||
MACvWordRegBitsOn(pDevice->PortOffset, MAC_REG_CFG, (CFG_TKIPOPT | CFG_NOTXTIMEOUT));
|
|
||||||
|
|
||||||
// set performance parameter by registry
|
|
||||||
MACvSetShortRetryLimit(pDevice->PortOffset, pDevice->byShortRetryLimit);
|
|
||||||
MACvSetLongRetryLimit(pDevice->PortOffset, pDevice->byLongRetryLimit);
|
|
||||||
|
|
||||||
// reset TSF counter
|
|
||||||
VNSvOutPortB(pDevice->PortOffset + MAC_REG_TFTCTL, TFTCTL_TSFCNTRST);
|
|
||||||
// enable TSF counter
|
|
||||||
VNSvOutPortB(pDevice->PortOffset + MAC_REG_TFTCTL, TFTCTL_TSFCNTREN);
|
|
||||||
|
|
||||||
// initialize BBP registers
|
|
||||||
BBbVT3253Init(pDevice);
|
|
||||||
|
|
||||||
if (pDevice->bUpdateBBVGA) {
|
|
||||||
pDevice->byBBVGACurrent = pDevice->abyBBVGA[0];
|
|
||||||
pDevice->byBBVGANew = pDevice->byBBVGACurrent;
|
|
||||||
BBvSetVGAGainOffset(pDevice, pDevice->abyBBVGA[0]);
|
|
||||||
}
|
|
||||||
BBvSetRxAntennaMode(pDevice->PortOffset, pDevice->byRxAntennaMode);
|
|
||||||
BBvSetTxAntennaMode(pDevice->PortOffset, pDevice->byTxAntennaMode);
|
|
||||||
|
|
||||||
pDevice->byCurrentCh = 0;
|
|
||||||
|
|
||||||
// Set BB and packet type at the same time.
|
|
||||||
// Set Short Slot Time, xIFS, and RSPINF.
|
|
||||||
if (pDevice->uConnectionRate == RATE_AUTO)
|
|
||||||
pDevice->wCurrentRate = RATE_54M;
|
|
||||||
else
|
|
||||||
pDevice->wCurrentRate = (unsigned short)pDevice->uConnectionRate;
|
|
||||||
|
|
||||||
// default G Mode
|
|
||||||
VNTWIFIbConfigPhyMode(pDevice->pMgmt, PHY_TYPE_11G);
|
|
||||||
VNTWIFIbConfigPhyMode(pDevice->pMgmt, PHY_TYPE_AUTO);
|
|
||||||
|
|
||||||
pDevice->bRadioOff = false;
|
|
||||||
|
|
||||||
pDevice->byRadioCtl = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_RADIOCTL);
|
|
||||||
pDevice->bHWRadioOff = false;
|
|
||||||
|
|
||||||
if (pDevice->byRadioCtl & EEP_RADIOCTL_ENABLE) {
|
|
||||||
// Get GPIO
|
|
||||||
MACvGPIOIn(pDevice->PortOffset, &pDevice->byGPIO);
|
|
||||||
//2008-4-14 <add> by chester for led issue
|
|
||||||
if (((pDevice->byGPIO & GPIO0_DATA) && !(pDevice->byRadioCtl & EEP_RADIOCTL_INV)) ||
|
|
||||||
(!(pDevice->byGPIO & GPIO0_DATA) && (pDevice->byRadioCtl & EEP_RADIOCTL_INV))) {
|
|
||||||
pDevice->bHWRadioOff = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO
|
||||||
|
"bDiversityEnable=[%d],NValue=[%d],MValue=[%d],TMax=[%d],TMax2=[%d]\n",
|
||||||
|
pDevice->bDiversityEnable, (int)pDevice->ulDiversityNValue,
|
||||||
|
(int)pDevice->ulDiversityMValue, pDevice->byTMax, pDevice->byTMax2);
|
||||||
|
|
||||||
|
/* zonetype initial */
|
||||||
|
pDevice->byOriginalZonetype = pDevice->abyEEPROM[EEP_OFS_ZONETYPE];
|
||||||
|
zonetype = Config_FileOperation(pDevice, false, NULL);
|
||||||
|
|
||||||
|
if (zonetype >= 0) {
|
||||||
|
if ((zonetype == 0) &&
|
||||||
|
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] != 0x00)) {
|
||||||
|
/* for USA */
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0;
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0B;
|
||||||
|
|
||||||
|
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Init Zone Type :USA\n");
|
||||||
|
} else if ((zonetype == 1) &&
|
||||||
|
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] != 0x01)) {
|
||||||
|
/* for Japan */
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0x01;
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0D;
|
||||||
|
} else if ((zonetype == 2) &&
|
||||||
|
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] != 0x02)) {
|
||||||
|
/* for Europe */
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_ZONETYPE] = 0x02;
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_MAXCHANNEL] = 0x0D;
|
||||||
|
|
||||||
|
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Init Zone Type :Europe\n");
|
||||||
|
} else {
|
||||||
|
if (zonetype != pDevice->abyEEPROM[EEP_OFS_ZONETYPE])
|
||||||
|
pr_debug("zonetype in file[%02x] mismatch with in EEPROM[%02x]\n",
|
||||||
|
zonetype,
|
||||||
|
pDevice->abyEEPROM[EEP_OFS_ZONETYPE]);
|
||||||
|
else
|
||||||
|
pr_debug("Read Zonetype file success,use default zonetype setting[%02x]\n",
|
||||||
|
zonetype);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pr_debug("Read Zonetype file fail,use default zonetype setting[%02x]\n",
|
||||||
|
SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_ZONETYPE));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get RFType */
|
||||||
|
pDevice->byRFType = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_RFTYPE);
|
||||||
|
|
||||||
|
/* force change RevID for VT3253 emu */
|
||||||
|
if ((pDevice->byRFType & RF_EMU) != 0)
|
||||||
|
pDevice->byRevId = 0x80;
|
||||||
|
|
||||||
|
pDevice->byRFType &= RF_MASK;
|
||||||
|
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pDevice->byRFType = %x\n", pDevice->byRFType);
|
||||||
|
|
||||||
|
if (!pDevice->bZoneRegExist)
|
||||||
|
pDevice->byZoneType = pDevice->abyEEPROM[EEP_OFS_ZONETYPE];
|
||||||
|
|
||||||
|
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pDevice->byZoneType = %x\n", pDevice->byZoneType);
|
||||||
|
|
||||||
|
/* Init RF module */
|
||||||
|
RFbInit(pDevice);
|
||||||
|
|
||||||
|
/* Get Desire Power Value */
|
||||||
|
pDevice->byCurPwr = 0xFF;
|
||||||
|
pDevice->byCCKPwr = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_PWR_CCK);
|
||||||
|
pDevice->byOFDMPwrG = SROMbyReadEmbedded(pDevice->PortOffset, EEP_OFS_PWR_OFDMG);
|
||||||
|
|
||||||
|
/* Load power Table */
|
||||||
|
for (ii = 0; ii < CB_MAX_CHANNEL_24G; ii++) {
|
||||||
|
pDevice->abyCCKPwrTbl[ii + 1] =
|
||||||
|
SROMbyReadEmbedded(pDevice->PortOffset,
|
||||||
|
(unsigned char)(ii + EEP_OFS_CCK_PWR_TBL));
|
||||||
|
if (pDevice->abyCCKPwrTbl[ii + 1] == 0)
|
||||||
|
pDevice->abyCCKPwrTbl[ii+1] = pDevice->byCCKPwr;
|
||||||
|
|
||||||
|
pDevice->abyOFDMPwrTbl[ii + 1] =
|
||||||
|
SROMbyReadEmbedded(pDevice->PortOffset,
|
||||||
|
(unsigned char)(ii + EEP_OFS_OFDM_PWR_TBL));
|
||||||
|
if (pDevice->abyOFDMPwrTbl[ii + 1] == 0)
|
||||||
|
pDevice->abyOFDMPwrTbl[ii + 1] = pDevice->byOFDMPwrG;
|
||||||
|
|
||||||
|
pDevice->abyCCKDefaultPwr[ii + 1] = byCCKPwrdBm;
|
||||||
|
pDevice->abyOFDMDefaultPwr[ii + 1] = byOFDMPwrdBm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* recover 12,13 ,14channel for EUROPE by 11 channel */
|
||||||
|
if (((pDevice->abyEEPROM[EEP_OFS_ZONETYPE] == ZoneType_Japan) ||
|
||||||
|
(pDevice->abyEEPROM[EEP_OFS_ZONETYPE] == ZoneType_Europe)) &&
|
||||||
|
(pDevice->byOriginalZonetype == ZoneType_USA)) {
|
||||||
|
for (ii = 11; ii < 14; ii++) {
|
||||||
|
pDevice->abyCCKPwrTbl[ii] = pDevice->abyCCKPwrTbl[10];
|
||||||
|
pDevice->abyOFDMPwrTbl[ii] = pDevice->abyOFDMPwrTbl[10];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Load OFDM A Power Table */
|
||||||
|
for (ii = 0; ii < CB_MAX_CHANNEL_5G; ii++) {
|
||||||
|
pDevice->abyOFDMPwrTbl[ii + CB_MAX_CHANNEL_24G + 1] =
|
||||||
|
SROMbyReadEmbedded(pDevice->PortOffset,
|
||||||
|
(unsigned char)(ii + EEP_OFS_OFDMA_PWR_TBL));
|
||||||
|
|
||||||
|
pDevice->abyOFDMDefaultPwr[ii + CB_MAX_CHANNEL_24G + 1] =
|
||||||
|
SROMbyReadEmbedded(pDevice->PortOffset,
|
||||||
|
(unsigned char)(ii + EEP_OFS_OFDMA_PWR_dBm));
|
||||||
|
}
|
||||||
|
|
||||||
|
init_channel_table((void *)pDevice);
|
||||||
|
|
||||||
|
if (pDevice->byLocalID > REV_ID_VT3253_B1) {
|
||||||
|
MACvSelectPage1(pDevice->PortOffset);
|
||||||
|
|
||||||
|
VNSvOutPortB(pDevice->PortOffset + MAC_REG_MSRCTL + 1,
|
||||||
|
(MSRCTL1_TXPWR | MSRCTL1_CSAPAREN));
|
||||||
|
|
||||||
|
MACvSelectPage0(pDevice->PortOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* use relative tx timeout and 802.11i D4 */
|
||||||
|
MACvWordRegBitsOn(pDevice->PortOffset,
|
||||||
|
MAC_REG_CFG, (CFG_TKIPOPT | CFG_NOTXTIMEOUT));
|
||||||
|
|
||||||
|
/* set performance parameter by registry */
|
||||||
|
MACvSetShortRetryLimit(pDevice->PortOffset, pDevice->byShortRetryLimit);
|
||||||
|
MACvSetLongRetryLimit(pDevice->PortOffset, pDevice->byLongRetryLimit);
|
||||||
|
|
||||||
|
/* reset TSF counter */
|
||||||
|
VNSvOutPortB(pDevice->PortOffset + MAC_REG_TFTCTL, TFTCTL_TSFCNTRST);
|
||||||
|
/* enable TSF counter */
|
||||||
|
VNSvOutPortB(pDevice->PortOffset + MAC_REG_TFTCTL, TFTCTL_TSFCNTREN);
|
||||||
|
|
||||||
|
/* initialize BBP registers */
|
||||||
|
BBbVT3253Init(pDevice);
|
||||||
|
|
||||||
|
if (pDevice->bUpdateBBVGA) {
|
||||||
|
pDevice->byBBVGACurrent = pDevice->abyBBVGA[0];
|
||||||
|
pDevice->byBBVGANew = pDevice->byBBVGACurrent;
|
||||||
|
BBvSetVGAGainOffset(pDevice, pDevice->abyBBVGA[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
BBvSetRxAntennaMode(pDevice->PortOffset, pDevice->byRxAntennaMode);
|
||||||
|
BBvSetTxAntennaMode(pDevice->PortOffset, pDevice->byTxAntennaMode);
|
||||||
|
|
||||||
|
pDevice->byCurrentCh = 0;
|
||||||
|
|
||||||
|
/* Set BB and packet type at the same time. */
|
||||||
|
/* Set Short Slot Time, xIFS, and RSPINF. */
|
||||||
|
if (pDevice->uConnectionRate == RATE_AUTO)
|
||||||
|
pDevice->wCurrentRate = RATE_54M;
|
||||||
|
else
|
||||||
|
pDevice->wCurrentRate = (unsigned short)pDevice->uConnectionRate;
|
||||||
|
|
||||||
|
/* default G Mode */
|
||||||
|
VNTWIFIbConfigPhyMode(pDevice->pMgmt, PHY_TYPE_11G);
|
||||||
|
VNTWIFIbConfigPhyMode(pDevice->pMgmt, PHY_TYPE_AUTO);
|
||||||
|
|
||||||
|
pDevice->bRadioOff = false;
|
||||||
|
|
||||||
|
pDevice->byRadioCtl = SROMbyReadEmbedded(pDevice->PortOffset,
|
||||||
|
EEP_OFS_RADIOCTL);
|
||||||
|
pDevice->bHWRadioOff = false;
|
||||||
|
|
||||||
|
if (pDevice->byRadioCtl & EEP_RADIOCTL_ENABLE) {
|
||||||
|
/* Get GPIO */
|
||||||
|
MACvGPIOIn(pDevice->PortOffset, &pDevice->byGPIO);
|
||||||
|
|
||||||
|
if (((pDevice->byGPIO & GPIO0_DATA) &&
|
||||||
|
!(pDevice->byRadioCtl & EEP_RADIOCTL_INV)) ||
|
||||||
|
(!(pDevice->byGPIO & GPIO0_DATA) &&
|
||||||
|
(pDevice->byRadioCtl & EEP_RADIOCTL_INV)))
|
||||||
|
pDevice->bHWRadioOff = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (pDevice->bHWRadioOff || pDevice->bRadioControlOff)
|
if (pDevice->bHWRadioOff || pDevice->bRadioControlOff)
|
||||||
CARDbRadioPowerOff(pDevice);
|
CARDbRadioPowerOff(pDevice);
|
||||||
}
|
|
||||||
pMgmt->eScanType = WMAC_SCAN_PASSIVE;
|
pMgmt->eScanType = WMAC_SCAN_PASSIVE;
|
||||||
// get Permanent network address
|
// get Permanent network address
|
||||||
SROMvReadEtherAddress(pDevice->PortOffset, pDevice->abyCurrentNetAddr);
|
SROMvReadEtherAddress(pDevice->PortOffset, pDevice->abyCurrentNetAddr);
|
||||||
|
@ -1642,7 +1679,8 @@ static int device_open(struct net_device *dev)
|
||||||
vMgrTimerInit(pDevice);
|
vMgrTimerInit(pDevice);
|
||||||
|
|
||||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "call device_init_registers\n");
|
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "call device_init_registers\n");
|
||||||
device_init_registers(pDevice, DEVICE_INIT_COLD);
|
device_init_registers(pDevice);
|
||||||
|
|
||||||
MACvReadEtherAddress(pDevice->PortOffset, pDevice->abyCurrentNetAddr);
|
MACvReadEtherAddress(pDevice->PortOffset, pDevice->abyCurrentNetAddr);
|
||||||
memcpy(pDevice->pMgmt->abyMACAddr, pDevice->abyCurrentNetAddr, ETH_ALEN);
|
memcpy(pDevice->pMgmt->abyMACAddr, pDevice->abyCurrentNetAddr, ETH_ALEN);
|
||||||
device_set_multi(pDevice->dev);
|
device_set_multi(pDevice->dev);
|
||||||
|
@ -3187,7 +3225,7 @@ viawget_resume(struct pci_dev *pcid)
|
||||||
if (netif_running(pDevice->dev)) {
|
if (netif_running(pDevice->dev)) {
|
||||||
spin_lock_irq(&pDevice->lock);
|
spin_lock_irq(&pDevice->lock);
|
||||||
MACvRestoreContext(pDevice->PortOffset, pDevice->abyMacContext);
|
MACvRestoreContext(pDevice->PortOffset, pDevice->abyMacContext);
|
||||||
device_init_registers(pDevice, DEVICE_INIT_DXPL);
|
device_init_registers(pDevice);
|
||||||
if (pMgmt->sNodeDBTable[0].bActive) { // Assoc with BSS
|
if (pMgmt->sNodeDBTable[0].bActive) { // Assoc with BSS
|
||||||
pMgmt->sNodeDBTable[0].bActive = false;
|
pMgmt->sNodeDBTable[0].bActive = false;
|
||||||
pDevice->bLinkPass = false;
|
pDevice->bLinkPass = false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue