diff options
| author | Kuan-Chung Chen <[email protected]> | 2024-04-01 14:38:18 +0800 | 
|---|---|---|
| committer | Ping-Ke Shih <[email protected]> | 2024-04-04 15:54:05 +0800 | 
| commit | 155b10aba42800df16b71bc96876fb2a65a824c2 (patch) | |
| tree | b12c21983ea48296951e09c06e876f68c7fd6a83 | |
| parent | 2710c919dfb4464d022bb300c36331992b47a6d5 (diff) | |
wifi: rtw89: 8922a: configure UL MU/OFDMA power setting
8922A needs to set UL MU/OFDMA power and fine tune power
error tolerance for proper response to AP's trigger frame.
Signed-off-by: Kuan-Chung Chen <[email protected]>
Signed-off-by: Ping-Ke Shih <[email protected]>
Link: https://msgid.link/[email protected]
| -rw-r--r-- | drivers/net/wireless/realtek/rtw89/phy_be.c | 18 | ||||
| -rw-r--r-- | drivers/net/wireless/realtek/rtw89/reg.h | 3 | 
2 files changed, 21 insertions, 0 deletions
| diff --git a/drivers/net/wireless/realtek/rtw89/phy_be.c b/drivers/net/wireless/realtek/rtw89/phy_be.c index be0148f2b96f..72eda9bbd3ae 100644 --- a/drivers/net/wireless/realtek/rtw89/phy_be.c +++ b/drivers/net/wireless/realtek/rtw89/phy_be.c @@ -381,6 +381,23 @@ static void rtw89_phy_bb_wrap_ftm_init(struct rtw89_dev *rtwdev,  	rtw89_write32_mask(rtwdev, addr, 0x7, 0);  } +static void rtw89_phy_bb_wrap_ul_pwr(struct rtw89_dev *rtwdev) +{ +	enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id; +	u8 mac_idx; +	u32 addr; + +	if (chip_id != RTL8922A) +		return; + +	for (mac_idx = 0; mac_idx < RTW89_MAC_NUM; mac_idx++) { +		addr = rtw89_mac_reg_by_idx(rtwdev, R_BE_PWR_RSSI_TARGET_LMT, mac_idx); +		rtw89_write32(rtwdev, addr, 0x0201FE00); +		addr = rtw89_mac_reg_by_idx(rtwdev, R_BE_PWR_TH, mac_idx); +		rtw89_write32(rtwdev, addr, 0x00FFEC7E); +	} +} +  static void rtw89_phy_bb_wrap_init_be(struct rtw89_dev *rtwdev)  {  	enum rtw89_mac_idx mac_idx = RTW89_MAC_0; @@ -391,6 +408,7 @@ static void rtw89_phy_bb_wrap_init_be(struct rtw89_dev *rtwdev)  	rtw89_phy_bb_wrap_force_cr_init(rtwdev, mac_idx);  	rtw89_phy_bb_wrap_ftm_init(rtwdev, mac_idx);  	rtw89_phy_bb_wrap_tpu_set_all(rtwdev, mac_idx); +	rtw89_phy_bb_wrap_ul_pwr(rtwdev);  }  static void rtw89_phy_ch_info_init_be(struct rtw89_dev *rtwdev) diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h index ccf74d9f9224..0c0d3c84b178 100644 --- a/drivers/net/wireless/realtek/rtw89/reg.h +++ b/drivers/net/wireless/realtek/rtw89/reg.h @@ -7496,6 +7496,9 @@  #define B_BE_PWR_BT_VAL GENMASK(8, 0)  #define B_BE_PWR_FORCE_COEX_ON GENMASK(29, 27) +#define R_BE_PWR_TH 0x11A78 +#define R_BE_PWR_RSSI_TARGET_LMT 0x11A84 +  #define R_BE_PWR_OFST_SW 0x11AE8  #define B_BE_PWR_OFST_SW_DB GENMASK(27, 24) |