rtw88: 8822c: fix lc calibration timing

[ Upstream commit 05684fd583e1acc34dddea283838fbfbed4904a0 ]

Before this patch, we use value from 2 seconds ago to decide
whether we should do lc calibration.
Although this don't happen frequently, fix flow to the way it should be.

Fixes: 7ae7784ec2a8 ("rtw88: 8822c: add LC calibration for RTL8822C")
Signed-off-by: Po-Hao Huang <phhuang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210426013252.5665-3-pkshih@realtek.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Po-Hao Huang
2021-04-26 09:32:52 +08:00
committed by Greg Kroah-Hartman
parent db2386fa43
commit 6cd23b5f40

View File

@@ -3510,26 +3510,28 @@ static void rtw8822c_pwrtrack_set(struct rtw_dev *rtwdev, u8 rf_path)
} }
} }
static void rtw8822c_pwr_track_path(struct rtw_dev *rtwdev, static void rtw8822c_pwr_track_stats(struct rtw_dev *rtwdev, u8 path)
struct rtw_swing_table *swing_table,
u8 path)
{ {
struct rtw_dm_info *dm_info = &rtwdev->dm_info; u8 thermal_value;
u8 thermal_value, delta;
if (rtwdev->efuse.thermal_meter[path] == 0xff) if (rtwdev->efuse.thermal_meter[path] == 0xff)
return; return;
thermal_value = rtw_read_rf(rtwdev, path, RF_T_METER, 0x7e); thermal_value = rtw_read_rf(rtwdev, path, RF_T_METER, 0x7e);
rtw_phy_pwrtrack_avg(rtwdev, thermal_value, path); rtw_phy_pwrtrack_avg(rtwdev, thermal_value, path);
}
static void rtw8822c_pwr_track_path(struct rtw_dev *rtwdev,
struct rtw_swing_table *swing_table,
u8 path)
{
struct rtw_dm_info *dm_info = &rtwdev->dm_info;
u8 delta;
delta = rtw_phy_pwrtrack_get_delta(rtwdev, path); delta = rtw_phy_pwrtrack_get_delta(rtwdev, path);
dm_info->delta_power_index[path] = dm_info->delta_power_index[path] =
rtw_phy_pwrtrack_get_pwridx(rtwdev, swing_table, path, path, rtw_phy_pwrtrack_get_pwridx(rtwdev, swing_table, path, path,
delta); delta);
rtw8822c_pwrtrack_set(rtwdev, path); rtw8822c_pwrtrack_set(rtwdev, path);
} }
@@ -3540,12 +3542,12 @@ static void __rtw8822c_pwr_track(struct rtw_dev *rtwdev)
rtw_phy_config_swing_table(rtwdev, &swing_table); rtw_phy_config_swing_table(rtwdev, &swing_table);
for (i = 0; i < rtwdev->hal.rf_path_num; i++)
rtw8822c_pwr_track_stats(rtwdev, i);
if (rtw_phy_pwrtrack_need_lck(rtwdev)) if (rtw_phy_pwrtrack_need_lck(rtwdev))
rtw8822c_do_lck(rtwdev); rtw8822c_do_lck(rtwdev);
for (i = 0; i < rtwdev->hal.rf_path_num; i++) for (i = 0; i < rtwdev->hal.rf_path_num; i++)
rtw8822c_pwr_track_path(rtwdev, &swing_table, i); rtw8822c_pwr_track_path(rtwdev, &swing_table, i);
} }
static void rtw8822c_pwr_track(struct rtw_dev *rtwdev) static void rtw8822c_pwr_track(struct rtw_dev *rtwdev)