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 | |
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>
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | 21 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 60 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 4 |
6 files changed, 85 insertions, 11 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: |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h index 2925094b2d91..3cfa1bb0f476 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h | |||
@@ -116,6 +116,9 @@ | |||
116 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) | 116 | LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12) |
117 | 117 | ||
118 | #define CHIP_VER_B BIT(4) | 118 | #define CHIP_VER_B BIT(4) |
119 | #define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3) | ||
120 | #define CHIP_BONDING_92C_1T2R 0x1 | ||
121 | #define RF_TYPE_1T2R BIT(1) | ||
119 | #define CHIP_92C_BITMASK BIT(0) | 122 | #define CHIP_92C_BITMASK BIT(0) |
120 | #define CHIP_UNKNOWN BIT(7) | 123 | #define CHIP_UNKNOWN BIT(7) |
121 | #define CHIP_92C_1T2R 0x03 | 124 | #define CHIP_92C_1T2R 0x03 |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c index 038c02c9afed..7dc7ac8e32b8 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | |||
@@ -896,7 +896,6 @@ int rtl92ce_hw_init(struct ieee80211_hw *hw) | |||
896 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 896 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
897 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 897 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
898 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); | 898 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); |
899 | static bool iqk_initialized; /* initialized to false */ | ||
900 | bool rtstatus = true; | 899 | bool rtstatus = true; |
901 | bool is92c; | 900 | bool is92c; |
902 | int err; | 901 | int err; |
@@ -921,9 +920,28 @@ int rtl92ce_hw_init(struct ieee80211_hw *hw) | |||
921 | 920 | ||
922 | rtlhal->last_hmeboxnum = 0; | 921 | rtlhal->last_hmeboxnum = 0; |
923 | rtl92c_phy_mac_config(hw); | 922 | rtl92c_phy_mac_config(hw); |
923 | /* because last function modify RCR, so we update | ||
924 | * rcr var here, or TP will unstable for receive_config | ||
925 | * is wrong, RX RCR_ACRC32 will cause TP unstabel & Rx | ||
926 | * RCR_APP_ICV will cause mac80211 unassoc for cisco 1252*/ | ||
927 | rtlpci->receive_config = rtl_read_dword(rtlpriv, REG_RCR); | ||
928 | rtlpci->receive_config &= ~(RCR_ACRC32 | RCR_AICV); | ||
929 | rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config); | ||
924 | rtl92c_phy_bb_config(hw); | 930 | rtl92c_phy_bb_config(hw); |
925 | rtlphy->rf_mode = RF_OP_BY_SW_3WIRE; | 931 | rtlphy->rf_mode = RF_OP_BY_SW_3WIRE; |
926 | rtl92c_phy_rf_config(hw); | 932 | rtl92c_phy_rf_config(hw); |
933 | if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && | ||
934 | !IS_92C_SERIAL(rtlhal->version)) { | ||
935 | rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD, 0x30255); | ||
936 | rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G2, MASKDWORD, 0x50a00); | ||
937 | } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) { | ||
938 | rtl_set_rfreg(hw, RF90_PATH_A, 0x0C, MASKDWORD, 0x894AE); | ||
939 | rtl_set_rfreg(hw, RF90_PATH_A, 0x0A, MASKDWORD, 0x1AF31); | ||
940 | rtl_set_rfreg(hw, RF90_PATH_A, RF_IPA, MASKDWORD, 0x8F425); | ||
941 | rtl_set_rfreg(hw, RF90_PATH_A, RF_SYN_G2, MASKDWORD, 0x4F200); | ||
942 | rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK1, MASKDWORD, 0x44053); | ||
943 | rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK2, MASKDWORD, 0x80201); | ||
944 | } | ||
927 | rtlphy->rfreg_chnlval[0] = rtl_get_rfreg(hw, (enum radio_path)0, | 945 | rtlphy->rfreg_chnlval[0] = rtl_get_rfreg(hw, (enum radio_path)0, |
928 | RF_CHNLBW, RFREG_OFFSET_MASK); | 946 | RF_CHNLBW, RFREG_OFFSET_MASK); |
929 | rtlphy->rfreg_chnlval[1] = rtl_get_rfreg(hw, (enum radio_path)1, | 947 | rtlphy->rfreg_chnlval[1] = rtl_get_rfreg(hw, (enum radio_path)1, |
@@ -945,11 +963,11 @@ int rtl92ce_hw_init(struct ieee80211_hw *hw) | |||
945 | 963 | ||
946 | if (ppsc->rfpwr_state == ERFON) { | 964 | if (ppsc->rfpwr_state == ERFON) { |
947 | rtl92c_phy_set_rfpath_switch(hw, 1); | 965 | rtl92c_phy_set_rfpath_switch(hw, 1); |
948 | if (iqk_initialized) { | 966 | if (rtlphy->iqk_initialized) { |
949 | rtl92c_phy_iq_calibrate(hw, true); | 967 | rtl92c_phy_iq_calibrate(hw, true); |
950 | } else { | 968 | } else { |
951 | rtl92c_phy_iq_calibrate(hw, false); | 969 | rtl92c_phy_iq_calibrate(hw, false); |
952 | iqk_initialized = true; | 970 | rtlphy->iqk_initialized = true; |
953 | } | 971 | } |
954 | 972 | ||
955 | rtl92c_dm_check_txpower_tracking(hw); | 973 | rtl92c_dm_check_txpower_tracking(hw); |
@@ -1004,6 +1022,13 @@ static enum version_8192c _rtl92ce_read_chip_version(struct ieee80211_hw *hw) | |||
1004 | ? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) | | 1022 | ? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) | |
1005 | CHIP_VENDOR_UMC)); | 1023 | CHIP_VENDOR_UMC)); |
1006 | } | 1024 | } |
1025 | if (IS_92C_SERIAL(version)) { | ||
1026 | value32 = rtl_read_dword(rtlpriv, REG_HPON_FSM); | ||
1027 | version = (enum version_8192c)(version | | ||
1028 | ((CHIP_BONDING_IDENTIFIER(value32) | ||
1029 | == CHIP_BONDING_92C_1T2R) ? | ||
1030 | RF_TYPE_1T2R : 0)); | ||
1031 | } | ||
1007 | } | 1032 | } |
1008 | 1033 | ||
1009 | switch (version) { | 1034 | switch (version) { |
@@ -1019,12 +1044,30 @@ static enum version_8192c _rtl92ce_read_chip_version(struct ieee80211_hw *hw) | |||
1019 | case VERSION_A_CHIP_88C: | 1044 | case VERSION_A_CHIP_88C: |
1020 | versionid = "A_CHIP_88C"; | 1045 | versionid = "A_CHIP_88C"; |
1021 | break; | 1046 | break; |
1047 | case VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT: | ||
1048 | versionid = "A_CUT_92C_1T2R"; | ||
1049 | break; | ||
1050 | case VERSION_NORMAL_UMC_CHIP_92C_A_CUT: | ||
1051 | versionid = "A_CUT_92C"; | ||
1052 | break; | ||
1053 | case VERSION_NORMAL_UMC_CHIP_88C_A_CUT: | ||
1054 | versionid = "A_CUT_88C"; | ||
1055 | break; | ||
1056 | case VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT: | ||
1057 | versionid = "B_CUT_92C_1T2R"; | ||
1058 | break; | ||
1059 | case VERSION_NORMAL_UMC_CHIP_92C_B_CUT: | ||
1060 | versionid = "B_CUT_92C"; | ||
1061 | break; | ||
1062 | case VERSION_NORMAL_UMC_CHIP_88C_B_CUT: | ||
1063 | versionid = "B_CUT_88C"; | ||
1064 | break; | ||
1022 | default: | 1065 | default: |
1023 | versionid = "Unknown. Bug?"; | 1066 | versionid = "Unknown. Bug?"; |
1024 | break; | 1067 | break; |
1025 | } | 1068 | } |
1026 | 1069 | ||
1027 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 1070 | RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG, |
1028 | "Chip Version ID: %s\n", versionid); | 1071 | "Chip Version ID: %s\n", versionid); |
1029 | 1072 | ||
1030 | switch (version & 0x3) { | 1073 | switch (version & 0x3) { |
@@ -1197,6 +1240,7 @@ static void _rtl92ce_poweroff_adapter(struct ieee80211_hw *hw) | |||
1197 | { | 1240 | { |
1198 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1241 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1199 | struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); | 1242 | struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw); |
1243 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); | ||
1200 | u8 u1b_tmp; | 1244 | u8 u1b_tmp; |
1201 | u32 u4b_tmp; | 1245 | u32 u4b_tmp; |
1202 | 1246 | ||
@@ -1225,7 +1269,8 @@ static void _rtl92ce_poweroff_adapter(struct ieee80211_hw *hw) | |||
1225 | rtl_write_word(rtlpriv, REG_GPIO_IO_SEL, 0x0790); | 1269 | rtl_write_word(rtlpriv, REG_GPIO_IO_SEL, 0x0790); |
1226 | rtl_write_word(rtlpriv, REG_LEDCFG0, 0x8080); | 1270 | rtl_write_word(rtlpriv, REG_LEDCFG0, 0x8080); |
1227 | rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL, 0x80); | 1271 | rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL, 0x80); |
1228 | rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x23); | 1272 | if (!IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) |
1273 | rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x23); | ||
1229 | if (rtlpcipriv->bt_coexist.bt_coexistence) { | 1274 | if (rtlpcipriv->bt_coexist.bt_coexistence) { |
1230 | u4b_tmp = rtl_read_dword(rtlpriv, REG_AFE_XTAL_CTRL); | 1275 | u4b_tmp = rtl_read_dword(rtlpriv, REG_AFE_XTAL_CTRL); |
1231 | u4b_tmp |= 0x03824800; | 1276 | u4b_tmp |= 0x03824800; |
@@ -1254,6 +1299,9 @@ void rtl92ce_card_disable(struct ieee80211_hw *hw) | |||
1254 | rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF); | 1299 | rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF); |
1255 | RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); | 1300 | RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC); |
1256 | _rtl92ce_poweroff_adapter(hw); | 1301 | _rtl92ce_poweroff_adapter(hw); |
1302 | |||
1303 | /* after power off we should do iqk again */ | ||
1304 | rtlpriv->phy.iqk_initialized = false; | ||
1257 | } | 1305 | } |
1258 | 1306 | ||
1259 | void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw, | 1307 | void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw, |
@@ -1912,6 +1960,8 @@ static void rtl92ce_update_hal_rate_mask(struct ieee80211_hw *hw, | |||
1912 | ratr_bitmap &= 0x0f0ff0ff; | 1960 | ratr_bitmap &= 0x0f0ff0ff; |
1913 | break; | 1961 | break; |
1914 | } | 1962 | } |
1963 | sta_entry->ratr_index = ratr_index; | ||
1964 | |||
1915 | RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, | 1965 | RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, |
1916 | "ratr_bitmap :%x\n", ratr_bitmap); | 1966 | "ratr_bitmap :%x\n", ratr_bitmap); |
1917 | *(u32 *)&rate_mask = (ratr_bitmap & 0x0fffffff) | | 1967 | *(u32 *)&rate_mask = (ratr_bitmap & 0x0fffffff) | |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c b/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c index 88deae67cc14..73262ca3864b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | |||
@@ -82,6 +82,8 @@ bool rtl92c_phy_mac_config(struct ieee80211_hw *hw) | |||
82 | 82 | ||
83 | if (is92c) | 83 | if (is92c) |
84 | rtl_write_byte(rtlpriv, 0x14, 0x71); | 84 | rtl_write_byte(rtlpriv, 0x14, 0x71); |
85 | else | ||
86 | rtl_write_byte(rtlpriv, 0x04CA, 0x0A); | ||
85 | return rtstatus; | 87 | return rtstatus; |
86 | } | 88 | } |
87 | 89 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c index ea2e1bd847c8..60451eea4d82 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | |||
@@ -162,12 +162,10 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw) | |||
162 | 162 | ||
163 | /* request fw */ | 163 | /* request fw */ |
164 | if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && | 164 | if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && |
165 | !IS_92C_SERIAL(rtlhal->version)) { | 165 | !IS_92C_SERIAL(rtlhal->version)) |
166 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin"; | 166 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin"; |
167 | } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) { | 167 | else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) |
168 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin"; | 168 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin"; |
169 | pr_info("****** This B_CUT device may not work with kernels 3.6 and earlier\n"); | ||
170 | } | ||
171 | 169 | ||
172 | rtlpriv->max_fw_size = 0x4000; | 170 | rtlpriv->max_fw_size = 0x4000; |
173 | pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); | 171 | pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c index 390d6d4fcaa0..b8a3c035a889 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | |||
@@ -127,11 +127,11 @@ static void _rtl92ce_query_rxphystatus(struct ieee80211_hw *hw, | |||
127 | { | 127 | { |
128 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 128 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
129 | struct phy_sts_cck_8192s_t *cck_buf; | 129 | struct phy_sts_cck_8192s_t *cck_buf; |
130 | struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv); | ||
130 | s8 rx_pwr_all = 0, rx_pwr[4]; | 131 | s8 rx_pwr_all = 0, rx_pwr[4]; |
131 | u8 evm, pwdb_all, rf_rx_num = 0; | 132 | u8 evm, pwdb_all, rf_rx_num = 0; |
132 | u8 i, max_spatial_stream; | 133 | u8 i, max_spatial_stream; |
133 | u32 rssi, total_rssi = 0; | 134 | u32 rssi, total_rssi = 0; |
134 | bool in_powersavemode = false; | ||
135 | bool is_cck_rate; | 135 | bool is_cck_rate; |
136 | 136 | ||
137 | is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc); | 137 | is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc); |
@@ -147,7 +147,7 @@ static void _rtl92ce_query_rxphystatus(struct ieee80211_hw *hw, | |||
147 | u8 report, cck_highpwr; | 147 | u8 report, cck_highpwr; |
148 | cck_buf = (struct phy_sts_cck_8192s_t *)p_drvinfo; | 148 | cck_buf = (struct phy_sts_cck_8192s_t *)p_drvinfo; |
149 | 149 | ||
150 | if (!in_powersavemode) | 150 | if (ppsc->rfpwr_state == ERFON) |
151 | cck_highpwr = (u8) rtl_get_bbreg(hw, | 151 | cck_highpwr = (u8) rtl_get_bbreg(hw, |
152 | RFPGA0_XA_HSSIPARAMETER2, | 152 | RFPGA0_XA_HSSIPARAMETER2, |
153 | BIT(9)); | 153 | BIT(9)); |