diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2012-10-25 14:46:30 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-10-30 16:17:53 -0400 |
commit | 0bd899e76476e0134f7289a003090165adea2611 (patch) | |
tree | 44a1e853afa302a3ce885a51844db2730f97d31a /drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | |
parent | ab3d59d265e772e734c36fe738809cb1a910f566 (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.c | 21 |
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 | } |
725 | EXPORT_SYMBOL(rtl92c_phy_sw_chnl); | 725 | EXPORT_SYMBOL(rtl92c_phy_sw_chnl); |
726 | 726 | ||
727 | static 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 | |||
727 | static bool _rtl92c_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable, | 747 | static 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: |