aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2012-10-25 14:46:30 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-10-30 16:17:53 -0400
commit0bd899e76476e0134f7289a003090165adea2611 (patch)
tree44a1e853afa302a3ce885a51844db2730f97d31a /drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
parentab3d59d265e772e734c36fe738809cb1a910f566 (diff)
rtlwifi: rtl8192c: rtl8192ce: Add support for B-CUT version of RTL8188CE
Realtek devices with designation RTL8188CE-VL have the so-called B-cut of the wireless chip. This patch adds the special programming needed by these devices. In addition, a variable that was static has been moved into the private data area as it is now needed in two different routines. This change also fixes a minor bug that would be present if a system had more than one RTL81{88,92}CE devices. Other drivers in the rtlwifi family had already made this change, thus the variable already exists in the private data structure. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Anisse Astier <anisse@astier.eu> Cc: Li Chaoming <chaoming_li@realsil.com.cn> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c')
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
index cdcad7d9f15e..6ae2268e0e54 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
@@ -724,6 +724,26 @@ u8 rtl92c_phy_sw_chnl(struct ieee80211_hw *hw)
724} 724}
725EXPORT_SYMBOL(rtl92c_phy_sw_chnl); 725EXPORT_SYMBOL(rtl92c_phy_sw_chnl);
726 726
727static void _rtl92c_phy_sw_rf_setting(struct ieee80211_hw *hw, u8 channel)
728{
729 struct rtl_priv *rtlpriv = rtl_priv(hw);
730 struct rtl_phy *rtlphy = &(rtlpriv->phy);
731 struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
732
733 if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {
734 if (channel == 6 && rtlphy->current_chan_bw ==
735 HT_CHANNEL_WIDTH_20)
736 rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD,
737 0x00255);
738 else{
739 u32 backupRF0x1A = (u32)rtl_get_rfreg(hw, RF90_PATH_A,
740 RF_RX_G1, RFREG_OFFSET_MASK);
741 rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD,
742 backupRF0x1A);
743 }
744 }
745}
746
727static bool _rtl92c_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable, 747static bool _rtl92c_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable,
728 u32 cmdtableidx, u32 cmdtablesz, 748 u32 cmdtableidx, u32 cmdtablesz,
729 enum swchnlcmd_id cmdid, 749 enum swchnlcmd_id cmdid,
@@ -837,6 +857,7 @@ bool _rtl92c_phy_sw_chnl_step_by_step(struct ieee80211_hw *hw,
837 currentcmd->para1, 857 currentcmd->para1,
838 RFREG_OFFSET_MASK, 858 RFREG_OFFSET_MASK,
839 rtlphy->rfreg_chnlval[rfpath]); 859 rtlphy->rfreg_chnlval[rfpath]);
860 _rtl92c_phy_sw_rf_setting(hw, channel);
840 } 861 }
841 break; 862 break;
842 default: 863 default: