8723BU: Update 8723BU wifi driver to version v4.3.16_14189.20150519_BTCOEX2015119...
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / hal / OUTSRC / phydm_DynamicTxPower.c
index 5a6d2a94f8056ba3d64b4255466a74d7a358ec63..a9d70d911b013c44a4730e8ba6be28e3441b1919 100755 (executable)
@@ -53,35 +53,8 @@ odm_DynamicTxPowerInit(
 
        pHalData->LastDTPLvl = TxHighPwrLevel_Normal;
        pHalData->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
-       PADAPTER        Adapter = pDM_Odm->Adapter;
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);
-       struct dm_priv  *pdmpriv = &pHalData->dmpriv;
-       pdmpriv->bDynamicTxPowerEnable = _FALSE;
-
-       #if (RTL8192C_SUPPORT==1) 
-       #ifdef CONFIG_USB_HCI
-
-       #ifdef CONFIG_INTEL_PROXIM
-       if((pHalData->BoardType == BOARD_USB_High_PA)||(Adapter->proximity.proxim_support==_TRUE))
-       #else
-       if(pHalData->BoardType == BOARD_USB_High_PA)
-       #endif
 
-       {
-               //odm_SavePowerIndex(Adapter);
-               odm_DynamicTxPowerSavePowerIndex(pDM_Odm);
-               pdmpriv->bDynamicTxPowerEnable = _TRUE;
-       }               
-       else    
-       #else
-               pdmpriv->bDynamicTxPowerEnable = _FALSE;
-       #endif
-       #endif
-       
-       pdmpriv->LastDTPLvl = TxHighPwrLevel_Normal;
-       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal; 
-       
+\r
 #endif
        
 }
@@ -101,12 +74,8 @@ odm_DynamicTxPowerSavePowerIndex(
        HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);      
        for(index = 0; index< 6; index++)
                pHalData->PowerIndex_backup[index] = PlatformEFIORead1Byte(Adapter, Power_Index_REG[index]);
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)  
-       PADAPTER        Adapter = pDM_Odm->Adapter;
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);
-       struct dm_priv  *pdmpriv = &pHalData->dmpriv;
-       for(index = 0; index< 6; index++)
-               pdmpriv->PowerIndex_backup[index] = rtw_read8(Adapter, Power_Index_REG[index]);
+       
+       \r
 #endif
 #endif
 }
@@ -125,10 +94,8 @@ odm_DynamicTxPowerRestorePowerIndex(
 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
        for(index = 0; index< 6; index++)
                PlatformEFIOWrite1Byte(Adapter, Power_Index_REG[index], pHalData->PowerIndex_backup[index]);
-#elif(DM_ODM_SUPPORT_TYPE == ODM_CE)   
-       struct dm_priv  *pdmpriv = &pHalData->dmpriv;
-       for(index = 0; index< 6; index++)
-               rtw_write8(Adapter, Power_Index_REG[index], pdmpriv->PowerIndex_backup[index]);
+
+\r
 #endif
 #endif
 }
@@ -249,8 +216,8 @@ odm_DynamicTxPowerAP(
        if(!priv->pshare->rf_ft_var.tx_pwr_ctrl)
                return;
        
-#if ((RTL8812E_SUPPORT==1) || (RTL8881A_SUPPORT==1))
-       if (pDM_Odm->SupportICType & (ODM_RTL8812 | ODM_RTL8881A))
+#if ((RTL8812E_SUPPORT==1) || (RTL8881A_SUPPORT==1) || (RTL8814A_SUPPORT==1))
+       if (pDM_Odm->SupportICType & (ODM_RTL8812 | ODM_RTL8881A | ODM_RTL8814A))
                pwr_thd = TX_POWER_NEAR_FIELD_THRESH_8812;
 #endif
 
@@ -294,6 +261,20 @@ odm_DynamicTxPowerAP(
                        }
                }
 #endif                 
