]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/rtl8192su/r8192S_rtl6052.c
Merge branch 'master' into tk71
[mv-sheeva.git] / drivers / staging / rtl8192su / r8192S_rtl6052.c
diff --git a/drivers/staging/rtl8192su/r8192S_rtl6052.c b/drivers/staging/rtl8192su/r8192S_rtl6052.c
deleted file mode 100644 (file)
index 2239809..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-/******************************************************************************
- *
- *     (c) Copyright  2008, RealTEK Technologies Inc. All Rights Reserved.
- *
- * Module:     HalRf6052.c     ( Source C File)
- *
- * Note:       Provide RF 6052 series relative API.
- *
- * Function:
- *
- * Export:
- *
- * Abbrev:
- *
- * History:
- * Data                        Who             Remark
- *
- * 09/25/2008  MHC             Create initial version.
- * 11/05/2008  MHC             Add API for tw power setting.
- *
- *
-******************************************************************************/
-#include "r8192U.h"
-#include "r8192S_rtl6052.h"
-
-#include "r8192S_hw.h"
-#include "r8192S_phyreg.h"
-#include "r8192S_phy.h"
-
-
-/*---------------------------Define Local Constant---------------------------*/
-// Define local structure for debug!!!!!
-typedef struct RF_Shadow_Compare_Map {
-       // Shadow register value
-       u32             Value;
-       // Compare or not flag
-       u8              Compare;
-       // Record If it had ever modified unpredicted
-       u8              ErrorOrNot;
-       // Recorver Flag
-       u8              Recorver;
-       //
-       u8              Driver_Write;
-}RF_SHADOW_T;
-/*---------------------------Define Local Constant---------------------------*/
-
-
-/*------------------------Define global variable-----------------------------*/
-/*------------------------Define global variable-----------------------------*/
-
-
-
-
-/*---------------------Define local function prototype-----------------------*/
-void phy_RF6052_Config_HardCode(struct net_device* dev);
-
-RT_STATUS phy_RF6052_Config_ParaFile(struct net_device* dev);
-/*---------------------Define local function prototype-----------------------*/
-
-/*------------------------Define function prototype--------------------------*/
-extern void RF_ChangeTxPath(struct net_device* dev,  u16 DataRate);
-
-/*------------------------Define function prototype--------------------------*/
-
-/*------------------------Define local variable------------------------------*/
-// 2008/11/20 MH For Debug only, RF
-static RF_SHADOW_T     RF_Shadow[RF6052_MAX_PATH][RF6052_MAX_REG];// = {{0}};//FIXLZM
-/*------------------------Define local variable------------------------------*/
-
-/*------------------------Define function prototype--------------------------*/
-/*-----------------------------------------------------------------------------
- * Function:   RF_ChangeTxPath
- *
- * Overview:   For RL6052, we must change some RF settign for 1T or 2T.
- *
- * Input:              u16 DataRate            // 0x80-8f, 0x90-9f
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When                        Who             Remark
- * 09/25/2008  MHC             Create Version 0.
- *                                             Firmwaer support the utility later.
- *
- *---------------------------------------------------------------------------*/
-extern void RF_ChangeTxPath(struct net_device* dev,  u16 DataRate)
-{
-}      /* RF_ChangeTxPath */
-
-
-/*-----------------------------------------------------------------------------
- * Function:    PHY_RF6052SetBandwidth()
- *
- * Overview:    This function is called by SetBWModeCallback8190Pci() only
- *
- * Input:       PADAPTER                               Adapter
- *                     WIRELESS_BANDWIDTH_E    Bandwidth       //20M or 40M
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Note:               For RF type 0222D
- *---------------------------------------------------------------------------*/
-void PHY_RF6052SetBandwidth(struct net_device* dev, HT_CHANNEL_WIDTH Bandwidth)        //20M or 40M
-{
-       //u8                            eRFPath;
-       //struct r8192_priv     *priv = ieee80211_priv(dev);
-
-
-       //if (priv->card_8192 == NIC_8192SE)
-       {
-               switch(Bandwidth)
-               {
-                       case HT_CHANNEL_WIDTH_20:
-                               //if (priv->card_8192_version >= VERSION_8192S_BCUT)
-                               //      rtl8192_setBBreg(dev, rFPGA0_AnalogParameter2, 0xff, 0x58);
-
-                               rtl8192_phy_SetRFReg(dev, (RF90_RADIO_PATH_E)RF90_PATH_A, RF_CHNLBW, BIT10|BIT11, 0x01);
-                               break;
-                       case HT_CHANNEL_WIDTH_20_40:
-                               //if (priv->card_8192_version >= VERSION_8192S_BCUT)
-                               //      rtl8192_setBBreg(dev, rFPGA0_AnalogParameter2, 0xff, 0x18);
-
-                               rtl8192_phy_SetRFReg(dev, (RF90_RADIO_PATH_E)RF90_PATH_A, RF_CHNLBW, BIT10|BIT11, 0x00);
-                               break;
-                       default:
-                               RT_TRACE(COMP_DBG, "PHY_SetRF6052Bandwidth(): unknown Bandwidth: %#X\n",Bandwidth);
-                               break;
-               }
-       }
-//     else
-}
-
-
-/*-----------------------------------------------------------------------------
- * Function:   PHY_RF6052SetCckTxPower
- *
- * Overview:
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When                        Who             Remark
- * 11/05/2008  MHC             Simulate 8192series..
- *
- *---------------------------------------------------------------------------*/
-extern void PHY_RF6052SetCckTxPower(struct net_device* dev, u8 powerlevel)
-{
-       struct r8192_priv *priv = ieee80211_priv(dev);
-       u32                             TxAGC=0;
-
-       if(priv->ieee80211->scanning == 1)
-               TxAGC = 0x3f;
-       else if(priv->bDynamicTxLowPower == true)//cosa 04282008 for cck long range
-               TxAGC = 0x22;
-       else
-               TxAGC = powerlevel;
-
-       //cosa add for lenovo, to pass the safety spec, don't increase power index for different rates.
-       if(priv->bIgnoreDiffRateTxPowerOffset)
-               TxAGC = powerlevel;
-
-       if(TxAGC > RF6052_MAX_TX_PWR)
-               TxAGC = RF6052_MAX_TX_PWR;
-
-       //printk("CCK PWR= %x\n", TxAGC);
-       rtl8192_setBBreg(dev, rTxAGC_CCK_Mcs32, bTxAGCRateCCK, TxAGC);
-
-}      /* PHY_RF6052SetCckTxPower */
-
-
-
-/*-----------------------------------------------------------------------------
- * Function:   PHY_RF6052SetOFDMTxPower
- *
- * Overview:   For legacy and HY OFDM, we must read EEPROM TX power index for
- *                     different channel and read original value in TX power register area from
- *                     0xe00. We increase offset and original value to be correct tx pwr.
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When                        Who             Remark
- * 11/05/2008  MHC             Simulate 8192 series method.
-* 01/06/2009   MHC             1. Prevent Path B tx power overflow or underflow dure to
- *                                             A/B pwr difference or legacy/HT pwr diff.
- *                                             2. We concern with path B legacy/HT OFDM difference.
- * 01/22/2009  MHC             Support new EPRO format from SD3.
- *---------------------------------------------------------------------------*/
- #if 1
-extern void PHY_RF6052SetOFDMTxPower(struct net_device* dev, u8 powerlevel)
-{
-       struct r8192_priv *priv = ieee80211_priv(dev);
-       u32     writeVal, powerBase0, powerBase1;
-       u8      index = 0;
-       u16     RegOffset[6] = {0xe00, 0xe04, 0xe10, 0xe14, 0xe18, 0xe1c};
-       //u8    byte0, byte1, byte2, byte3;
-       u8    Channel = priv->ieee80211->current_network.channel;
-       u8      rfa_pwr[4];
-       u8      rfa_lower_bound = 0, rfa_upper_bound = 0 /*, rfa_htpwr, rfa_legacypwr*/;
-       u8      i;
-       u8      rf_pwr_diff = 0;
-       u8      Legacy_pwrdiff=0, HT20_pwrdiff=0, BandEdge_Pwrdiff=0;
-       u8      ofdm_bandedge_chnl_low=0, ofdm_bandedge_chnl_high=0;
-
-
-       // We only care about the path A for legacy.
-       if (priv->EEPROMVersion != 2)
-       powerBase0 = powerlevel + (priv->LegacyHTTxPowerDiff & 0xf);
-       else if (priv->EEPROMVersion == 2)      // Defined by SD1 Jong
-       {
-               //
-               // 2009/01/21 MH Support new EEPROM format from SD3 requirement
-               //
-               Legacy_pwrdiff = priv->TxPwrLegacyHtDiff[RF90_PATH_A][Channel-1];
-               // For legacy OFDM, tx pwr always > HT OFDM pwr. We do not care Path B
-               // legacy OFDM pwr diff. NO BB register to notify HW.
-               powerBase0 = powerlevel + Legacy_pwrdiff;
-               //RTPRINT(FPHY, PHY_TXPWR, (" [LagacyToHT40 pwr diff = %d]\n", Legacy_pwrdiff));
-
-               // Band Edge scheme is enabled for FCC mode
-               if (priv->TxPwrbandEdgeFlag == 1/* && pHalData->ChannelPlan == 0*/)
-               {
-                       ofdm_bandedge_chnl_low = 1;
-                       ofdm_bandedge_chnl_high = 11;
-                       BandEdge_Pwrdiff = 0;
-                       if (Channel <= ofdm_bandedge_chnl_low)
-                               BandEdge_Pwrdiff = priv->TxPwrbandEdgeLegacyOfdm[RF90_PATH_A][0];
-                       else if (Channel >= ofdm_bandedge_chnl_high)
-                       {
-                               BandEdge_Pwrdiff = priv->TxPwrbandEdgeLegacyOfdm[RF90_PATH_A][1];
-                       }
-                       powerBase0 -= BandEdge_Pwrdiff;
-                       if (Channel <= ofdm_bandedge_chnl_low || Channel >= ofdm_bandedge_chnl_high)
-                       {
-                               //RTPRINT(FPHY, PHY_TXPWR, (" [OFDM band-edge channel = %d, pwr diff = %d]\n",
-                               //Channel, BandEdge_Pwrdiff));
-                       }
-               }
-               //RTPRINT(FPHY, PHY_TXPWR, (" [OFDM power base index = 0x%x]\n", powerBase0));
-       }
-       powerBase0 = (powerBase0<<24) | (powerBase0<<16) |(powerBase0<<8) |powerBase0;
-
-       //MCS rates
-       if(priv->EEPROMVersion == 2)
-       {
-               //Cosa add for new EEPROM content. 02102009
-
-               //Check HT20 to HT40 diff
-               if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20)
-               {
-                       // HT 20<->40 pwr diff
-                       HT20_pwrdiff = priv->TxPwrHt20Diff[RF90_PATH_A][Channel-1];
-
-                       // Calculate Antenna pwr diff
-                       if (HT20_pwrdiff < 8)   // 0~+7
-                               powerlevel += HT20_pwrdiff;
-                       else                            // index8-15=-8~-1
-                               powerlevel -= (16-HT20_pwrdiff);
-
-                       //RTPRINT(FPHY, PHY_TXPWR, (" [HT20 to HT40 pwrdiff = %d]\n", HT20_pwrdiff));
-                       //RTPRINT(FPHY, PHY_TXPWR, (" [MCS power base index = 0x%x]\n", powerlevel));
-               }
-
-               // Band Edge scheme is enabled for FCC mode
-               if (priv->TxPwrbandEdgeFlag == 1/* && pHalData->ChannelPlan == 0*/)
-               {
-                       BandEdge_Pwrdiff = 0;
-                       if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20_40)
-                       {
-                               if (Channel <= 3)
-                                       BandEdge_Pwrdiff = priv->TxPwrbandEdgeHt40[RF90_PATH_A][0];
-                               else if (Channel >= 9)
-                                       BandEdge_Pwrdiff = priv->TxPwrbandEdgeHt40[RF90_PATH_A][1];
-                               if (Channel <= 3 || Channel >= 9)
-                               {
-                                       //RTPRINT(FPHY, PHY_TXPWR, (" [HT40 band-edge channel = %d, pwr diff = %d]\n",
-                                       //Channel, BandEdge_Pwrdiff));
-                               }
-                       }
-                       else if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20)
-                       {
-                               if (Channel <= 1)
-                                       BandEdge_Pwrdiff = priv->TxPwrbandEdgeHt20[RF90_PATH_A][0];
-                               else if (Channel >= 11)
-                                       BandEdge_Pwrdiff = priv->TxPwrbandEdgeHt20[RF90_PATH_A][1];
-                               if (Channel <= 1 || Channel >= 11)
-                               {
-                                       //RTPRINT(FPHY, PHY_TXPWR, (" [HT20 band-edge channel = %d, pwr diff = %d]\n",
-                                       //Channel, BandEdge_Pwrdiff));
-                               }
-                       }
-                       powerlevel -= BandEdge_Pwrdiff;
-                       //RTPRINT(FPHY, PHY_TXPWR, (" [MCS power base index = 0x%x]\n", powerlevel));
-               }
-       }
-       powerBase1 = powerlevel;
-       powerBase1 = (powerBase1<<24) | (powerBase1<<16) |(powerBase1<<8) |powerBase1;
-
-       //RTPRINT(FPHY, PHY_TXPWR, (" [Legacy/HT power index= %x/%x]\n", powerBase0, powerBase1));
-
-       for(index=0; index<6; index++)
-       {
-               //
-               // Index 0 & 1= legacy OFDM, 2-5=HT_MCS rate
-               //
-               //cosa add for lenovo, to pass the safety spec, don't increase power index for different rates.
-               if(priv->bIgnoreDiffRateTxPowerOffset)
-                       writeVal = ((index<2)?powerBase0:powerBase1);
-               else
-               writeVal = priv->MCSTxPowerLevelOriginalOffset[index] + ((index<2)?powerBase0:powerBase1);
-
-               //RTPRINT(FPHY, PHY_TXPWR, ("Reg 0x%x, Original=%x writeVal=%x\n",
-               //RegOffset[index], priv->MCSTxPowerLevelOriginalOffset[index], writeVal));
-
-               //
-               // If path A and Path B coexist, we must limit Path A tx power.
-               // Protect Path B pwr over or underflow. We need to calculate upper and
-               // lower bound of path A tx power.
-               //
-               if (priv->rf_type == RF_2T2R)
-               {
-                       rf_pwr_diff = priv->AntennaTxPwDiff[0];
-                       //RTPRINT(FPHY, PHY_TXPWR, ("2T2R RF-B to RF-A PWR DIFF=%d\n", rf_pwr_diff));
-
-                       if (rf_pwr_diff >= 8)           // Diff=-8~-1
-                       {       // Prevent underflow!!
-                               rfa_lower_bound = 0x10-rf_pwr_diff;
-                               //RTPRINT(FPHY, PHY_TXPWR, ("rfa_lower_bound= %d\n", rfa_lower_bound));
-                       }
-                       else if (rf_pwr_diff >= 0)      // Diff = 0-7
-                       {
-                               rfa_upper_bound = RF6052_MAX_TX_PWR-rf_pwr_diff;
-                               //RTPRINT(FPHY, PHY_TXPWR, ("rfa_upper_bound= %d\n", rfa_upper_bound));
-                       }
-               }
-
-               for (i=  0; i <4; i++)
-               {
-                       rfa_pwr[i] = (u8)((writeVal & (0x7f<<(i*8)))>>(i*8));
-                       if (rfa_pwr[i]  > RF6052_MAX_TX_PWR)
-                               rfa_pwr[i]  = RF6052_MAX_TX_PWR;
-
-                       //
-                       // If path A and Path B coexist, we must limit Path A tx power.
-                       // Protect Path B pwr under/over flow. We need to calculate upper and
-                       // lower bound of path A tx power.
-                       //
-                       if (priv->rf_type == RF_2T2R)
-                       {
-                               if (rf_pwr_diff >= 8)           // Diff=-8~-1
-                               {       // Prevent underflow!!
-                                       if (rfa_pwr[i] <rfa_lower_bound)
-                                       {
-                                               //RTPRINT(FPHY, PHY_TXPWR, ("Underflow"));
-                                               rfa_pwr[i] = rfa_lower_bound;
-                                       }
-                               }
-                               else if (rf_pwr_diff >= 1)      // Diff = 0-7
-                               {       // Prevent overflow
-                                       if (rfa_pwr[i] > rfa_upper_bound)
-                                       {
-                                               //RTPRINT(FPHY, PHY_TXPWR, ("Overflow"));
-                                               rfa_pwr[i] = rfa_upper_bound;
-                                       }
-                               }
-                               //RTPRINT(FPHY, PHY_TXPWR, ("rfa_pwr[%d]=%x\n", i, rfa_pwr[i]));
-                       }
-
-               }
-
-               //
-               // Add description: PWDB > threshold!!!High power issue!!
-               // We must decrease tx power !! Why is the value ???
-               //
-               if(priv->bDynamicTxHighPower == TRUE)
-               {
-                       // For MCS rate
-                       if(index > 1)
-                       {
-                               writeVal = 0x03030303;
-                       }
-                       // For Legacy rate
-                       else
-                       {
-                               writeVal = (rfa_pwr[3]<<24) | (rfa_pwr[2]<<16) |(rfa_pwr[1]<<8) |rfa_pwr[0];
-                       }
-                       //RTPRINT(FPHY, PHY_TXPWR, ("HighPower=%08x\n", writeVal));
-               }
-               else
-               {
-                       writeVal = (rfa_pwr[3]<<24) | (rfa_pwr[2]<<16) |(rfa_pwr[1]<<8) |rfa_pwr[0];
-                       //RTPRINT(FPHY, PHY_TXPWR, ("NormalPower=%08x\n", writeVal));
-               }
-
-               //
-               // Write different rate set tx power index.
-               //
-               //if (DCMD_Test_Flag == 0)
-               rtl8192_setBBreg(dev, RegOffset[index], 0x7f7f7f7f, writeVal);
-       }
-
-}      /* PHY_RF6052SetOFDMTxPower */
-#else
-extern void PHY_RF6052SetOFDMTxPower(struct net_device* dev, u8 powerlevel)
-{
-       struct r8192_priv *priv = ieee80211_priv(dev);
-       u32     writeVal, powerBase0, powerBase1;
-       u8      index = 0;
-       u16     RegOffset[6] = {0xe00, 0xe04, 0xe10, 0xe14, 0xe18, 0xe1c};
-       u8      byte0, byte1, byte2, byte3;
-       u8    channel = priv->ieee80211->current_network.channel;
-
-       //Legacy OFDM rates
-       powerBase0 = powerlevel + (priv->LegacyHTTxPowerDiff & 0xf);
-       powerBase0 = (powerBase0<<24) | (powerBase0<<16) |(powerBase0<<8) |powerBase0;
-
-       //MCS rates HT OFDM
-       powerBase1 = powerlevel;
-       powerBase1 = (powerBase1<<24) | (powerBase1<<16) |(powerBase1<<8) |powerBase1;
-
-       //printk("Legacy/HT PWR= %x/%x\n", powerBase0, powerBase1);
-
-       for(index=0; index<6; index++)
-       {
-               //
-               // Index 0 & 1= legacy OFDM, 2-5=HT_MCS rate
-               //
-               writeVal = priv->MCSTxPowerLevelOriginalOffset[index] +  ((index<2)?powerBase0:powerBase1);
-
-               //printk("Index = %d Original=%x writeVal=%x\n", index, priv->MCSTxPowerLevelOriginalOffset[index], writeVal);
-
-               byte0 = (u8)(writeVal & 0x7f);
-               byte1 = (u8)((writeVal & 0x7f00)>>8);
-               byte2 = (u8)((writeVal & 0x7f0000)>>16);
-               byte3 = (u8)((writeVal & 0x7f000000)>>24);
-
-               // Max power index = 0x3F Range = 0-0x3F
-               if(byte0 > RF6052_MAX_TX_PWR)
-                       byte0 = RF6052_MAX_TX_PWR;
-               if(byte1 > RF6052_MAX_TX_PWR)
-                       byte1 = RF6052_MAX_TX_PWR;
-               if(byte2 > RF6052_MAX_TX_PWR)
-                       byte2 = RF6052_MAX_TX_PWR;
-               if(byte3 > RF6052_MAX_TX_PWR)
-                       byte3 = RF6052_MAX_TX_PWR;
-
-               //
-               // Add description: PWDB > threshold!!!High power issue!!
-               // We must decrease tx power !! Why is the value ???
-               //
-               if(priv->bDynamicTxHighPower == true)
-               {
-                       // For MCS rate
-                       if(index > 1)
-                       {
-                               writeVal = 0x03030303;
-                       }
-                       // For Legacy rate
-                       else
-                       {
-                               writeVal = (byte3<<24) | (byte2<<16) |(byte1<<8) |byte0;
-                       }
-               }
-               else
-               {
-                       writeVal = (byte3<<24) | (byte2<<16) |(byte1<<8) |byte0;
-               }
-
-               //
-               // Write different rate set tx power index.
-               //
-               rtl8192_setBBreg(dev, RegOffset[index], 0x7f7f7f7f, writeVal);
-       }
-
-}      /* PHY_RF6052SetOFDMTxPower */
-#endif
-
-RT_STATUS PHY_RF6052_Config(struct net_device* dev)
-{
-       struct r8192_priv                       *priv = ieee80211_priv(dev);
-       RT_STATUS                               rtStatus = RT_STATUS_SUCCESS;
-       //RF90_RADIO_PATH_E             eRFPath;
-       //BB_REGISTER_DEFINITION_T      *pPhyReg;
-       //u32                                           OrgStoreRFIntSW[RF90_PATH_D+1];
-
-       //
-       // Initialize general global value
-       //
-       // TODO: Extend RF_PATH_C and RF_PATH_D in the future
-       if(priv->rf_type == RF_1T1R)
-               priv->NumTotalRFPath = 1;
-       else
-               priv->NumTotalRFPath = 2;
-
-       //
-       // Config BB and RF
-       //
-//     switch( priv->bRegHwParaFile )
-//     {
-//             case 0:
-//                     phy_RF6052_Config_HardCode(dev);
-//                     break;
-
-//             case 1:
-                       rtStatus = phy_RF6052_Config_ParaFile(dev);
-//                     break;
-
-//             case 2:
-                       // Partial Modify.
-//                     phy_RF6052_Config_HardCode(dev);
-//                     phy_RF6052_Config_ParaFile(dev);
-//                     break;
-
-//             default:
-//                     phy_RF6052_Config_HardCode(dev);
-//                     break;
-//     }
-       return rtStatus;
-
-}
-
-void phy_RF6052_Config_HardCode(struct net_device* dev)
-{
-
-       // Set Default Bandwidth to 20M
-       //Adapter->HalFunc      .SetBWModeHandler(Adapter, HT_CHANNEL_WIDTH_20);
-
-       // TODO: Set Default Channel to channel one for RTL8225
-
-}
-
-RT_STATUS phy_RF6052_Config_ParaFile(struct net_device* dev)
-{
-       u32                     u4RegValue = 0;
-       //static s1Byte         szRadioAFile[] = RTL819X_PHY_RADIO_A;
-       //static s1Byte         szRadioBFile[] = RTL819X_PHY_RADIO_B;
-       //static s1Byte         szRadioBGMFile[] = RTL819X_PHY_RADIO_B_GM;
-       u8                      eRFPath;
-       RT_STATUS               rtStatus = RT_STATUS_SUCCESS;
-       struct r8192_priv       *priv = ieee80211_priv(dev);
-       BB_REGISTER_DEFINITION_T        *pPhyReg;
-       //u8                    eCheckItem;
-
-
-       //3//-----------------------------------------------------------------
-       //3// <2> Initialize RF
-       //3//-----------------------------------------------------------------
-       //for(eRFPath = RF90_PATH_A; eRFPath <pHalData->NumTotalRFPath; eRFPath++)
-       for(eRFPath = 0; eRFPath <priv->NumTotalRFPath; eRFPath++)
-       {
-
-               pPhyReg = &priv->PHYRegDef[eRFPath];
-
-               /*----Store original RFENV control type----*/
-               switch(eRFPath)
-               {
-               case RF90_PATH_A:
-               case RF90_PATH_C:
-                       u4RegValue = rtl8192_QueryBBReg(dev, pPhyReg->rfintfs, bRFSI_RFENV);
-                       break;
-               case RF90_PATH_B :
-               case RF90_PATH_D:
-                       u4RegValue = rtl8192_QueryBBReg(dev, pPhyReg->rfintfs, bRFSI_RFENV<<16);
-                       break;
-               }
-
-               /*----Set RF_ENV enable----*/
-               rtl8192_setBBreg(dev, pPhyReg->rfintfe, bRFSI_RFENV<<16, 0x1);
-
-               /*----Set RF_ENV output high----*/
-               rtl8192_setBBreg(dev, pPhyReg->rfintfo, bRFSI_RFENV, 0x1);
-
-               /* Set bit number of Address and Data for RF register */
-               rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0);  // Set 1 to 4 bits for 8255
-               rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0);     // Set 0 to 12  bits for 8255
-
-
-               /*----Initialize RF fom connfiguration file----*/
-               switch(eRFPath)
-               {
-               case RF90_PATH_A:
-                       rtStatus= rtl8192_phy_ConfigRFWithHeaderFile(dev,(RF90_RADIO_PATH_E)eRFPath);
-                       break;
-               case RF90_PATH_B:
-                       rtStatus= rtl8192_phy_ConfigRFWithHeaderFile(dev,(RF90_RADIO_PATH_E)eRFPath);
-                       break;
-               case RF90_PATH_C:
-                       break;
-               case RF90_PATH_D:
-                       break;
-               }
-
-               /*----Restore RFENV control type----*/;
-               switch(eRFPath)
-               {
-               case RF90_PATH_A:
-               case RF90_PATH_C:
-                       rtl8192_setBBreg(dev, pPhyReg->rfintfs, bRFSI_RFENV, u4RegValue);
-                       break;
-               case RF90_PATH_B :
-               case RF90_PATH_D:
-                       rtl8192_setBBreg(dev, pPhyReg->rfintfs, bRFSI_RFENV<<16, u4RegValue);
-                       break;
-               }
-
-               if(rtStatus != RT_STATUS_SUCCESS){
-                       printk("phy_RF6052_Config_ParaFile():Radio[%d] Fail!!", eRFPath);
-                       goto phy_RF6052_Config_ParaFile_Fail;
-               }
-
-       }
-
-       RT_TRACE(COMP_INIT, "<---phy_RF6052_Config_ParaFile()\n");
-       return rtStatus;
-
-phy_RF6052_Config_ParaFile_Fail:
-       return rtStatus;
-}
-
-
-//
-// ==> RF shadow Operation API Code Section!!!
-//
-/*-----------------------------------------------------------------------------
- * Function:   PHY_RFShadowRead
- *                             PHY_RFShadowWrite
- *                             PHY_RFShadowCompare
- *                             PHY_RFShadowRecorver
- *                             PHY_RFShadowCompareAll
- *                             PHY_RFShadowRecorverAll
- *                             PHY_RFShadowCompareFlagSet
- *                             PHY_RFShadowRecorverFlagSet
- *
- * Overview:   When we set RF register, we must write shadow at first.
- *                     When we are running, we must compare shadow abd locate error addr.
- *                     Decide to recorver or not.
- *
- * Input:       NONE
- *
- * Output:      NONE
- *
- * Return:      NONE
- *
- * Revised History:
- * When                        Who             Remark
- * 11/20/2008  MHC             Create Version 0.
- *
- *---------------------------------------------------------------------------*/
-extern u32 PHY_RFShadowRead(
-       struct net_device               * dev,
-       RF90_RADIO_PATH_E       eRFPath,
-       u32                                     Offset)
-{
-       return  RF_Shadow[eRFPath][Offset].Value;
-
-}      /* PHY_RFShadowRead */
-
-
-extern void PHY_RFShadowWrite(
-       struct net_device               * dev,
-       u32     eRFPath,
-       u32                                     Offset,
-       u32                                     Data)
-{
-       //RF_Shadow[eRFPath][Offset].Value = (Data & bMask20Bits);
-       RF_Shadow[eRFPath][Offset].Value = (Data & bRFRegOffsetMask);
-       RF_Shadow[eRFPath][Offset].Driver_Write = true;
-
-}      /* PHY_RFShadowWrite */
-
-
-extern void PHY_RFShadowCompare(
-       struct net_device               * dev,
-       RF90_RADIO_PATH_E       eRFPath,
-       u32                                     Offset)
-{
-       u32     reg;
-
-       // Check if we need to check the register
-       if (RF_Shadow[eRFPath][Offset].Compare == true)
-       {
-               reg = rtl8192_phy_QueryRFReg(dev, eRFPath, Offset, bRFRegOffsetMask);
-               // Compare shadow and real rf register for 20bits!!
-               if (RF_Shadow[eRFPath][Offset].Value != reg)
-               {
-                       // Locate error position.
-                       RF_Shadow[eRFPath][Offset].ErrorOrNot = true;
-                       RT_TRACE(COMP_INIT, "PHY_RFShadowCompare RF-%d Addr%02xErr = %05x", eRFPath, Offset, reg);
-               }
-       }
-
-}      /* PHY_RFShadowCompare */
-
-extern void PHY_RFShadowRecorver(
-       struct net_device               * dev,
-       RF90_RADIO_PATH_E       eRFPath,
-       u32                                     Offset)
-{
-       // Check if the address is error
-       if (RF_Shadow[eRFPath][Offset].ErrorOrNot == true)
-       {
-               // Check if we need to recorver the register.
-               if (RF_Shadow[eRFPath][Offset].Recorver == true)
-               {
-                       rtl8192_phy_SetRFReg(dev, eRFPath, Offset, bRFRegOffsetMask, RF_Shadow[eRFPath][Offset].Value);
-                       RT_TRACE(COMP_INIT, "PHY_RFShadowRecorver RF-%d Addr%02x=%05x",
-                       eRFPath, Offset, RF_Shadow[eRFPath][Offset].Value);
-               }
-       }
-
-}      /* PHY_RFShadowRecorver */
-
-
-extern void PHY_RFShadowCompareAll(struct net_device * dev)
-{
-       u32             eRFPath;
-       u32             Offset;
-
-       for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
-       {
-               for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
-               {
-                       PHY_RFShadowCompare(dev, (RF90_RADIO_PATH_E)eRFPath, Offset);
-               }
-       }
-
-}      /* PHY_RFShadowCompareAll */
-
-
-extern void PHY_RFShadowRecorverAll(struct net_device * dev)
-{
-       u32             eRFPath;
-       u32             Offset;
-
-       for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
-       {
-               for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
-               {
-                       PHY_RFShadowRecorver(dev, (RF90_RADIO_PATH_E)eRFPath, Offset);
-               }
-       }
-
-}      /* PHY_RFShadowRecorverAll */
-
-
-extern void PHY_RFShadowCompareFlagSet(
-       struct net_device               * dev,
-       RF90_RADIO_PATH_E       eRFPath,
-       u32                                     Offset,
-       u8                                      Type)
-{
-       // Set True or False!!!
-       RF_Shadow[eRFPath][Offset].Compare = Type;
-
-}      /* PHY_RFShadowCompareFlagSet */
-
-
-extern void PHY_RFShadowRecorverFlagSet(
-       struct net_device               * dev,
-       RF90_RADIO_PATH_E       eRFPath,
-       u32                                     Offset,
-       u8                                      Type)
-{
-       // Set True or False!!!
-       RF_Shadow[eRFPath][Offset].Recorver= Type;
-
-}      /* PHY_RFShadowRecorverFlagSet */
-
-
-extern void PHY_RFShadowCompareFlagSetAll(struct net_device  * dev)
-{
-       u32             eRFPath;
-       u32             Offset;
-
-       for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
-       {
-               for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
-               {
-                       // 2008/11/20 MH For S3S4 test, we only check reg 26/27 now!!!!
-                       if (Offset != 0x26 && Offset != 0x27)
-                               PHY_RFShadowCompareFlagSet(dev, (RF90_RADIO_PATH_E)eRFPath, Offset, FALSE);
-                       else
-                               PHY_RFShadowCompareFlagSet(dev, (RF90_RADIO_PATH_E)eRFPath, Offset, TRUE);
-               }
-       }
-
-}      /* PHY_RFShadowCompareFlagSetAll */
-
-
-extern void PHY_RFShadowRecorverFlagSetAll(struct net_device  * dev)
-{
-       u32             eRFPath;
-       u32             Offset;
-
-       for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
-       {
-               for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
-               {
-                       // 2008/11/20 MH For S3S4 test, we only check reg 26/27 now!!!!
-                       if (Offset != 0x26 && Offset != 0x27)
-                               PHY_RFShadowRecorverFlagSet(dev, (RF90_RADIO_PATH_E)eRFPath, Offset, FALSE);
-                       else
-                               PHY_RFShadowRecorverFlagSet(dev, (RF90_RADIO_PATH_E)eRFPath, Offset, TRUE);
-               }
-       }
-
-}      /* PHY_RFShadowCompareFlagSetAll */
-
-
-
-extern void PHY_RFShadowRefresh(struct net_device  * dev)
-{
-       u32             eRFPath;
-       u32             Offset;
-
-       for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
-       {
-               for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
-               {
-                       RF_Shadow[eRFPath][Offset].Value = 0;
-                       RF_Shadow[eRFPath][Offset].Compare = false;
-                       RF_Shadow[eRFPath][Offset].Recorver  = false;
-                       RF_Shadow[eRFPath][Offset].ErrorOrNot = false;
-                       RF_Shadow[eRFPath][Offset].Driver_Write = false;
-               }
-       }
-
-}      /* PHY_RFShadowRead */
-
-/* End of HalRf6052.c */