mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 03:24:19 +02:00
wifi: rtw89: phy: add chip_ops to calculate RX gain from efuse to support PS mode
In PS mode, it needs to restore RX gain settings while waking up. Add to get RX gain values from chip specific ops, and pass these data to firmware when going to enter PS mode. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20260117044157.2392958-2-pkshih@realtek.com
This commit is contained in:
parent
6070a44051
commit
32f6bf1872
|
|
@ -23,6 +23,7 @@ struct rtw89_efuse_block_cfg;
|
|||
struct rtw89_h2c_rf_tssi;
|
||||
struct rtw89_fw_txpwr_track_cfg;
|
||||
struct rtw89_phy_rfk_log_fmt;
|
||||
struct rtw89_phy_calc_efuse_gain;
|
||||
struct rtw89_debugfs;
|
||||
struct rtw89_regd_data;
|
||||
struct rtw89_wow_cam_info;
|
||||
|
|
@ -3822,6 +3823,11 @@ struct rtw89_chip_ops {
|
|||
s8 pw_ofst, enum rtw89_mac_idx mac_idx);
|
||||
void (*digital_pwr_comp)(struct rtw89_dev *rtwdev,
|
||||
enum rtw89_phy_idx phy_idx);
|
||||
void (*calc_rx_gain_normal)(struct rtw89_dev *rtwdev,
|
||||
const struct rtw89_chan *chan,
|
||||
enum rtw89_rf_path path,
|
||||
enum rtw89_phy_idx phy_idx,
|
||||
struct rtw89_phy_calc_efuse_gain *calc);
|
||||
int (*pwr_on_func)(struct rtw89_dev *rtwdev);
|
||||
int (*pwr_off_func)(struct rtw89_dev *rtwdev);
|
||||
void (*query_rxdesc)(struct rtw89_dev *rtwdev,
|
||||
|
|
@ -5887,6 +5893,12 @@ struct rtw89_phy_efuse_gain {
|
|||
s8 comp[RF_PATH_MAX][RTW89_SUBBAND_NR]; /* S(8, 0) */
|
||||
};
|
||||
|
||||
struct rtw89_phy_calc_efuse_gain {
|
||||
s8 cck_mean_gain_bias;
|
||||
s8 cck_rpl_ofst;
|
||||
s8 rssi_ofst;
|
||||
};
|
||||
|
||||
#define RTW89_MAX_PATTERN_NUM 18
|
||||
#define RTW89_MAX_PATTERN_MASK_SIZE 4
|
||||
#define RTW89_MAX_PATTERN_SIZE 128
|
||||
|
|
@ -7341,6 +7353,19 @@ static inline void rtw89_chip_digital_pwr_comp(struct rtw89_dev *rtwdev,
|
|||
chip->ops->digital_pwr_comp(rtwdev, phy_idx);
|
||||
}
|
||||
|
||||
static inline
|
||||
void rtw89_chip_calc_rx_gain_normal(struct rtw89_dev *rtwdev,
|
||||
const struct rtw89_chan *chan,
|
||||
enum rtw89_rf_path path,
|
||||
enum rtw89_phy_idx phy_idx,
|
||||
struct rtw89_phy_calc_efuse_gain *calc)
|
||||
{
|
||||
const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
|
||||
if (chip->ops->calc_rx_gain_normal)
|
||||
chip->ops->calc_rx_gain_normal(rtwdev, chan, path, phy_idx, calc);
|
||||
}
|
||||
|
||||
static inline void rtw89_load_txpwr_table(struct rtw89_dev *rtwdev,
|
||||
const struct rtw89_txpwr_table *tbl)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2530,6 +2530,7 @@ static const struct rtw89_chip_ops rtw8851b_chip_ops = {
|
|||
.cfg_txrx_path = rtw8851b_bb_cfg_txrx_path,
|
||||
.set_txpwr_ul_tb_offset = rtw8851b_set_txpwr_ul_tb_offset,
|
||||
.digital_pwr_comp = NULL,
|
||||
.calc_rx_gain_normal = NULL,
|
||||
.pwr_on_func = rtw8851b_pwr_on_func,
|
||||
.pwr_off_func = rtw8851b_pwr_off_func,
|
||||
.query_rxdesc = rtw89_core_query_rxdesc,
|
||||
|
|
|
|||
|
|
@ -2224,6 +2224,7 @@ static const struct rtw89_chip_ops rtw8852a_chip_ops = {
|
|||
.cfg_txrx_path = NULL,
|
||||
.set_txpwr_ul_tb_offset = rtw8852a_set_txpwr_ul_tb_offset,
|
||||
.digital_pwr_comp = NULL,
|
||||
.calc_rx_gain_normal = NULL,
|
||||
.pwr_on_func = NULL,
|
||||
.pwr_off_func = NULL,
|
||||
.query_rxdesc = rtw89_core_query_rxdesc,
|
||||
|
|
|
|||
|
|
@ -857,6 +857,7 @@ static const struct rtw89_chip_ops rtw8852b_chip_ops = {
|
|||
.cfg_txrx_path = rtw8852bx_bb_cfg_txrx_path,
|
||||
.set_txpwr_ul_tb_offset = rtw8852bx_set_txpwr_ul_tb_offset,
|
||||
.digital_pwr_comp = NULL,
|
||||
.calc_rx_gain_normal = NULL,
|
||||
.pwr_on_func = rtw8852b_pwr_on_func,
|
||||
.pwr_off_func = rtw8852b_pwr_off_func,
|
||||
.query_rxdesc = rtw89_core_query_rxdesc,
|
||||
|
|
|
|||
|
|
@ -703,6 +703,7 @@ static const struct rtw89_chip_ops rtw8852bt_chip_ops = {
|
|||
.cfg_txrx_path = rtw8852bx_bb_cfg_txrx_path,
|
||||
.set_txpwr_ul_tb_offset = rtw8852bx_set_txpwr_ul_tb_offset,
|
||||
.digital_pwr_comp = NULL,
|
||||
.calc_rx_gain_normal = NULL,
|
||||
.pwr_on_func = rtw8852bt_pwr_on_func,
|
||||
.pwr_off_func = rtw8852bt_pwr_off_func,
|
||||
.query_rxdesc = rtw89_core_query_rxdesc,
|
||||
|
|
|
|||
|
|
@ -3065,6 +3065,7 @@ static const struct rtw89_chip_ops rtw8852c_chip_ops = {
|
|||
.cfg_txrx_path = rtw8852c_bb_cfg_txrx_path,
|
||||
.set_txpwr_ul_tb_offset = rtw8852c_set_txpwr_ul_tb_offset,
|
||||
.digital_pwr_comp = NULL,
|
||||
.calc_rx_gain_normal = NULL,
|
||||
.pwr_on_func = rtw8852c_pwr_on_func,
|
||||
.pwr_off_func = rtw8852c_pwr_off_func,
|
||||
.query_rxdesc = rtw89_core_query_rxdesc,
|
||||
|
|
|
|||
|
|
@ -2838,6 +2838,7 @@ static const struct rtw89_chip_ops rtw8922a_chip_ops = {
|
|||
.cfg_txrx_path = rtw8922a_bb_cfg_txrx_path,
|
||||
.set_txpwr_ul_tb_offset = NULL,
|
||||
.digital_pwr_comp = rtw8922a_digital_pwr_comp,
|
||||
.calc_rx_gain_normal = NULL,
|
||||
.pwr_on_func = rtw8922a_pwr_on_func,
|
||||
.pwr_off_func = rtw8922a_pwr_off_func,
|
||||
.query_rxdesc = rtw89_core_query_rxdesc_v2,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user