+
+#ifdef CONFIG_WLAN_HAL_8814AE
+               if (GET_CHIP_VER(priv) == VERSION_8814A) {
+                       if (!disable_pwr_ctrl && (pDM_Odm->RSSI_Min != 0xff)) {\r
+                               if (pDM_Odm->RSSI_Min > pwr_thd)\r
+                                       RRSR_power_control_14(priv,  1);\r
+                               else if (pDM_Odm->RSSI_Min < (pwr_thd-8))\r
+                                       RRSR_power_control_14(priv,  0);\r
+                       } else {
+                                       RRSR_power_control_14(priv,  0);\r
+                       }
+               }
+#endif         
+
        }
 //#endif       
 
@@ -424,129 +405,9 @@ odm_DynamicTxPower_92C(
        pHalData->LastDTPLvl = pHalData->DynamicTxHighPowerLvl;
 
        
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
-
-       #if (RTL8192C_SUPPORT==1) 
-       PADAPTER Adapter = pDM_Odm->Adapter;
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);
-       struct dm_priv  *pdmpriv = &pHalData->dmpriv;
-       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);
-       struct mlme_ext_priv    *pmlmeext = &Adapter->mlmeextpriv;
-       int     UndecoratedSmoothedPWDB;
 
-       if(!pdmpriv->bDynamicTxPowerEnable)
-               return;
 
-#ifdef CONFIG_INTEL_PROXIM
-       if(Adapter->proximity.proxim_on== _TRUE){
-               struct proximity_priv *prox_priv=Adapter->proximity.proximity_priv;
-               // Intel set fixed tx power 
-               printk("\n %s  Adapter->proximity.proxim_on=%d prox_priv->proxim_modeinfo->power_output=%d \n",__FUNCTION__,Adapter->proximity.proxim_on,prox_priv->proxim_modeinfo->power_output);
-               if(prox_priv!=NULL){
-                       if(prox_priv->proxim_modeinfo->power_output> 0) 
-                       {
-                               switch(prox_priv->proxim_modeinfo->power_output)
-                               {
-                                       case 1:
-                                               pdmpriv->DynamicTxHighPowerLvl  = TxHighPwrLevel_100;
-                                               printk("TxHighPwrLevel_100\n");
-                                               break;
-                                       case 2:
-                                               pdmpriv->DynamicTxHighPowerLvl  = TxHighPwrLevel_70;
-                                               printk("TxHighPwrLevel_70\n");
-                                               break;
-                                       case 3:
-                                               pdmpriv->DynamicTxHighPowerLvl  = TxHighPwrLevel_50;
-                                               printk("TxHighPwrLevel_50\n");
-                                               break;
-                                       case 4:
-                                               pdmpriv->DynamicTxHighPowerLvl  = TxHighPwrLevel_35;
-                                               printk("TxHighPwrLevel_35\n");
-                                               break;
-                                       case 5:
-                                               pdmpriv->DynamicTxHighPowerLvl  = TxHighPwrLevel_15;
-                                               printk("TxHighPwrLevel_15\n");
-                                               break;
-                                       default:
-                                               pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_100;
-                                               printk("TxHighPwrLevel_100\n");
-                                               break;
-                               }               
-                       }
-               }
-       }
-       else
-#endif 
-       {
-               // STA not connected and AP not connected
-               if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) &&   
-                       (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0))
-               {
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("Not connected to any \n"));
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-
-                       //the LastDTPlvl should reset when disconnect, 
-                       //otherwise the tx power level wouldn't change when disconnect and connect again.
-                       // Maddest 20091220.
-                       pdmpriv->LastDTPLvl=TxHighPwrLevel_Normal;
-                       return;
-               }
-               
-               if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)       // Default port
-               {
-               #if 0
-                       //todo: AP Mode
-                       if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) ||
-                              (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE))
-                       {
-                               UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-                               //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Client PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
-                       }
-                       else
-                       {
-                               UndecoratedSmoothedPWDB = pdmpriv->UndecoratedSmoothedPWDB;
-                               //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("STA Default Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
-                       }
-               #else
-               UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;     
-               #endif
-               }
-               else // associated entry pwdb
-               {       
-                       UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Ext Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
-               }
-                       
-               if(UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL2)
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x0)\n"));
-               }
-               else if((UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL2-3)) &&
-                       (UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL1) )
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x10)\n"));
-               }
-               else if(UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL1-5))
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Normal\n"));
-               }
-       }
-       if( (pdmpriv->DynamicTxHighPowerLvl != pdmpriv->LastDTPLvl) )
-       {
-               PHY_SetTxPowerLevel8192C(Adapter, pHalData->CurrentChannel);
-               if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Normal) // HP1 -> Normal  or HP2 -> Normal
-                       odm_DynamicTxPowerRestorePowerIndex(pDM_Odm);
-               else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level1)
-                       odm_DynamicTxPowerWritePowerIndex(pDM_Odm, 0x14);
-               else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level2)
-                       odm_DynamicTxPowerWritePowerIndex(pDM_Odm, 0x10);
-       }
-       pdmpriv->LastDTPLvl = pdmpriv->DynamicTxHighPowerLvl;
-       #endif
-#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
+#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
 
 }
 
