mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
rtlwifi: Bring _rtl92c_phy_iq_calibrate() in line with the vendor driver
Bring _rtl92c_phy_iq_calibrate() in line with the vendor driver function _PHY_IQCalibrate(). Also fix incorrect initialisation for rtl8192cu. Signed-of-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
796e453436
commit
d3af1ce138
@ -1147,6 +1147,12 @@ static void _rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw,
|
||||
0x522, 0x550, 0x551, 0x040
|
||||
};
|
||||
|
||||
u32 iqk_bb_reg_92C[9] = {
|
||||
0xc04, 0xc08, 0x874, 0xb68,
|
||||
0xb6c, 0x870, 0x860, 0x864,
|
||||
0x800
|
||||
};
|
||||
|
||||
const u32 retrycount = 2;
|
||||
|
||||
if (t == 0) {
|
||||
@ -1157,6 +1163,8 @@ static void _rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw,
|
||||
rtlphy->adda_backup, 16);
|
||||
_rtl92c_phy_save_mac_registers(hw, iqk_mac_reg,
|
||||
rtlphy->iqk_mac_backup);
|
||||
_rtl92c_phy_save_adda_registers(hw, iqk_bb_reg_92C,
|
||||
rtlphy->iqk_bb_backup, 9);
|
||||
}
|
||||
_rtl92c_phy_path_adda_on(hw, adda_reg, true, is2t);
|
||||
if (t == 0) {
|
||||
@ -1167,14 +1175,18 @@ static void _rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw,
|
||||
|
||||
if (!rtlphy->rfpi_enable)
|
||||
_rtl92c_phy_pi_mode_switch(hw, true);
|
||||
if (t == 0) {
|
||||
rtlphy->reg_c04 = rtl_get_bbreg(hw, 0xc04, MASKDWORD);
|
||||
rtlphy->reg_c08 = rtl_get_bbreg(hw, 0xc08, MASKDWORD);
|
||||
rtlphy->reg_874 = rtl_get_bbreg(hw, 0x874, MASKDWORD);
|
||||
}
|
||||
|
||||
rtl_set_bbreg(hw, 0x800, BIT(24), 0x0);
|
||||
|
||||
rtl_set_bbreg(hw, 0xc04, MASKDWORD, 0x03a05600);
|
||||
rtl_set_bbreg(hw, 0xc08, MASKDWORD, 0x000800e4);
|
||||
rtl_set_bbreg(hw, 0x874, MASKDWORD, 0x22204000);
|
||||
|
||||
rtl_set_bbreg(hw, 0x870, BIT(10), 0x1);
|
||||
rtl_set_bbreg(hw, 0x870, BIT(26), 0x1);
|
||||
rtl_set_bbreg(hw, 0x860, BIT(10), 0x0);
|
||||
rtl_set_bbreg(hw, 0x864, BIT(10), 0x0);
|
||||
|
||||
if (is2t) {
|
||||
rtl_set_bbreg(hw, 0x840, MASKDWORD, 0x00010000);
|
||||
rtl_set_bbreg(hw, 0x844, MASKDWORD, 0x00010000);
|
||||
@ -1239,13 +1251,9 @@ static void _rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw,
|
||||
0x3FF0000) >> 16;
|
||||
}
|
||||
}
|
||||
rtl_set_bbreg(hw, 0xc04, MASKDWORD, rtlphy->reg_c04);
|
||||
rtl_set_bbreg(hw, 0x874, MASKDWORD, rtlphy->reg_874);
|
||||
rtl_set_bbreg(hw, 0xc08, MASKDWORD, rtlphy->reg_c08);
|
||||
|
||||
rtl_set_bbreg(hw, 0xe28, MASKDWORD, 0);
|
||||
rtl_set_bbreg(hw, 0x840, MASKDWORD, 0x00032ed3);
|
||||
if (is2t)
|
||||
rtl_set_bbreg(hw, 0x844, MASKDWORD, 0x00032ed3);
|
||||
|
||||
if (t != 0) {
|
||||
if (!rtlphy->rfpi_enable)
|
||||
_rtl92c_phy_pi_mode_switch(hw, false);
|
||||
@ -1253,6 +1261,15 @@ static void _rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw,
|
||||
rtlphy->adda_backup, 16);
|
||||
_rtl92c_phy_reload_mac_registers(hw, iqk_mac_reg,
|
||||
rtlphy->iqk_mac_backup);
|
||||
_rtl92c_phy_reload_adda_registers(hw, iqk_bb_reg_92C,
|
||||
rtlphy->iqk_bb_backup, 9);
|
||||
|
||||
rtl_set_bbreg(hw, 0x840, MASKDWORD, 0x00032ed3);
|
||||
if (is2t)
|
||||
rtl_set_bbreg(hw, 0x844, MASKDWORD, 0x00032ed3);
|
||||
|
||||
rtl_set_bbreg(hw, 0xe30, MASKDWORD, 0x01008c00);
|
||||
rtl_set_bbreg(hw, 0xe34, MASKDWORD, 0x01008c00);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1022,7 +1022,7 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
|
||||
if (ppsc->rfpwr_state == ERFON) {
|
||||
rtl92c_phy_set_rfpath_switch(hw, 1);
|
||||
if (iqk_initialized) {
|
||||
rtl92c_phy_iq_calibrate(hw, false);
|
||||
rtl92c_phy_iq_calibrate(hw, true);
|
||||
} else {
|
||||
rtl92c_phy_iq_calibrate(hw, false);
|
||||
iqk_initialized = true;
|
||||
|
Loading…
Reference in New Issue
Block a user