diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8192cu/phy.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/phy.c | 77 | 
1 files changed, 16 insertions, 61 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c b/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c index 34e56308301..9831ff1128c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c @@ -30,6 +30,7 @@  #include "../wifi.h"  #include "../pci.h"  #include "../ps.h" +#include "../core.h"  #include "reg.h"  #include "def.h"  #include "phy.h" @@ -120,6 +121,7 @@ bool rtl92cu_phy_bb_config(struct ieee80211_hw *hw)  	struct rtl_priv *rtlpriv = rtl_priv(hw);  	struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));  	u16 regval; +	u32 regval32;  	u8 b_reg_hwparafile = 1;  	_rtl92c_phy_init_bb_rf_register_definition(hw); @@ -135,8 +137,11 @@ bool rtl92cu_phy_bb_config(struct ieee80211_hw *hw)  	} else if (IS_HARDWARE_TYPE_8192CU(rtlhal)) {  		rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, FEN_USBA | FEN_USBD |  			       FEN_BB_GLB_RSTn | FEN_BBRSTB); -		rtl_write_byte(rtlpriv, REG_LDOHCI12_CTRL, 0x0f);  	} +	regval32 = rtl_read_dword(rtlpriv, 0x87c); +	rtl_write_dword(rtlpriv, 0x87c, regval32 & (~BIT(31))); +	if (IS_HARDWARE_TYPE_8192CU(rtlhal)) +		rtl_write_byte(rtlpriv, REG_LDOHCI12_CTRL, 0x0f);  	rtl_write_byte(rtlpriv, REG_AFE_XTAL_CTRL + 1, 0x80);  	if (b_reg_hwparafile == 1)  		rtstatus = _rtl92c_phy_bb8192c_config_parafile(hw); @@ -184,18 +189,7 @@ bool _rtl92cu_phy_config_bb_with_headerfile(struct ieee80211_hw *hw,  	}  	if (configtype == BASEBAND_CONFIG_PHY_REG) {  		for (i = 0; i < phy_reg_arraylen; i = i + 2) { -			if (phy_regarray_table[i] == 0xfe) -				mdelay(50); -			else if (phy_regarray_table[i] == 0xfd) -				mdelay(5); -			else if (phy_regarray_table[i] == 0xfc) -				mdelay(1); -			else if (phy_regarray_table[i] == 0xfb) -				udelay(50); -			else if (phy_regarray_table[i] == 0xfa) -				udelay(5); -			else if (phy_regarray_table[i] == 0xf9) -				udelay(1); +			rtl_addr_delay(phy_regarray_table[i]);  			rtl_set_bbreg(hw, phy_regarray_table[i], MASKDWORD,  				      phy_regarray_table[i + 1]);  			udelay(1); @@ -232,18 +226,7 @@ bool _rtl92cu_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw,  	phy_regarray_table_pg = rtlphy->hwparam_tables[PHY_REG_PG].pdata;  	if (configtype == BASEBAND_CONFIG_PHY_REG) {  		for (i = 0; i < phy_regarray_pg_len; i = i + 3) { -			if (phy_regarray_table_pg[i] == 0xfe) -				mdelay(50); -			else if (phy_regarray_table_pg[i] == 0xfd) -				mdelay(5); -			else if (phy_regarray_table_pg[i] == 0xfc) -				mdelay(1); -			else if (phy_regarray_table_pg[i] == 0xfb) -				udelay(50); -			else if (phy_regarray_table_pg[i] == 0xfa) -				udelay(5); -			else if (phy_regarray_table_pg[i] == 0xf9) -				udelay(1); +			rtl_addr_delay(phy_regarray_table_pg[i]);  			_rtl92c_store_pwrIndex_diffrate_offset(hw,  						  phy_regarray_table_pg[i],  						  phy_regarray_table_pg[i + 1], @@ -290,46 +273,16 @@ bool rtl92cu_phy_config_rf_with_headerfile(struct ieee80211_hw *hw,  	switch (rfpath) {  	case RF90_PATH_A:  		for (i = 0; i < radioa_arraylen; i = i + 2) { -			if (radioa_array_table[i] == 0xfe) -				mdelay(50); -			else if (radioa_array_table[i] == 0xfd) -				mdelay(5); -			else if (radioa_array_table[i] == 0xfc) -				mdelay(1); -			else if (radioa_array_table[i] == 0xfb) -				udelay(50); -			else if (radioa_array_table[i] == 0xfa) -				udelay(5); -			else if (radioa_array_table[i] == 0xf9) -				udelay(1); -			else { -				rtl_set_rfreg(hw, rfpath, radioa_array_table[i], -					      RFREG_OFFSET_MASK, -					      radioa_array_table[i + 1]); -				udelay(1); -			} +			rtl_rfreg_delay(hw, rfpath, radioa_array_table[i], +					RFREG_OFFSET_MASK, +					radioa_array_table[i + 1]);  		}  		break;  	case RF90_PATH_B:  		for (i = 0; i < radiob_arraylen; i = i + 2) { -			if (radiob_array_table[i] == 0xfe) { -				mdelay(50); -			} else if (radiob_array_table[i] == 0xfd) -				mdelay(5); -			else if (radiob_array_table[i] == 0xfc) -				mdelay(1); -			else if (radiob_array_table[i] == 0xfb) -				udelay(50); -			else if (radiob_array_table[i] == 0xfa) -				udelay(5); -			else if (radiob_array_table[i] == 0xf9) -				udelay(1); -			else { -				rtl_set_rfreg(hw, rfpath, radiob_array_table[i], -					      RFREG_OFFSET_MASK, -					      radiob_array_table[i + 1]); -				udelay(1); -			} +			rtl_rfreg_delay(hw, rfpath, radiob_array_table[i], +					RFREG_OFFSET_MASK, +					radiob_array_table[i + 1]);  		}  		break;  	case RF90_PATH_C: @@ -340,6 +293,8 @@ bool rtl92cu_phy_config_rf_with_headerfile(struct ieee80211_hw *hw,  		RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,  			 "switch case not processed\n");  		break; +	default: +		break;  	}  	return true;  }  | 