@@ -556,6 +417,7 @@ odm_DynamicTxPower_92D(
        IN              PVOID                                   pDM_VOID\r
        )
 {
+#if (RTL8192D_SUPPORT==1)
        PDM_ODM_T               pDM_Odm = (PDM_ODM_T)pDM_VOID;\r
 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
        PADAPTER Adapter = pDM_Odm->Adapter;
@@ -716,167 +578,9 @@ odm_DynamicTxPower_92D(
 
                }
        pHalData->LastDTPLvl = pHalData->DynamicTxHighPowerLvl;
-#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
-#if (RTL8192D_SUPPORT==1) 
-       PADAPTER Adapter = pDM_Odm->Adapter;
-       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);
-       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);
-
-       struct dm_priv  *pdmpriv = &pHalData->dmpriv;
-       DM_ODM_T                *podmpriv = &pHalData->odmpriv;
-       int     UndecoratedSmoothedPWDB;
-       #if (RTL8192D_EASY_SMART_CONCURRENT == 1)
-       PADAPTER        BuddyAdapter = Adapter->BuddyAdapter;
-       BOOLEAN         bGetValueFromBuddyAdapter = DualMacGetParameterFromBuddyAdapter(Adapter);
-       u8              HighPowerLvlBackForMac0 = TxHighPwrLevel_Level1;
-       #endif
-
-       // If dynamic high power is disabled.
-       if( (pdmpriv->bDynamicTxPowerEnable != _TRUE) ||
-               (!(podmpriv->SupportAbility& ODM_BB_DYNAMIC_TXPWR)) )
-       {
-               pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-               return;
-       }
 
