diff options
Diffstat (limited to 'sys/contrib/dev/rtw88/rtw8822b.c')
| -rw-r--r-- | sys/contrib/dev/rtw88/rtw8822b.c | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/sys/contrib/dev/rtw88/rtw8822b.c b/sys/contrib/dev/rtw88/rtw8822b.c index c097224e1530..b37b301fc866 100644 --- a/sys/contrib/dev/rtw88/rtw8822b.c +++ b/sys/contrib/dev/rtw88/rtw8822b.c @@ -935,11 +935,11 @@ static void query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status,  }  static void -rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs) +rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, +				    u8 rs, u32 *phy_pwr_idx)  {  	struct rtw_hal *hal = &rtwdev->hal;  	static const u32 offset_txagc[2] = {0x1d00, 0x1d80}; -	static u32 phy_pwr_idx;  	u8 rate, rate_idx, pwr_index, shift;  	int j; @@ -947,12 +947,12 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)  		rate = rtw_rate_section[rs][j];  		pwr_index = hal->tx_pwr_tbl[path][rate];  		shift = rate & 0x3; -		phy_pwr_idx |= ((u32)pwr_index << (shift * 8)); +		*phy_pwr_idx |= ((u32)pwr_index << (shift * 8));  		if (shift == 0x3) {  			rate_idx = rate & 0xfc;  			rtw_write32(rtwdev, offset_txagc[path] + rate_idx, -				    phy_pwr_idx); -			phy_pwr_idx = 0; +				    *phy_pwr_idx); +			*phy_pwr_idx = 0;  		}  	}  } @@ -960,11 +960,13 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)  static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev)  {  	struct rtw_hal *hal = &rtwdev->hal; +	u32 phy_pwr_idx = 0;  	int rs, path;  	for (path = 0; path < hal->rf_path_num; path++) { -		for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) -			rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs); +		for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) +			rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs, +							    &phy_pwr_idx);  	}  } @@ -981,6 +983,7 @@ static bool rtw8822b_check_rf_path(u8 antenna)  }  static int rtw8822b_set_antenna(struct rtw_dev *rtwdev, +				int radio_idx,  				u32 antenna_tx,  				u32 antenna_rx)  { @@ -2151,11 +2154,13 @@ static const struct rtw_chip_ops rtw8822b_ops = {  	.query_phy_status	= query_phy_status,  	.set_channel		= rtw8822b_set_channel,  	.mac_init		= rtw8822b_mac_init, +	.mac_postinit		= NULL,  	.read_rf		= rtw_phy_read_rf,  	.write_rf		= rtw_phy_write_rf_reg_sipi,  	.set_tx_power_index	= rtw8822b_set_tx_power_index,  	.set_antenna		= rtw8822b_set_antenna,  	.cfg_ldo25		= rtw8822b_cfg_ldo25, +	.set_ampdu_factor	= NULL,  	.false_alarm_statistics	= rtw8822b_false_alarm_statistics,  	.phy_calibration	= rtw8822b_phy_calibration,  	.pwr_track		= rtw8822b_pwr_track, @@ -2514,7 +2519,7 @@ const struct rtw_chip_info rtw8822b_hw_spec = {  	.ops = &rtw8822b_ops,  	.id = RTW_CHIP_TYPE_8822B,  	.fw_name = "rtw88/rtw8822b_fw.bin", -	.wlan_cpu = RTW_WCPU_11AC, +	.wlan_cpu = RTW_WCPU_3081,  	.tx_pkt_desc_sz = 48,  	.tx_buf_desc_sz = 16,  	.rx_pkt_desc_sz = 24, @@ -2533,6 +2538,7 @@ const struct rtw_chip_info rtw8822b_hw_spec = {  	.band = RTW_BAND_2G | RTW_BAND_5G,  	.page_size = TX_PAGE_SIZE,  	.dig_min = 0x1c, +	.amsdu_in_ampdu = true,  	.usb_tx_agg_desc_num = 3,  	.hw_feature_report = true,  	.c2h_ra_report_size = 7, | 
