Merge branch 'for-3.19' of git://linux-nfs.org/~bfields/linux
[cascardo/linux.git] / drivers / staging / vt6655 / baseband.c
index de54923..86c72ba 100644 (file)
  *      BBvCaculateParameter   - Caculate PhyLength, PhyService and Phy Signal parameter for baseband Tx
  *      BBbReadEmbedded         - Embedded read baseband register via MAC
  *      BBbWriteEmbedded        - Embedded write baseband register via MAC
- *      BBbIsRegBitsOn         - Test if baseband register bits on
- *      BBbIsRegBitsOff        - Test if baseband register bits off
  *      BBbVT3253Init          - VIA VT3253 baseband chip init code
- *      BBvReadAllRegs         - Read All Baseband Registers
- *      BBvLoopbackOn          - Turn on BaseBand Loopback mode
- *      BBvLoopbackOff         - Turn off BaseBand Loopback mode
  *
  * Revision History:
  *      06-10-2003 Bryan YC Fan:  Re-write codes to support VT3253 spec.
@@ -50,7 +45,6 @@
  */
 
 #include "tmacro.h"
-#include "tether.h"
 #include "mac.h"
 #include "baseband.h"
 #include "srom.h"
@@ -1708,39 +1702,39 @@ static const unsigned short awcFrameTime[MAX_RATE] = {
 
 static
 unsigned long
-s_ulGetRatio(struct vnt_private *pDevice);
+s_ulGetRatio(struct vnt_private *priv);
 
 static
 void
 s_vChangeAntenna(
-       struct vnt_private *pDevice
+       struct vnt_private *priv
 );
 
 static
 void
 s_vChangeAntenna(
-       struct vnt_private *pDevice
+       struct vnt_private *priv
 )
 {
-       if (pDevice->dwRxAntennaSel == 0) {
-               pDevice->dwRxAntennaSel = 1;
-               if (pDevice->bTxRxAntInv == true)
-                       BBvSetRxAntennaMode(pDevice->PortOffset, ANT_A);
+       if (priv->dwRxAntennaSel == 0) {
+               priv->dwRxAntennaSel = 1;
+               if (priv->bTxRxAntInv == true)
+                       BBvSetRxAntennaMode(priv, ANT_A);
                else
-                       BBvSetRxAntennaMode(pDevice->PortOffset, ANT_B);
+                       BBvSetRxAntennaMode(priv, ANT_B);
        } else {
-               pDevice->dwRxAntennaSel = 0;
-               if (pDevice->bTxRxAntInv == true)
-                       BBvSetRxAntennaMode(pDevice->PortOffset, ANT_B);
+               priv->dwRxAntennaSel = 0;
+               if (priv->bTxRxAntInv == true)
+                       BBvSetRxAntennaMode(priv, ANT_B);
                else
-                       BBvSetRxAntennaMode(pDevice->PortOffset, ANT_A);
+                       BBvSetRxAntennaMode(priv, ANT_A);
        }
-       if (pDevice->dwTxAntennaSel == 0) {
-               pDevice->dwTxAntennaSel = 1;
-               BBvSetTxAntennaMode(pDevice->PortOffset, ANT_B);
+       if (priv->dwTxAntennaSel == 0) {
+               priv->dwTxAntennaSel = 1;
+               BBvSetTxAntennaMode(priv, ANT_B);
        } else {
-               pDevice->dwTxAntennaSel = 0;
-               BBvSetTxAntennaMode(pDevice->PortOffset, ANT_A);
+               priv->dwTxAntennaSel = 0;
+               BBvSetTxAntennaMode(priv, ANT_A);
        }
 }
 
@@ -1792,18 +1786,17 @@ BBuGetFrameTime(
                        uFrameTime++;
 
                return uPreamble + uFrameTime;
-       } else {
-               uFrameTime = (cbFrameLength * 8 + 22) / uRate; /* ???????? */
-               uTmp = ((uFrameTime * uRate) - 22) / 8;
-               if (cbFrameLength != uTmp)
-                       uFrameTime++;
+       }
+       uFrameTime = (cbFrameLength * 8 + 22) / uRate; /* ???????? */
+       uTmp = ((uFrameTime * uRate) - 22) / 8;
+       if (cbFrameLength != uTmp)
+               uFrameTime++;
 
-               uFrameTime = uFrameTime * 4;    /* ??????? */
-               if (byPktType != PK_TYPE_11A)
-                       uFrameTime += 6;     /* ?????? */
+       uFrameTime = uFrameTime * 4;    /* ??????? */
+       if (byPktType != PK_TYPE_11A)
+               uFrameTime += 6;     /* ?????? */
 
-               return 20 + uFrameTime; /* ?????? */
-       }
+       return 20 + uFrameTime; /* ?????? */
 }
 
 /*
@@ -1968,8 +1961,10 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
  * Return Value: true if succeeded; false if failed.
  *
  */
-bool BBbReadEmbedded(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned char *pbyData)
+bool BBbReadEmbedded(struct vnt_private *priv,
+                    unsigned char byBBAddr, unsigned char *pbyData)
 {
+       void __iomem *dwIoBase = priv->PortOffset;
        unsigned short ww;
        unsigned char byValue;
 
@@ -2010,8 +2005,10 @@ bool BBbReadEmbedded(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned ch
  * Return Value: true if succeeded; false if failed.
  *
  */
-bool BBbWriteEmbedded(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned char byData)
+bool BBbWriteEmbedded(struct vnt_private *priv,
+                     unsigned char byBBAddr, unsigned char byData)
 {
+       void __iomem *dwIoBase = priv->PortOffset;
        unsigned short ww;
        unsigned char byValue;
 
@@ -2037,50 +2034,6 @@ bool BBbWriteEmbedded(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned c
        return true;
 }
 
-/*
- * Description: Test if all bits are set for the Baseband register
- *
- * Parameters:
- *  In:
- *      dwIoBase    - I/O base address
- *      byBBAddr    - address of register in Baseband
- *      byTestBits  - TestBits
- *  Out:
- *      none
- *
- * Return Value: true if all TestBits are set; false otherwise.
- *
- */
-bool BBbIsRegBitsOn(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned char byTestBits)
-{
-       unsigned char byOrgData;
-
-       BBbReadEmbedded(dwIoBase, byBBAddr, &byOrgData);
-       return (byOrgData & byTestBits) == byTestBits;
-}
-
-/*
- * Description: Test if all bits are clear for the Baseband register
- *
- * Parameters:
- *  In:
- *      dwIoBase    - I/O base address
- *      byBBAddr    - address of register in Baseband
- *      byTestBits  - TestBits
- *  Out:
- *      none
- *
- * Return Value: true if all TestBits are clear; false otherwise.
- *
- */
-bool BBbIsRegBitsOff(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned char byTestBits)
-{
-       unsigned char byOrgData;
-
-       BBbReadEmbedded(dwIoBase, byBBAddr, &byOrgData);
-       return (byOrgData & byTestBits) == 0;
-}
-
 /*
  * Description: VIA VT3253 Baseband chip init function
  *
@@ -2096,126 +2049,126 @@ bool BBbIsRegBitsOff(void __iomem *dwIoBase, unsigned char byBBAddr, unsigned ch
  *
  */
 
-bool BBbVT3253Init(struct vnt_private *pDevice)
+bool BBbVT3253Init(struct vnt_private *priv)
 {
        bool bResult = true;
        int        ii;
-       void __iomem *dwIoBase = pDevice->PortOffset;
-       unsigned char byRFType = pDevice->byRFType;
-       unsigned char byLocalID = pDevice->byLocalID;
+       void __iomem *dwIoBase = priv->PortOffset;
+       unsigned char byRFType = priv->byRFType;
+       unsigned char byLocalID = priv->byLocalID;
 
        if (byRFType == RF_RFMD2959) {
                if (byLocalID <= REV_ID_VT3253_A1) {
                        for (ii = 0; ii < CB_VT3253_INIT_FOR_RFMD; ii++)
-                               bResult &= BBbWriteEmbedded(dwIoBase, byVT3253InitTab_RFMD[ii][0], byVT3253InitTab_RFMD[ii][1]);
+                               bResult &= BBbWriteEmbedded(priv, byVT3253InitTab_RFMD[ii][0], byVT3253InitTab_RFMD[ii][1]);
 
                } else {
                        for (ii = 0; ii < CB_VT3253B0_INIT_FOR_RFMD; ii++)
-                               bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_RFMD[ii][0], byVT3253B0_RFMD[ii][1]);
+                               bResult &= BBbWriteEmbedded(priv, byVT3253B0_RFMD[ii][0], byVT3253B0_RFMD[ii][1]);
 
                        for (ii = 0; ii < CB_VT3253B0_AGC_FOR_RFMD2959; ii++)
-                               bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AGC4_RFMD2959[ii][0], byVT3253B0_AGC4_RFMD2959[ii][1]);
+                               bResult &= BBbWriteEmbedded(priv, byVT3253B0_AGC4_RFMD2959[ii][0], byVT3253B0_AGC4_RFMD2959[ii][1]);
 
                        VNSvOutPortD(dwIoBase + MAC_REG_ITRTMSET, 0x23);
-                       MACvRegBitsOn(dwIoBase, MAC_REG_PAPEDELAY, BIT0);
+                       MACvRegBitsOn(dwIoBase, MAC_REG_PAPEDELAY, BIT(0));
                }
-               pDevice->abyBBVGA[0] = 0x18;
-               pDevice->abyBBVGA[1] = 0x0A;
-               pDevice->abyBBVGA[2] = 0x0;
-               pDevice->abyBBVGA[3] = 0x0;
-               pDevice->ldBmThreshold[0] = -70;
-               pDevice->ldBmThreshold[1] = -50;
-               pDevice->ldBmThreshold[2] = 0;
-               pDevice->ldBmThreshold[3] = 0;
+               priv->abyBBVGA[0] = 0x18;
+               priv->abyBBVGA[1] = 0x0A;
+               priv->abyBBVGA[2] = 0x0;
+               priv->abyBBVGA[3] = 0x0;
+               priv->ldBmThreshold[0] = -70;
+               priv->ldBmThreshold[1] = -50;
+               priv->ldBmThreshold[2] = 0;
+               priv->ldBmThreshold[3] = 0;
        } else if ((byRFType == RF_AIROHA) || (byRFType == RF_AL2230S)) {
                for (ii = 0; ii < CB_VT3253B0_INIT_FOR_AIROHA2230; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AIROHA2230[ii][0], byVT3253B0_AIROHA2230[ii][1]);
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AIROHA2230[ii][0], byVT3253B0_AIROHA2230[ii][1]);
 
                for (ii = 0; ii < CB_VT3253B0_AGC; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
-
-               pDevice->abyBBVGA[0] = 0x1C;
-               pDevice->abyBBVGA[1] = 0x10;
-               pDevice->abyBBVGA[2] = 0x0;
-               pDevice->abyBBVGA[3] = 0x0;
-               pDevice->ldBmThreshold[0] = -70;
-               pDevice->ldBmThreshold[1] = -48;
-               pDevice->ldBmThreshold[2] = 0;
-               pDevice->ldBmThreshold[3] = 0;
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
+
+               priv->abyBBVGA[0] = 0x1C;
+               priv->abyBBVGA[1] = 0x10;
+               priv->abyBBVGA[2] = 0x0;
+               priv->abyBBVGA[3] = 0x0;
+               priv->ldBmThreshold[0] = -70;
+               priv->ldBmThreshold[1] = -48;
+               priv->ldBmThreshold[2] = 0;
+               priv->ldBmThreshold[3] = 0;
        } else if (byRFType == RF_UW2451) {
                for (ii = 0; ii < CB_VT3253B0_INIT_FOR_UW2451; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_UW2451[ii][0], byVT3253B0_UW2451[ii][1]);
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_UW2451[ii][0], byVT3253B0_UW2451[ii][1]);
 
                for (ii = 0; ii < CB_VT3253B0_AGC; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
 
                VNSvOutPortB(dwIoBase + MAC_REG_ITRTMSET, 0x23);
-               MACvRegBitsOn(dwIoBase, MAC_REG_PAPEDELAY, BIT0);
-
-               pDevice->abyBBVGA[0] = 0x14;
-               pDevice->abyBBVGA[1] = 0x0A;
-               pDevice->abyBBVGA[2] = 0x0;
-               pDevice->abyBBVGA[3] = 0x0;
-               pDevice->ldBmThreshold[0] = -60;
-               pDevice->ldBmThreshold[1] = -50;
-               pDevice->ldBmThreshold[2] = 0;
-               pDevice->ldBmThreshold[3] = 0;
+               MACvRegBitsOn(dwIoBase, MAC_REG_PAPEDELAY, BIT(0));
+
+               priv->abyBBVGA[0] = 0x14;
+               priv->abyBBVGA[1] = 0x0A;
+               priv->abyBBVGA[2] = 0x0;
+               priv->abyBBVGA[3] = 0x0;
+               priv->ldBmThreshold[0] = -60;
+               priv->ldBmThreshold[1] = -50;
+               priv->ldBmThreshold[2] = 0;
+               priv->ldBmThreshold[3] = 0;
        } else if (byRFType == RF_UW2452) {
                for (ii = 0; ii < CB_VT3253B0_INIT_FOR_UW2451; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_UW2451[ii][0], byVT3253B0_UW2451[ii][1]);
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_UW2451[ii][0], byVT3253B0_UW2451[ii][1]);
 
                /* Init ANT B select,TX Config CR09 = 0x61->0x45, 0x45->0x41(VC1/VC2 define, make the ANT_A, ANT_B inverted) */
                /*bResult &= BBbWriteEmbedded(dwIoBase,0x09,0x41);*/
                /* Init ANT B select,RX Config CR10 = 0x28->0x2A, 0x2A->0x28(VC1/VC2 define, make the ANT_A, ANT_B inverted) */
                /*bResult &= BBbWriteEmbedded(dwIoBase,0x0a,0x28);*/
                /* Select VC1/VC2, CR215 = 0x02->0x06 */
-               bResult &= BBbWriteEmbedded(dwIoBase, 0xd7, 0x06);
+               bResult &= BBbWriteEmbedded(priv, 0xd7, 0x06);
 
                /* {{RobertYu:20050125, request by Jack */
-               bResult &= BBbWriteEmbedded(dwIoBase, 0x90, 0x20);
-               bResult &= BBbWriteEmbedded(dwIoBase, 0x97, 0xeb);
+               bResult &= BBbWriteEmbedded(priv, 0x90, 0x20);
+               bResult &= BBbWriteEmbedded(priv, 0x97, 0xeb);
                /* }} */
 
                /* {{RobertYu:20050221, request by Jack */
-               bResult &= BBbWriteEmbedded(dwIoBase, 0xa6, 0x00);
-               bResult &= BBbWriteEmbedded(dwIoBase, 0xa8, 0x30);
+               bResult &= BBbWriteEmbedded(priv, 0xa6, 0x00);
+               bResult &= BBbWriteEmbedded(priv, 0xa8, 0x30);
                /* }} */
-               bResult &= BBbWriteEmbedded(dwIoBase, 0xb0, 0x58);
+               bResult &= BBbWriteEmbedded(priv, 0xb0, 0x58);
 
                for (ii = 0; ii < CB_VT3253B0_AGC; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
-
-               pDevice->abyBBVGA[0] = 0x14;
-               pDevice->abyBBVGA[1] = 0x0A;
-               pDevice->abyBBVGA[2] = 0x0;
-               pDevice->abyBBVGA[3] = 0x0;
-               pDevice->ldBmThreshold[0] = -60;
-               pDevice->ldBmThreshold[1] = -50;
-               pDevice->ldBmThreshold[2] = 0;
-               pDevice->ldBmThreshold[3] = 0;
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
+
+               priv->abyBBVGA[0] = 0x14;
+               priv->abyBBVGA[1] = 0x0A;
+               priv->abyBBVGA[2] = 0x0;
+               priv->abyBBVGA[3] = 0x0;
+               priv->ldBmThreshold[0] = -60;
+               priv->ldBmThreshold[1] = -50;
+               priv->ldBmThreshold[2] = 0;
+               priv->ldBmThreshold[3] = 0;
                /* }} RobertYu */
 
        } else if (byRFType == RF_VT3226) {
                for (ii = 0; ii < CB_VT3253B0_INIT_FOR_AIROHA2230; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AIROHA2230[ii][0], byVT3253B0_AIROHA2230[ii][1]);
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AIROHA2230[ii][0], byVT3253B0_AIROHA2230[ii][1]);
 
                for (ii = 0; ii < CB_VT3253B0_AGC; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
-
-               pDevice->abyBBVGA[0] = 0x1C;
-               pDevice->abyBBVGA[1] = 0x10;
-               pDevice->abyBBVGA[2] = 0x0;
-               pDevice->abyBBVGA[3] = 0x0;
-               pDevice->ldBmThreshold[0] = -70;
-               pDevice->ldBmThreshold[1] = -48;
-               pDevice->ldBmThreshold[2] = 0;
-               pDevice->ldBmThreshold[3] = 0;
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
+
+               priv->abyBBVGA[0] = 0x1C;
+               priv->abyBBVGA[1] = 0x10;
+               priv->abyBBVGA[2] = 0x0;
+               priv->abyBBVGA[3] = 0x0;
+               priv->ldBmThreshold[0] = -70;
+               priv->ldBmThreshold[1] = -48;
+               priv->ldBmThreshold[2] = 0;
+               priv->ldBmThreshold[3] = 0;
                /* Fix VT3226 DFC system timing issue */
                MACvSetRFLE_LatchBase(dwIoBase);
                /* {{ RobertYu: 20050104 */
        } else if (byRFType == RF_AIROHA7230) {
                for (ii = 0; ii < CB_VT3253B0_INIT_FOR_AIROHA2230; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AIROHA2230[ii][0], byVT3253B0_AIROHA2230[ii][1]);
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AIROHA2230[ii][0], byVT3253B0_AIROHA2230[ii][1]);
 
 
                /* {{ RobertYu:20050223, request by JerryChung */
@@ -2228,150 +2181,37 @@ bool BBbVT3253Init(struct vnt_private *pDevice)
                /* }} */
 
                for (ii = 0; ii < CB_VT3253B0_AGC; ii++)
-                       bResult &= BBbWriteEmbedded(dwIoBase, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
-
-               pDevice->abyBBVGA[0] = 0x1C;
-               pDevice->abyBBVGA[1] = 0x10;
-               pDevice->abyBBVGA[2] = 0x0;
-               pDevice->abyBBVGA[3] = 0x0;
-               pDevice->ldBmThreshold[0] = -70;
-               pDevice->ldBmThreshold[1] = -48;
-               pDevice->ldBmThreshold[2] = 0;
-               pDevice->ldBmThreshold[3] = 0;
+                       bResult &= BBbWriteEmbedded(priv, byVT3253B0_AGC[ii][0], byVT3253B0_AGC[ii][1]);
+
+               priv->abyBBVGA[0] = 0x1C;
+               priv->abyBBVGA[1] = 0x10;
+               priv->abyBBVGA[2] = 0x0;
+               priv->abyBBVGA[3] = 0x0;
+               priv->ldBmThreshold[0] = -70;
+               priv->ldBmThreshold[1] = -48;
+               priv->ldBmThreshold[2] = 0;
+               priv->ldBmThreshold[3] = 0;
                /* }} RobertYu */
        } else {
                /* No VGA Table now */
-               pDevice->bUpdateBBVGA = false;
-               pDevice->abyBBVGA[0] = 0x1C;
+               priv->bUpdateBBVGA = false;
+               priv->abyBBVGA[0] = 0x1C;
        }
 
        if (byLocalID > REV_ID_VT3253_A1) {
-               BBbWriteEmbedded(dwIoBase, 0x04, 0x7F);
-               BBbWriteEmbedded(dwIoBase, 0x0D, 0x01);
+               BBbWriteEmbedded(priv, 0x04, 0x7F);
+               BBbWriteEmbedded(priv, 0x0D, 0x01);
        }
 
        return bResult;
 }
 
-/*
- * Description: Read All Baseband Registers
- *
- * Parameters:
- *  In:
- *      dwIoBase    - I/O base address
- *      pbyBBRegs   - Point to struct that stores Baseband Registers
- *  Out:
- *      none
- *
- * Return Value: none
- *
- */
-void BBvReadAllRegs(void __iomem *dwIoBase, unsigned char *pbyBBRegs)
-{
-       int  ii;
-       unsigned char byBase = 1;
-
-       for (ii = 0; ii < BB_MAX_CONTEXT_SIZE; ii++) {
-               BBbReadEmbedded(dwIoBase, (unsigned char)(ii*byBase), pbyBBRegs);
-               pbyBBRegs += byBase;
-       }
-}
-
-/*
- * Description: Turn on BaseBand Loopback mode
- *
- * Parameters:
- *  In:
- *      dwIoBase    - I/O base address
- *      bCCK        - If CCK is set
- *  Out:
- *      none
- *
- * Return Value: none
- *
- */
-
-void BBvLoopbackOn(struct vnt_private *pDevice)
-{
-       unsigned char byData;
-       void __iomem *dwIoBase = pDevice->PortOffset;
-
-       /* CR C9 = 0x00 */
-       BBbReadEmbedded(dwIoBase, 0xC9, &pDevice->byBBCRc9); /* CR201 */
-       BBbWriteEmbedded(dwIoBase, 0xC9, 0);
-       BBbReadEmbedded(dwIoBase, 0x4D, &pDevice->byBBCR4d); /* CR77 */
-       BBbWriteEmbedded(dwIoBase, 0x4D, 0x90);
-
-       /* CR 88 = 0x02(CCK), 0x03(OFDM) */
-       BBbReadEmbedded(dwIoBase, 0x88, &pDevice->byBBCR88); /* CR136 */
-
-       if (pDevice->uConnectionRate <= RATE_11M) { /* CCK */
-               /* Enable internal digital loopback: CR33 |= 0000 0001 */
-               BBbReadEmbedded(dwIoBase, 0x21, &byData); /* CR33 */
-               BBbWriteEmbedded(dwIoBase, 0x21, (unsigned char)(byData | 0x01)); /* CR33 */
-               /* CR154 = 0x00 */
-               BBbWriteEmbedded(dwIoBase, 0x9A, 0);    /* CR154 */
-
-               BBbWriteEmbedded(dwIoBase, 0x88, 0x02); /* CR239 */
-       } else { /* OFDM */
-               /* Enable internal digital loopback:CR154 |= 0000 0001 */
-               BBbReadEmbedded(dwIoBase, 0x9A, &byData); /* CR154 */
-               BBbWriteEmbedded(dwIoBase, 0x9A, (unsigned char)(byData | 0x01)); /* CR154 */
-               /* CR33 = 0x00 */
-               BBbWriteEmbedded(dwIoBase, 0x21, 0);    /* CR33 */
-
-               BBbWriteEmbedded(dwIoBase, 0x88, 0x03); /* CR239 */
-       }
-
-       /* CR14 = 0x00 */
-       BBbWriteEmbedded(dwIoBase, 0x0E, 0); /* CR14 */
-
-       /* Disable TX_IQUN */
-       BBbReadEmbedded(pDevice->PortOffset, 0x09, &pDevice->byBBCR09);
-       BBbWriteEmbedded(pDevice->PortOffset, 0x09, (unsigned char)(pDevice->byBBCR09 & 0xDE));
-}
-
-/*
- * Description: Turn off BaseBand Loopback mode
- *
- * Parameters:
- *  In:
- *      pDevice         - Device Structure
- *
- *  Out:
- *      none
- *
- * Return Value: none
- *
- */
-void BBvLoopbackOff(struct vnt_private *pDevice)
-{
-       unsigned char byData;
-       void __iomem *dwIoBase = pDevice->PortOffset;
-
-       BBbWriteEmbedded(dwIoBase, 0xC9, pDevice->byBBCRc9); /* CR201 */
-       BBbWriteEmbedded(dwIoBase, 0x88, pDevice->byBBCR88); /* CR136 */
-       BBbWriteEmbedded(dwIoBase, 0x09, pDevice->byBBCR09); /* CR136 */
-       BBbWriteEmbedded(dwIoBase, 0x4D, pDevice->byBBCR4d); /* CR77  */
-
-       if (pDevice->uConnectionRate <= RATE_11M) { /* CCK */
-               /* Set the CR33 Bit2 to disable internal Loopback. */
-               BBbReadEmbedded(dwIoBase, 0x21, &byData);/* CR33 */
-               BBbWriteEmbedded(dwIoBase, 0x21, (unsigned char)(byData & 0xFE)); /* CR33 */
-       } else { /* OFDM */
-               BBbReadEmbedded(dwIoBase, 0x9A, &byData); /* CR154 */
-               BBbWriteEmbedded(dwIoBase, 0x9A, (unsigned char)(byData & 0xFE)); /* CR154 */
-       }
-       BBbReadEmbedded(dwIoBase, 0x0E, &byData); /* CR14 */
-       BBbWriteEmbedded(dwIoBase, 0x0E, (unsigned char)(byData | 0x80)); /* CR14 */
-}
-
 /*
  * Description: Set ShortSlotTime mode
  *
  * Parameters:
  *  In:
- *      pDevice     - Device Structure
+ *      priv     - Device Structure
  *  Out:
  *      none
  *
@@ -2379,42 +2219,42 @@ void BBvLoopbackOff(struct vnt_private *pDevice)
  *
  */
 void
-BBvSetShortSlotTime(struct vnt_private *pDevice)
+BBvSetShortSlotTime(struct vnt_private *priv)
 {
        unsigned char byBBRxConf = 0;
        unsigned char byBBVGA = 0;
 
-       BBbReadEmbedded(pDevice->PortOffset, 0x0A, &byBBRxConf); /* CR10 */
+       BBbReadEmbedded(priv, 0x0A, &byBBRxConf); /* CR10 */
 
-       if (pDevice->bShortSlotTime)
+       if (priv->bShortSlotTime)
                byBBRxConf &= 0xDF; /* 1101 1111 */
        else
                byBBRxConf |= 0x20; /* 0010 0000 */
 
        /* patch for 3253B0 Baseband with Cardbus module */
-       BBbReadEmbedded(pDevice->PortOffset, 0xE7, &byBBVGA);
-       if (byBBVGA == pDevice->abyBBVGA[0])
+       BBbReadEmbedded(priv, 0xE7, &byBBVGA);
+       if (byBBVGA == priv->abyBBVGA[0])
                byBBRxConf |= 0x20; /* 0010 0000 */
 
-       BBbWriteEmbedded(pDevice->PortOffset, 0x0A, byBBRxConf); /* CR10 */
+       BBbWriteEmbedded(priv, 0x0A, byBBRxConf); /* CR10 */
 }
 
-void BBvSetVGAGainOffset(struct vnt_private *pDevice, unsigned char byData)
+void BBvSetVGAGainOffset(struct vnt_private *priv, unsigned char byData)
 {
        unsigned char byBBRxConf = 0;
 
-       BBbWriteEmbedded(pDevice->PortOffset, 0xE7, byData);
+       BBbWriteEmbedded(priv, 0xE7, byData);
 
-       BBbReadEmbedded(pDevice->PortOffset, 0x0A, &byBBRxConf); /* CR10 */
+       BBbReadEmbedded(priv, 0x0A, &byBBRxConf); /* CR10 */
        /* patch for 3253B0 Baseband with Cardbus module */
-       if (byData == pDevice->abyBBVGA[0])
+       if (byData == priv->abyBBVGA[0])
                byBBRxConf |= 0x20; /* 0010 0000 */
-       else if (pDevice->bShortSlotTime)
+       else if (priv->bShortSlotTime)
                byBBRxConf &= 0xDF; /* 1101 1111 */
        else
                byBBRxConf |= 0x20; /* 0010 0000 */
-       pDevice->byBBVGACurrent = byData;
-       BBbWriteEmbedded(pDevice->PortOffset, 0x0A, byBBRxConf); /* CR10 */
+       priv->byBBVGACurrent = byData;
+       BBbWriteEmbedded(priv, 0x0A, byBBRxConf); /* CR10 */
 }
 
 /*
@@ -2430,12 +2270,12 @@ void BBvSetVGAGainOffset(struct vnt_private *pDevice, unsigned char byData)
  *
  */
 void
-BBvSoftwareReset(void __iomem *dwIoBase)
+BBvSoftwareReset(struct vnt_private *priv)
 {
-       BBbWriteEmbedded(dwIoBase, 0x50, 0x40);
-       BBbWriteEmbedded(dwIoBase, 0x50, 0);
-       BBbWriteEmbedded(dwIoBase, 0x9C, 0x01);
-       BBbWriteEmbedded(dwIoBase, 0x9C, 0);
+       BBbWriteEmbedded(priv, 0x50, 0x40);
+       BBbWriteEmbedded(priv, 0x50, 0);
+       BBbWriteEmbedded(priv, 0x9C, 0x01);
+       BBbWriteEmbedded(priv, 0x9C, 0);
 }
 
 /*
@@ -2451,13 +2291,13 @@ BBvSoftwareReset(void __iomem *dwIoBase)
  *
  */
 void
-BBvPowerSaveModeON(void __iomem *dwIoBase)
+BBvPowerSaveModeON(struct vnt_private *priv)
 {
        unsigned char byOrgData;
 
-       BBbReadEmbedded(dwIoBase, 0x0D, &byOrgData);
-       byOrgData |= BIT0;
-       BBbWriteEmbedded(dwIoBase, 0x0D, byOrgData);
+       BBbReadEmbedded(priv, 0x0D, &byOrgData);
+       byOrgData |= BIT(0);
+       BBbWriteEmbedded(priv, 0x0D, byOrgData);
 }
 
 /*
@@ -2473,13 +2313,13 @@ BBvPowerSaveModeON(void __iomem *dwIoBase)
  *
  */
 void
-BBvPowerSaveModeOFF(void __iomem *dwIoBase)
+BBvPowerSaveModeOFF(struct vnt_private *priv)
 {
        unsigned char byOrgData;
 
-       BBbReadEmbedded(dwIoBase, 0x0D, &byOrgData);
-       byOrgData &= ~(BIT0);
-       BBbWriteEmbedded(dwIoBase, 0x0D, byOrgData);
+       BBbReadEmbedded(priv, 0x0D, &byOrgData);
+       byOrgData &= ~(BIT(0));
+       BBbWriteEmbedded(priv, 0x0D, byOrgData);
 }
 
 /*
@@ -2487,7 +2327,7 @@ BBvPowerSaveModeOFF(void __iomem *dwIoBase)
  *
  * Parameters:
  *  In:
- *      pDevice          - Device Structure
+ *      priv          - Device Structure
  *      byAntennaMode    - Antenna Mode
  *  Out:
  *      none
@@ -2497,11 +2337,11 @@ BBvPowerSaveModeOFF(void __iomem *dwIoBase)
  */
 
 void
-BBvSetTxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
+BBvSetTxAntennaMode(struct vnt_private *priv, unsigned char byAntennaMode)
 {
        unsigned char byBBTxConf;
 
-       BBbReadEmbedded(dwIoBase, 0x09, &byBBTxConf); /* CR09 */
+       BBbReadEmbedded(priv, 0x09, &byBBTxConf); /* CR09 */
        if (byAntennaMode == ANT_DIVERSITY) {
                /* bit 1 is diversity */
                byBBTxConf |= 0x02;
@@ -2512,7 +2352,7 @@ BBvSetTxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
                byBBTxConf &= 0xFD; /* 1111 1101 */
                byBBTxConf |= 0x04;
        }
-       BBbWriteEmbedded(dwIoBase, 0x09, byBBTxConf); /* CR09 */
+       BBbWriteEmbedded(priv, 0x09, byBBTxConf); /* CR09 */
 }
 
 /*
@@ -2520,7 +2360,7 @@ BBvSetTxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
  *
  * Parameters:
  *  In:
- *      pDevice          - Device Structure
+ *      priv          - Device Structure
  *      byAntennaMode    - Antenna Mode
  *  Out:
  *      none
@@ -2530,11 +2370,11 @@ BBvSetTxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
  */
 
 void
-BBvSetRxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
+BBvSetRxAntennaMode(struct vnt_private *priv, unsigned char byAntennaMode)
 {
        unsigned char byBBRxConf;
 
-       BBbReadEmbedded(dwIoBase, 0x0A, &byBBRxConf); /* CR10 */
+       BBbReadEmbedded(priv, 0x0A, &byBBRxConf); /* CR10 */
        if (byAntennaMode == ANT_DIVERSITY) {
                byBBRxConf |= 0x01;
 
@@ -2544,7 +2384,7 @@ BBvSetRxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
                byBBRxConf &= 0xFE; /* 1111 1110 */
                byBBRxConf |= 0x02;
        }
-       BBbWriteEmbedded(dwIoBase, 0x0A, byBBRxConf); /* CR10 */
+       BBbWriteEmbedded(priv, 0x0A, byBBRxConf); /* CR10 */
 }
 
 /*
@@ -2552,7 +2392,7 @@ BBvSetRxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
  *
  * Parameters:
  *  In:
- *      pDevice          - Device Structure
+ *      priv          - Device Structure
  *  Out:
  *      none
  *
@@ -2560,109 +2400,109 @@ BBvSetRxAntennaMode(void __iomem *dwIoBase, unsigned char byAntennaMode)
  *
  */
 void
-BBvSetDeepSleep(void __iomem *dwIoBase, unsigned char byLocalID)
+BBvSetDeepSleep(struct vnt_private *priv, unsigned char byLocalID)
 {
-       BBbWriteEmbedded(dwIoBase, 0x0C, 0x17); /* CR12 */
-       BBbWriteEmbedded(dwIoBase, 0x0D, 0xB9); /* CR13 */
+       BBbWriteEmbedded(priv, 0x0C, 0x17); /* CR12 */
+       BBbWriteEmbedded(priv, 0x0D, 0xB9); /* CR13 */
 }
 
 void
-BBvExitDeepSleep(void __iomem *dwIoBase, unsigned char byLocalID)
+BBvExitDeepSleep(struct vnt_private *priv, unsigned char byLocalID)
 {
-       BBbWriteEmbedded(dwIoBase, 0x0C, 0x00); /* CR12 */
-       BBbWriteEmbedded(dwIoBase, 0x0D, 0x01); /* CR13 */
+       BBbWriteEmbedded(priv, 0x0C, 0x00); /* CR12 */
+       BBbWriteEmbedded(priv, 0x0D, 0x01); /* CR13 */
 }
 
 static
 unsigned long
-s_ulGetRatio(struct vnt_private *pDevice)
+s_ulGetRatio(struct vnt_private *priv)
 {
        unsigned long ulRatio = 0;
        unsigned long ulMaxPacket;
        unsigned long ulPacketNum;
 
        /* This is a thousand-ratio */
-       ulMaxPacket = pDevice->uNumSQ3[RATE_54M];
-       if (pDevice->uNumSQ3[RATE_54M] != 0) {
-               ulPacketNum = pDevice->uNumSQ3[RATE_54M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       ulMaxPacket = priv->uNumSQ3[RATE_54M];
+       if (priv->uNumSQ3[RATE_54M] != 0) {
+               ulPacketNum = priv->uNumSQ3[RATE_54M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_54M;
        }
-       if (pDevice->uNumSQ3[RATE_48M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_48M] > ulMaxPacket) {
+               ulPacketNum = priv->uNumSQ3[RATE_54M] + priv->uNumSQ3[RATE_48M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_48M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_48M];
+               ulMaxPacket = priv->uNumSQ3[RATE_48M];
        }
-       if (pDevice->uNumSQ3[RATE_36M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
-                       pDevice->uNumSQ3[RATE_36M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_36M] > ulMaxPacket) {
+               ulPacketNum = priv->uNumSQ3[RATE_54M] + priv->uNumSQ3[RATE_48M] +
+                       priv->uNumSQ3[RATE_36M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_36M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_36M];
+               ulMaxPacket = priv->uNumSQ3[RATE_36M];
        }
-       if (pDevice->uNumSQ3[RATE_24M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
-                       pDevice->uNumSQ3[RATE_36M] + pDevice->uNumSQ3[RATE_24M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_24M] > ulMaxPacket) {
+               ulPacketNum = priv->uNumSQ3[RATE_54M] + priv->uNumSQ3[RATE_48M] +
+                       priv->uNumSQ3[RATE_36M] + priv->uNumSQ3[RATE_24M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_24M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_24M];
+               ulMaxPacket = priv->uNumSQ3[RATE_24M];
        }
-       if (pDevice->uNumSQ3[RATE_18M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
-                       pDevice->uNumSQ3[RATE_36M] + pDevice->uNumSQ3[RATE_24M] +
-                       pDevice->uNumSQ3[RATE_18M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_18M] > ulMaxPacket) {
+               ulPacketNum = priv->uNumSQ3[RATE_54M] + priv->uNumSQ3[RATE_48M] +
+                       priv->uNumSQ3[RATE_36M] + priv->uNumSQ3[RATE_24M] +
+                       priv->uNumSQ3[RATE_18M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_18M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_18M];
+               ulMaxPacket = priv->uNumSQ3[RATE_18M];
        }
-       if (pDevice->uNumSQ3[RATE_12M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uNumSQ3[RATE_54M] + pDevice->uNumSQ3[RATE_48M] +
-                       pDevice->uNumSQ3[RATE_36M] + pDevice->uNumSQ3[RATE_24M] +
-                       pDevice->uNumSQ3[RATE_18M] + pDevice->uNumSQ3[RATE_12M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_12M] > ulMaxPacket) {
+               ulPacketNum = priv->uNumSQ3[RATE_54M] + priv->uNumSQ3[RATE_48M] +
+                       priv->uNumSQ3[RATE_36M] + priv->uNumSQ3[RATE_24M] +
+                       priv->uNumSQ3[RATE_18M] + priv->uNumSQ3[RATE_12M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_12M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_12M];
+               ulMaxPacket = priv->uNumSQ3[RATE_12M];
        }
-       if (pDevice->uNumSQ3[RATE_11M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
-                       pDevice->uNumSQ3[RATE_2M] - pDevice->uNumSQ3[RATE_5M] -
-                       pDevice->uNumSQ3[RATE_6M] - pDevice->uNumSQ3[RATE_9M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_11M] > ulMaxPacket) {
+               ulPacketNum = priv->uDiversityCnt - priv->uNumSQ3[RATE_1M] -
+                       priv->uNumSQ3[RATE_2M] - priv->uNumSQ3[RATE_5M] -
+                       priv->uNumSQ3[RATE_6M] - priv->uNumSQ3[RATE_9M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_11M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_11M];
+               ulMaxPacket = priv->uNumSQ3[RATE_11M];
        }
-       if (pDevice->uNumSQ3[RATE_9M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
-                       pDevice->uNumSQ3[RATE_2M] - pDevice->uNumSQ3[RATE_5M] -
-                       pDevice->uNumSQ3[RATE_6M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_9M] > ulMaxPacket) {
+               ulPacketNum = priv->uDiversityCnt - priv->uNumSQ3[RATE_1M] -
+                       priv->uNumSQ3[RATE_2M] - priv->uNumSQ3[RATE_5M] -
+                       priv->uNumSQ3[RATE_6M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_9M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_9M];
+               ulMaxPacket = priv->uNumSQ3[RATE_9M];
        }
-       if (pDevice->uNumSQ3[RATE_6M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
-                       pDevice->uNumSQ3[RATE_2M] - pDevice->uNumSQ3[RATE_5M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_6M] > ulMaxPacket) {
+               ulPacketNum = priv->uDiversityCnt - priv->uNumSQ3[RATE_1M] -
+                       priv->uNumSQ3[RATE_2M] - priv->uNumSQ3[RATE_5M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_6M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_6M];
+               ulMaxPacket = priv->uNumSQ3[RATE_6M];
        }
-       if (pDevice->uNumSQ3[RATE_5M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M] -
-                       pDevice->uNumSQ3[RATE_2M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_5M] > ulMaxPacket) {
+               ulPacketNum = priv->uDiversityCnt - priv->uNumSQ3[RATE_1M] -
+                       priv->uNumSQ3[RATE_2M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_55M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_5M];
+               ulMaxPacket = priv->uNumSQ3[RATE_5M];
        }
-       if (pDevice->uNumSQ3[RATE_2M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uDiversityCnt - pDevice->uNumSQ3[RATE_1M];
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_2M] > ulMaxPacket) {
+               ulPacketNum = priv->uDiversityCnt - priv->uNumSQ3[RATE_1M];
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_2M;
-               ulMaxPacket = pDevice->uNumSQ3[RATE_2M];
+               ulMaxPacket = priv->uNumSQ3[RATE_2M];
        }
-       if (pDevice->uNumSQ3[RATE_1M] > ulMaxPacket) {
-               ulPacketNum = pDevice->uDiversityCnt;
-               ulRatio = (ulPacketNum * 1000 / pDevice->uDiversityCnt);
+       if (priv->uNumSQ3[RATE_1M] > ulMaxPacket) {
+               ulPacketNum = priv->uDiversityCnt;
+               ulRatio = (ulPacketNum * 1000 / priv->uDiversityCnt);
                ulRatio += TOP_RATE_1M;
        }
 
@@ -2670,13 +2510,13 @@ s_ulGetRatio(struct vnt_private *pDevice)
 }
 
 void
-BBvClearAntDivSQ3Value(struct vnt_private *pDevice)
+BBvClearAntDivSQ3Value(struct vnt_private *priv)
 {
        unsigned int ii;
 
-       pDevice->uDiversityCnt = 0;
+       priv->uDiversityCnt = 0;
        for (ii = 0; ii < MAX_RATE; ii++)
-               pDevice->uNumSQ3[ii] = 0;
+               priv->uNumSQ3[ii] = 0;
 }
 
 /*
@@ -2684,7 +2524,7 @@ BBvClearAntDivSQ3Value(struct vnt_private *pDevice)
  *
  * Parameters:
  *  In:
- *      pDevice          - Device Structure
+ *      priv          - Device Structure
  *      byRSR            - RSR from received packet
  *      bySQ3            - SQ3 value from received packet
  *  Out:
@@ -2694,75 +2534,75 @@ BBvClearAntDivSQ3Value(struct vnt_private *pDevice)
  *
  */
 
-void BBvAntennaDiversity(struct vnt_private *pDevice,
+void BBvAntennaDiversity(struct vnt_private *priv,
                         unsigned char byRxRate, unsigned char bySQ3)
 {
-       if ((byRxRate >= MAX_RATE) || (pDevice->wAntDiversityMaxRate >= MAX_RATE))
+       if ((byRxRate >= MAX_RATE) || (priv->wAntDiversityMaxRate >= MAX_RATE))
                return;
 
-       pDevice->uDiversityCnt++;
+       priv->uDiversityCnt++;
 
-       pDevice->uNumSQ3[byRxRate]++;
+       priv->uNumSQ3[byRxRate]++;
 
-       if (pDevice->byAntennaState == 0) {
-               if (pDevice->uDiversityCnt > pDevice->ulDiversityNValue) {
+       if (priv->byAntennaState == 0) {
+               if (priv->uDiversityCnt > priv->ulDiversityNValue) {
                        pr_debug("ulDiversityNValue=[%d],54M-[%d]\n",
-                                (int)pDevice->ulDiversityNValue,
-                                (int)pDevice->uNumSQ3[(int)pDevice->wAntDiversityMaxRate]);
+                                (int)priv->ulDiversityNValue,
+                                (int)priv->uNumSQ3[(int)priv->wAntDiversityMaxRate]);
 
-                       if (pDevice->uNumSQ3[pDevice->wAntDiversityMaxRate] < pDevice->uDiversityCnt/2) {
-                               pDevice->ulRatio_State0 = s_ulGetRatio(pDevice);
+                       if (priv->uNumSQ3[priv->wAntDiversityMaxRate] < priv->uDiversityCnt/2) {
+                               priv->ulRatio_State0 = s_ulGetRatio(priv);
                                pr_debug("SQ3_State0, rate = [%08x]\n",
-                                        (int)pDevice->ulRatio_State0);
+                                        (int)priv->ulRatio_State0);
 
-                               if (pDevice->byTMax == 0)
+                               if (priv->byTMax == 0)
                                        return;
                                pr_debug("1.[%08x], uNumSQ3[%d]=%d, %d\n",
-                                        (int)pDevice->ulRatio_State0,
-                                        (int)pDevice->wAntDiversityMaxRate,
-                                        (int)pDevice->uNumSQ3[(int)pDevice->wAntDiversityMaxRate],
-                                        (int)pDevice->uDiversityCnt);
-
-                               s_vChangeAntenna(pDevice);
-                               pDevice->byAntennaState = 1;
-                               del_timer(&pDevice->TimerSQ3Tmax3);
-                               del_timer(&pDevice->TimerSQ3Tmax2);
-                               pDevice->TimerSQ3Tmax1.expires =  RUN_AT(pDevice->byTMax * HZ);
-                               add_timer(&pDevice->TimerSQ3Tmax1);
+                                        (int)priv->ulRatio_State0,
+                                        (int)priv->wAntDiversityMaxRate,
+                                        (int)priv->uNumSQ3[(int)priv->wAntDiversityMaxRate],
+                                        (int)priv->uDiversityCnt);
+
+                               s_vChangeAntenna(priv);
+                               priv->byAntennaState = 1;
+                               del_timer(&priv->TimerSQ3Tmax3);
+                               del_timer(&priv->TimerSQ3Tmax2);
+                               priv->TimerSQ3Tmax1.expires =  RUN_AT(priv->byTMax * HZ);
+                               add_timer(&priv->TimerSQ3Tmax1);
 
                        } else {
-                               pDevice->TimerSQ3Tmax3.expires =  RUN_AT(pDevice->byTMax3 * HZ);
-                               add_timer(&pDevice->TimerSQ3Tmax3);
+                               priv->TimerSQ3Tmax3.expires =  RUN_AT(priv->byTMax3 * HZ);
+                               add_timer(&priv->TimerSQ3Tmax3);
                        }
-                       BBvClearAntDivSQ3Value(pDevice);
+                       BBvClearAntDivSQ3Value(priv);
 
                }
        } else { /* byAntennaState == 1 */
 
-               if (pDevice->uDiversityCnt > pDevice->ulDiversityMValue) {
-                       del_timer(&pDevice->TimerSQ3Tmax1);
+               if (priv->uDiversityCnt > priv->ulDiversityMValue) {
+                       del_timer(&priv->TimerSQ3Tmax1);
 
-                       pDevice->ulRatio_State1 = s_ulGetRatio(pDevice);
+                       priv->ulRatio_State1 = s_ulGetRatio(priv);
                        pr_debug("RX:SQ3_State1, rate0 = %08x,rate1 = %08x\n",
-                                (int)pDevice->ulRatio_State0,
-                                (int)pDevice->ulRatio_State1);
+                                (int)priv->ulRatio_State0,
+                                (int)priv->ulRatio_State1);
 
-                       if (pDevice->ulRatio_State1 < pDevice->ulRatio_State0) {
+                       if (priv->ulRatio_State1 < priv->ulRatio_State0) {
                                pr_debug("2.[%08x][%08x], uNumSQ3[%d]=%d, %d\n",
-                                        (int)pDevice->ulRatio_State0,
-                                        (int)pDevice->ulRatio_State1,
-                                        (int)pDevice->wAntDiversityMaxRate,
-                                        (int)pDevice->uNumSQ3[(int)pDevice->wAntDiversityMaxRate],
-                                        (int)pDevice->uDiversityCnt);
-
-                               s_vChangeAntenna(pDevice);
-                               pDevice->TimerSQ3Tmax3.expires =  RUN_AT(pDevice->byTMax3 * HZ);
-                               pDevice->TimerSQ3Tmax2.expires =  RUN_AT(pDevice->byTMax2 * HZ);
-                               add_timer(&pDevice->TimerSQ3Tmax3);
-                               add_timer(&pDevice->TimerSQ3Tmax2);
+                                        (int)priv->ulRatio_State0,
+                                        (int)priv->ulRatio_State1,
+                                        (int)priv->wAntDiversityMaxRate,
+                                        (int)priv->uNumSQ3[(int)priv->wAntDiversityMaxRate],
+                                        (int)priv->uDiversityCnt);
+
+                               s_vChangeAntenna(priv);
+                               priv->TimerSQ3Tmax3.expires =  RUN_AT(priv->byTMax3 * HZ);
+                               priv->TimerSQ3Tmax2.expires =  RUN_AT(priv->byTMax2 * HZ);
+                               add_timer(&priv->TimerSQ3Tmax3);
+                               add_timer(&priv->TimerSQ3Tmax2);
                        }
-                       pDevice->byAntennaState = 0;
-                       BBvClearAntDivSQ3Value(pDevice);
+                       priv->byAntennaState = 0;
+                       BBvClearAntDivSQ3Value(priv);
                }
        } /* byAntennaState */
 }
@@ -2783,28 +2623,30 @@ void BBvAntennaDiversity(struct vnt_private *pDevice,
 
 void
 TimerSQ3CallBack(
-       void *hDeviceContext
+       unsigned long data
 )
 {
-       struct vnt_private *pDevice = hDeviceContext;
+       struct vnt_private *priv = (struct vnt_private *)data;
+       unsigned long flags;
 
        pr_debug("TimerSQ3CallBack...\n");
-       spin_lock_irq(&pDevice->lock);
+
+       spin_lock_irqsave(&priv->lock, flags);
 
        pr_debug("3.[%08x][%08x], %d\n",
-                (int)pDevice->ulRatio_State0, (int)pDevice->ulRatio_State1,
-                (int)pDevice->uDiversityCnt);
+                (int)priv->ulRatio_State0, (int)priv->ulRatio_State1,
+                (int)priv->uDiversityCnt);
 
-       s_vChangeAntenna(pDevice);
-       pDevice->byAntennaState = 0;
-       BBvClearAntDivSQ3Value(pDevice);
+       s_vChangeAntenna(priv);
+       priv->byAntennaState = 0;
+       BBvClearAntDivSQ3Value(priv);
 
-       pDevice->TimerSQ3Tmax3.expires =  RUN_AT(pDevice->byTMax3 * HZ);
-       pDevice->TimerSQ3Tmax2.expires =  RUN_AT(pDevice->byTMax2 * HZ);
-       add_timer(&pDevice->TimerSQ3Tmax3);
-       add_timer(&pDevice->TimerSQ3Tmax2);
+       priv->TimerSQ3Tmax3.expires =  RUN_AT(priv->byTMax3 * HZ);
+       priv->TimerSQ3Tmax2.expires =  RUN_AT(priv->byTMax2 * HZ);
+       add_timer(&priv->TimerSQ3Tmax3);
+       add_timer(&priv->TimerSQ3Tmax2);
 
-       spin_unlock_irq(&pDevice->lock);
+       spin_unlock_irqrestore(&priv->lock, flags);
 }
 
 /*+
@@ -2827,43 +2669,46 @@ TimerSQ3CallBack(
 
 void
 TimerState1CallBack(
-       void *hDeviceContext
+       unsigned long data
 )
 {
-       struct vnt_private *pDevice = hDeviceContext;
+       struct vnt_private *priv = (struct vnt_private *)data;
+       unsigned long flags;
 
        pr_debug("TimerState1CallBack...\n");
 
-       spin_lock_irq(&pDevice->lock);
-       if (pDevice->uDiversityCnt < pDevice->ulDiversityMValue/100) {
-               s_vChangeAntenna(pDevice);
-               pDevice->TimerSQ3Tmax3.expires =  RUN_AT(pDevice->byTMax3 * HZ);
-               pDevice->TimerSQ3Tmax2.expires =  RUN_AT(pDevice->byTMax2 * HZ);
-               add_timer(&pDevice->TimerSQ3Tmax3);
-               add_timer(&pDevice->TimerSQ3Tmax2);
+       spin_lock_irqsave(&priv->lock, flags);
+
+       if (priv->uDiversityCnt < priv->ulDiversityMValue/100) {
+               s_vChangeAntenna(priv);
+               priv->TimerSQ3Tmax3.expires =  RUN_AT(priv->byTMax3 * HZ);
+               priv->TimerSQ3Tmax2.expires =  RUN_AT(priv->byTMax2 * HZ);
+               add_timer(&priv->TimerSQ3Tmax3);
+               add_timer(&priv->TimerSQ3Tmax2);
        } else {
-               pDevice->ulRatio_State1 = s_ulGetRatio(pDevice);
+               priv->ulRatio_State1 = s_ulGetRatio(priv);
                pr_debug("SQ3_State1, rate0 = %08x,rate1 = %08x\n",
-                        (int)pDevice->ulRatio_State0,
-                        (int)pDevice->ulRatio_State1);
+                        (int)priv->ulRatio_State0,
+                        (int)priv->ulRatio_State1);
 
-               if (pDevice->ulRatio_State1 < pDevice->ulRatio_State0) {
+               if (priv->ulRatio_State1 < priv->ulRatio_State0) {
                        pr_debug("2.[%08x][%08x], uNumSQ3[%d]=%d, %d\n",
-                                (int)pDevice->ulRatio_State0,
-                                (int)pDevice->ulRatio_State1,
-                                (int)pDevice->wAntDiversityMaxRate,
-                                (int)pDevice->uNumSQ3[(int)pDevice->wAntDiversityMaxRate],
-                                (int)pDevice->uDiversityCnt);
-
-                       s_vChangeAntenna(pDevice);
-
-                       pDevice->TimerSQ3Tmax3.expires =  RUN_AT(pDevice->byTMax3 * HZ);
-                       pDevice->TimerSQ3Tmax2.expires =  RUN_AT(pDevice->byTMax2 * HZ);
-                       add_timer(&pDevice->TimerSQ3Tmax3);
-                       add_timer(&pDevice->TimerSQ3Tmax2);
+                                (int)priv->ulRatio_State0,
+                                (int)priv->ulRatio_State1,
+                                (int)priv->wAntDiversityMaxRate,
+                                (int)priv->uNumSQ3[(int)priv->wAntDiversityMaxRate],
+                                (int)priv->uDiversityCnt);
+
+                       s_vChangeAntenna(priv);
+
+                       priv->TimerSQ3Tmax3.expires =  RUN_AT(priv->byTMax3 * HZ);
+                       priv->TimerSQ3Tmax2.expires =  RUN_AT(priv->byTMax2 * HZ);
+                       add_timer(&priv->TimerSQ3Tmax3);
+                       add_timer(&priv->TimerSQ3Tmax2);
                }
        }
-       pDevice->byAntennaState = 0;
-       BBvClearAntDivSQ3Value(pDevice);
-       spin_unlock_irq(&pDevice->lock);
+       priv->byAntennaState = 0;
+       BBvClearAntDivSQ3Value(priv);
+
+       spin_unlock_irqrestore(&priv->lock, flags);
 }