-       // STA not connected and AP not connected
-       if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) &&   
-               (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0))
-       {
-               //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("Not connected to any \n"));
-               pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-               //the LastDTPlvl should reset when disconnect, 
-               //otherwise the tx power level wouldn't change when disconnect and connect again.
-               // Maddest 20091220.
-               pdmpriv->LastDTPLvl=TxHighPwrLevel_Normal;
-               return;
-       }
-               
-       if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)       // Default port
-       {
-       #if 0
-               //todo: AP Mode
-               if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) ||
-              (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE))
-               {
-                       UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Client PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
-               }
-               else
-               {
-                       UndecoratedSmoothedPWDB = pdmpriv->UndecoratedSmoothedPWDB;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("STA Default Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
-               }
-       #else
-       UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-       #endif
-       }
-       else // associated entry pwdb
-       {       
-               UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB;
-               //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("AP Ext Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB));
-       }
-#if TX_POWER_FOR_5G_BAND == 1
-       if(pHalData->CurrentBandType92D == BAND_ON_5G){
-               if(UndecoratedSmoothedPWDB >= 0x33)
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("5G:TxHighPwrLevel_Level2 (TxPwr=0x0)\n"));
-               }
-               else if((UndecoratedSmoothedPWDB <0x33) &&
-                       (UndecoratedSmoothedPWDB >= 0x2b) )
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("5G:TxHighPwrLevel_Level1 (TxPwr=0x10)\n"));
-               }
-               else if(UndecoratedSmoothedPWDB < 0x2b)
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("5G:TxHighPwrLevel_Normal\n"));
-               }
-       }
-       else
-#endif
-       {
-               if(UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL2)
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x0)\n"));
-               }
-               else if((UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL2-3)) &&
-                       (UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL1) )
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x10)\n"));
-               }
-               else if(UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL1-5))
-               {
-                       pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal;
-                       //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Normal\n"));
-               }
-       }
-#if (RTL8192D_EASY_SMART_CONCURRENT == 1)
-       if(bGetValueFromBuddyAdapter)
-       {
-               //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() mac 0 for mac 1 \n"));
-               if(Adapter->DualMacDMSPControl.bChangeTxHighPowerLvlForAnotherMacOfDMSP)
-               {
-                       //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() change value \n"));
-                       HighPowerLvlBackForMac0 = pHalData->DynamicTxHighPowerLvl;
-                       pHalData->DynamicTxHighPowerLvl = Adapter->DualMacDMSPControl.CurTxHighLvlForAnotherMacOfDMSP;
-                       PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
-                       pHalData->DynamicTxHighPowerLvl = HighPowerLvlBackForMac0;
-                       Adapter->DualMacDMSPControl.bChangeTxHighPowerLvlForAnotherMacOfDMSP = _FALSE;
-               }                                               
-       }
-#endif
-
-       if( (pdmpriv->DynamicTxHighPowerLvl != pdmpriv->LastDTPLvl) )
-       {
-               //ODM_RT_TRACE(pDM_Odm,COMP_HIPWR, DBG_LOUD, ("PHY_SetTxPowerLevel8192S() Channel = %d \n" , pHalData->CurrentChannel));
-#if (RTL8192D_EASY_SMART_CONCURRENT == 1)
-               if(BuddyAdapter == NULL)
-               {
-                       //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() BuddyAdapter == NULL case \n"));
-                       if(!Adapter->bSlaveOfDMSP)
-                       {
-                               PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
-                       }
-               }
-               else
-               {
-                       if(pHalData->MacPhyMode92D == DUALMAC_SINGLEPHY)
-                       {
-                               //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() BuddyAdapter DMSP \n"));
-                               if(Adapter->bSlaveOfDMSP)
-                               {
-                                       //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() bslave case  \n"));
-                                       BuddyAdapter->DualMacDMSPControl.bChangeTxHighPowerLvlForAnotherMacOfDMSP = _TRUE;
-                                       BuddyAdapter->DualMacDMSPControl.CurTxHighLvlForAnotherMacOfDMSP = pHalData->DynamicTxHighPowerLvl;
-                               }
-                               else
-                               {
-                                       //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() master case  \n"));                                     
-                                       if(!bGetValueFromBuddyAdapter)
-                                       {
-                                               //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() mac 0 for mac 0 \n"));
-                                               PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               //ODM_RT_TRACE(pDM_Odm,COMP_MLME,DBG_LOUD,("dm_DynamicTxPower() BuddyAdapter DMDP\n"));
-                               PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
-                       }
-               }
-#else
-               PHY_SetTxPowerLevel8192D(Adapter, pHalData->CurrentChannel);
+\r
+#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
 #endif
-       }
-       pdmpriv->LastDTPLvl = pdmpriv->DynamicTxHighPowerLvl;
-#endif 
-#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
-
 }
 \r