Lines Matching +full:rx +full:- +full:level +full:- +full:trig
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
20 RTW8922A_FW_BASENAME "-" __stringify(RTW8922A_FW_FORMAT_MAX) ".bin"
261 struct rtw89_hal *hal = &rtwdev->hal; in rtw8922a_pwr_on_func()
366 if (hal->cv != CHIP_CAV) { in rtw8922a_pwr_on_func()
386 set_bit(RTW89_FLAG_DMAC_FUNC, rtwdev->flags); in rtw8922a_pwr_on_func()
397 set_bit(RTW89_FLAG_CMAC0_FUNC, rtwdev->flags); in rtw8922a_pwr_on_func()
497 struct rtw8922a_tssi_offset *ofst[] = {&map->path_a_tssi, &map->path_b_tssi}; in rtw8922a_efuse_parsing_tssi()
498 u8 *bw40_1s_tssi_6g_ofst[] = {map->bw40_1s_tssi_6g_a, map->bw40_1s_tssi_6g_b}; in rtw8922a_efuse_parsing_tssi()
499 struct rtw89_tssi_info *tssi = &rtwdev->tssi; in rtw8922a_efuse_parsing_tssi()
502 tssi->thermal[RF_PATH_A] = map->path_a_therm; in rtw8922a_efuse_parsing_tssi()
503 tssi->thermal[RF_PATH_B] = map->path_b_therm; in rtw8922a_efuse_parsing_tssi()
506 memcpy(tssi->tssi_cck[i], ofst[i]->cck_tssi, in rtw8922a_efuse_parsing_tssi()
507 sizeof(ofst[i]->cck_tssi)); in rtw8922a_efuse_parsing_tssi()
512 i, j, tssi->tssi_cck[i][j]); in rtw8922a_efuse_parsing_tssi()
514 memcpy(tssi->tssi_mcs[i], ofst[i]->bw40_tssi, in rtw8922a_efuse_parsing_tssi()
515 sizeof(ofst[i]->bw40_tssi)); in rtw8922a_efuse_parsing_tssi()
516 memcpy(tssi->tssi_mcs[i] + TSSI_MCS_2G_CH_GROUP_NUM, in rtw8922a_efuse_parsing_tssi()
517 ofst[i]->bw40_1s_tssi_5g, sizeof(ofst[i]->bw40_1s_tssi_5g)); in rtw8922a_efuse_parsing_tssi()
518 memcpy(tssi->tssi_6g_mcs[i], bw40_1s_tssi_6g_ofst[i], in rtw8922a_efuse_parsing_tssi()
519 sizeof(tssi->tssi_6g_mcs[i])); in rtw8922a_efuse_parsing_tssi()
524 i, j, tssi->tssi_mcs[i][j]); in rtw8922a_efuse_parsing_tssi()
531 struct rtw89_phy_efuse_gain *gain = &rtwdev->efuse_gain; in rtw8922a_efuse_parsing_gain_offset()
536 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_2G_CCK] = map->rx_gain_a._2g_cck; in rtw8922a_efuse_parsing_gain_offset()
537 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_2G_CCK] = map->rx_gain_b._2g_cck; in rtw8922a_efuse_parsing_gain_offset()
538 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_2G_OFDM] = map->rx_gain_a._2g_ofdm; in rtw8922a_efuse_parsing_gain_offset()
539 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_2G_OFDM] = map->rx_gain_b._2g_ofdm; in rtw8922a_efuse_parsing_gain_offset()
540 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_5G_LOW] = map->rx_gain_a._5g_low; in rtw8922a_efuse_parsing_gain_offset()
541 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_5G_LOW] = map->rx_gain_b._5g_low; in rtw8922a_efuse_parsing_gain_offset()
542 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_5G_MID] = map->rx_gain_a._5g_mid; in rtw8922a_efuse_parsing_gain_offset()
543 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_5G_MID] = map->rx_gain_b._5g_mid; in rtw8922a_efuse_parsing_gain_offset()
544 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_5G_HIGH] = map->rx_gain_a._5g_high; in rtw8922a_efuse_parsing_gain_offset()
545 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_5G_HIGH] = map->rx_gain_b._5g_high; in rtw8922a_efuse_parsing_gain_offset()
546 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_L0] = map->rx_gain_6g_a._6g_l0; in rtw8922a_efuse_parsing_gain_offset()
547 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_L0] = map->rx_gain_6g_b._6g_l0; in rtw8922a_efuse_parsing_gain_offset()
548 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_L1] = map->rx_gain_6g_a._6g_l1; in rtw8922a_efuse_parsing_gain_offset()
549 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_L1] = map->rx_gain_6g_b._6g_l1; in rtw8922a_efuse_parsing_gain_offset()
550 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_M0] = map->rx_gain_6g_a._6g_m0; in rtw8922a_efuse_parsing_gain_offset()
551 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_M0] = map->rx_gain_6g_b._6g_m0; in rtw8922a_efuse_parsing_gain_offset()
552 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_M1] = map->rx_gain_6g_a._6g_m1; in rtw8922a_efuse_parsing_gain_offset()
553 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_M1] = map->rx_gain_6g_b._6g_m1; in rtw8922a_efuse_parsing_gain_offset()
554 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_H0] = map->rx_gain_6g_a._6g_h0; in rtw8922a_efuse_parsing_gain_offset()
555 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_H0] = map->rx_gain_6g_b._6g_h0; in rtw8922a_efuse_parsing_gain_offset()
556 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_H1] = map->rx_gain_6g_a._6g_h1; in rtw8922a_efuse_parsing_gain_offset()
557 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_H1] = map->rx_gain_6g_b._6g_h1; in rtw8922a_efuse_parsing_gain_offset()
558 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_UH0] = map->rx_gain_6g_a._6g_uh0; in rtw8922a_efuse_parsing_gain_offset()
559 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_UH0] = map->rx_gain_6g_b._6g_uh0; in rtw8922a_efuse_parsing_gain_offset()
560 gain->offset[RF_PATH_A][RTW89_GAIN_OFFSET_6G_UH1] = map->rx_gain_6g_a._6g_uh1; in rtw8922a_efuse_parsing_gain_offset()
561 gain->offset[RF_PATH_B][RTW89_GAIN_OFFSET_6G_UH1] = map->rx_gain_6g_b._6g_uh1; in rtw8922a_efuse_parsing_gain_offset()
565 t = gain->offset[i][j]; in rtw8922a_efuse_parsing_gain_offset()
571 /* transform: sign-bit + U(7,2) to S(8,2) */ in rtw8922a_efuse_parsing_gain_offset()
573 gain->offset[i][j] = (t ^ 0x7f) + 1; in rtw8922a_efuse_parsing_gain_offset()
576 gain->offset_valid = !all_0xff && !all_0x00; in rtw8922a_efuse_parsing_gain_offset()
581 struct rtw89_efuse *efuse = &rtwdev->efuse; in rtw8922a_read_efuse_mac_addr()
587 efuse->addr[i] = val & 0xff; in rtw8922a_read_efuse_mac_addr()
588 efuse->addr[i + 1] = val >> 8; in rtw8922a_read_efuse_mac_addr()
594 struct rtw89_efuse *efuse = &rtwdev->efuse; in rtw8922a_read_efuse_pci_sdio()
596 if (rtwdev->hci.type == RTW89_HCI_TYPE_PCIE) in rtw8922a_read_efuse_pci_sdio()
599 ether_addr_copy(efuse->addr, log_map + 0x001A); in rtw8922a_read_efuse_pci_sdio()
614 struct rtw89_efuse *efuse = &rtwdev->efuse; in rtw8922a_read_efuse_rf()
616 efuse->rfe_type = map->rfe_type; in rtw8922a_read_efuse_rf()
617 efuse->xtal_cap = map->xtal_k; in rtw8922a_read_efuse_rf()
618 efuse->country_code[0] = map->country_code[0]; in rtw8922a_read_efuse_rf()
619 efuse->country_code[1] = map->country_code[1]; in rtw8922a_read_efuse_rf()
623 rtw89_info(rtwdev, "chip rfe_type is %d\n", efuse->rfe_type); in rtw8922a_read_efuse_rf()
650 struct rtw89_power_trim_info *info = &rtwdev->pwr_trim; in rtw8922a_phycap_parsing_thermal_trim()
651 u32 addr = rtwdev->chip->phycap_addr; in rtw8922a_phycap_parsing_thermal_trim()
658 pg_th = phycap_map[thm_trim_addr[i] - addr]; in rtw8922a_phycap_parsing_thermal_trim()
660 info->thermal_trim[i] = 0; in rtw8922a_phycap_parsing_thermal_trim()
668 val *= -1; in rtw8922a_phycap_parsing_thermal_trim()
670 info->thermal_trim[i] = val; in rtw8922a_phycap_parsing_thermal_trim()
677 info->pg_thermal_trim = pg; in rtw8922a_phycap_parsing_thermal_trim()
685 struct rtw89_power_trim_info *info = &rtwdev->pwr_trim; in rtw8922a_phycap_parsing_pa_bias_trim()
686 u32 addr = rtwdev->chip->phycap_addr; in rtw8922a_phycap_parsing_pa_bias_trim()
690 val = phycap_map[check_pa_pad_trim_addr - addr]; in rtw8922a_phycap_parsing_pa_bias_trim()
692 info->pg_pa_bias_trim = true; in rtw8922a_phycap_parsing_pa_bias_trim()
695 info->pa_bias_trim[i] = phycap_map[pabias_trim_addr[i] - addr]; in rtw8922a_phycap_parsing_pa_bias_trim()
699 i, info->pa_bias_trim[i]); in rtw8922a_phycap_parsing_pa_bias_trim()
705 struct rtw89_power_trim_info *info = &rtwdev->pwr_trim; in rtw8922a_pa_bias_trim()
709 if (!info->pg_pa_bias_trim) { in rtw8922a_pa_bias_trim()
717 pabias_2g = FIELD_GET(GENMASK(3, 0), info->pa_bias_trim[i]); in rtw8922a_pa_bias_trim()
718 pabias_5g = FIELD_GET(GENMASK(7, 4), info->pa_bias_trim[i]); in rtw8922a_pa_bias_trim()
733 struct rtw89_power_trim_info *info = &rtwdev->pwr_trim; in rtw8922a_phycap_parsing_pad_bias_trim()
734 u32 addr = rtwdev->chip->phycap_addr; in rtw8922a_phycap_parsing_pad_bias_trim()
738 info->pad_bias_trim[i] = phycap_map[pad_bias_trim_addr[i] - addr]; in rtw8922a_phycap_parsing_pad_bias_trim()
742 i, info->pad_bias_trim[i]); in rtw8922a_phycap_parsing_pad_bias_trim()
748 struct rtw89_power_trim_info *info = &rtwdev->pwr_trim; in rtw8922a_pad_bias_trim()
752 if (!info->pg_pa_bias_trim) { in rtw8922a_pad_bias_trim()
759 pad_bias_2g = u8_get_bits(info->pad_bias_trim[i], GENMASK(3, 0)); in rtw8922a_pad_bias_trim()
760 pad_bias_5g = u8_get_bits(info->pad_bias_trim[i], GENMASK(7, 4)); in rtw8922a_pad_bias_trim()
798 switch (chan->band_width) { in rtw8922a_set_channel_mac()
812 switch (chan->band_width) { in rtw8922a_set_channel_mac()
841 switch (chan->band_type) { in rtw8922a_set_channel_mac()
850 rtw89_warn(rtwdev, "Invalid band_type:%d\n", chan->band_type); in rtw8922a_set_channel_mac()
858 switch (chan->band_width) { in rtw8922a_set_channel_mac()
894 return -EINVAL; in rtw8922a_ctrl_sco_cck()
896 ch_element = primary_ch - 1; in rtw8922a_ctrl_sco_cck()
1014 const struct rtw89_phy_bb_gain_info_be *gain = &rtwdev->bb_gain.be; in rtw8922a_set_rpl_gain()
1015 u8 gain_band = rtw89_subband_to_gain_band_be(chan->subband_type); in rtw8922a_set_rpl_gain()
1028 val = gain->rpl_ofst_160[gain_band][path][i]; in rtw8922a_set_rpl_gain()
1035 val = gain->rpl_ofst_80[gain_band][path][i]; in rtw8922a_set_rpl_gain()
1042 val = gain->rpl_ofst_40[gain_band][path][i]; in rtw8922a_set_rpl_gain()
1049 val = gain->rpl_ofst_20[gain_band][path][i]; in rtw8922a_set_rpl_gain()
1059 const struct rtw89_phy_bb_gain_info_be *gain = &rtwdev->bb_gain.be; in rtw8922a_set_lna_tia_gain()
1060 u8 gain_band = rtw89_subband_to_gain_band_be(chan->subband_type); in rtw8922a_set_lna_tia_gain()
1067 bw_type = chan->band_width <= RTW89_CHANNEL_WIDTH_40 ? in rtw8922a_set_lna_tia_gain()
1071 if (chan->band_type == RTW89_BAND_2G) { in rtw8922a_set_lna_tia_gain()
1078 val = gain->lna_gain[gain_band][bw_type][path][i]; in rtw8922a_set_lna_tia_gain()
1083 if (chan->band_type == RTW89_BAND_2G) { in rtw8922a_set_lna_tia_gain()
1090 val = gain->tia_gain[gain_band][bw_type][path][i]; in rtw8922a_set_lna_tia_gain()
1095 if (chan->band_type == RTW89_BAND_2G) { in rtw8922a_set_lna_tia_gain()
1102 val = gain->lna_op1db[gain_band][bw_type][path][i]; in rtw8922a_set_lna_tia_gain()
1107 if (chan->band_type == RTW89_BAND_2G) { in rtw8922a_set_lna_tia_gain()
1114 val = gain->tia_lna_op1db[gain_band][bw_type][path][i]; in rtw8922a_set_lna_tia_gain()
1132 struct rtw89_phy_efuse_gain *gain = &rtwdev->efuse_gain; in rtw8922a_set_rx_gain_normal_cck()
1133 s8 value = -gain->offset[path][RTW89_GAIN_OFFSET_2G_CCK]; /* S(8,2) */ in rtw8922a_set_rx_gain_normal_cck()
1138 (0x4 - fraction) << 1); in rtw8922a_set_rx_gain_normal_cck()
1140 (0x4 - fraction) << 1); in rtw8922a_set_rx_gain_normal_cck()
1164 struct rtw89_phy_efuse_gain *gain = &rtwdev->efuse_gain; in rtw8922a_set_rx_gain_normal_ofdm()
1169 gain_band = rtw89_subband_to_gain_offset_band_of_ofdm(chan->subband_type); in rtw8922a_set_rx_gain_normal_ofdm()
1170 value = gain->offset[path][gain_band]; in rtw8922a_set_rx_gain_normal_ofdm()
1173 value *= -4; in rtw8922a_set_rx_gain_normal_ofdm()
1175 value -= v1; in rtw8922a_set_rx_gain_normal_ofdm()
1177 value -= v2; in rtw8922a_set_rx_gain_normal_ofdm()
1193 struct rtw89_phy_efuse_gain *gain = &rtwdev->efuse_gain; in rtw8922a_set_rx_gain_normal()
1195 if (!gain->offset_valid) in rtw8922a_set_rx_gain_normal()
1198 if (chan->band_type == RTW89_BAND_2G) in rtw8922a_set_rx_gain_normal()
1233 u16 central_freq = chan->freq; in rtw8922a_ctrl_ch()
1234 u8 central_ch = chan->channel; in rtw8922a_ctrl_ch()
1235 u8 band = chan->band_type; in rtw8922a_ctrl_ch()
1262 chan_idx = rtw89_encode_chan_idx(rtwdev, chan->primary_channel, band); in rtw8922a_ctrl_ch()
1355 freq_diff = (spur_freq - chan->freq) * 1000000; in rtw8922a_set_csi_tone_idx()
1397 rtw89_phy_write32_idx(rtwdev, nbi->notch1_en.addr, in rtw8922a_set_nbi_tone_idx()
1398 nbi->notch1_en.mask, 0, phy_idx); in rtw8922a_set_nbi_tone_idx()
1399 rtw89_phy_write32_idx(rtwdev, nbi->notch2_en.addr, in rtw8922a_set_nbi_tone_idx()
1400 nbi->notch2_en.mask, 0, phy_idx); in rtw8922a_set_nbi_tone_idx()
1404 fc = chan->freq; in rtw8922a_set_nbi_tone_idx()
1405 if (chan->band_width == RTW89_CHANNEL_WIDTH_160) { in rtw8922a_set_nbi_tone_idx()
1406 fc = (spur_freq > fc) ? fc + 40 : fc - 40; in rtw8922a_set_nbi_tone_idx()
1408 chan->channel < chan->primary_channel) || in rtw8922a_set_nbi_tone_idx()
1410 chan->channel > chan->primary_channel)) in rtw8922a_set_nbi_tone_idx()
1414 freq_diff = (spur_freq - fc) * 1000000; in rtw8922a_set_nbi_tone_idx()
1418 if (chan->band_width == RTW89_CHANNEL_WIDTH_20) { in rtw8922a_set_nbi_tone_idx()
1421 u16 tone_para = (chan->band_width == RTW89_CHANNEL_WIDTH_40) ? in rtw8922a_set_nbi_tone_idx()
1429 if (chan->band_width == RTW89_CHANNEL_WIDTH_160 && notch2_chk) { in rtw8922a_set_nbi_tone_idx()
1430 rtw89_phy_write32_idx(rtwdev, nbi->notch2_idx.addr, in rtw8922a_set_nbi_tone_idx()
1431 nbi->notch2_idx.mask, nbi_tone_idx, phy_idx); in rtw8922a_set_nbi_tone_idx()
1432 rtw89_phy_write32_idx(rtwdev, nbi->notch2_frac_idx.addr, in rtw8922a_set_nbi_tone_idx()
1433 nbi->notch2_frac_idx.mask, nbi_frac_tone_idx, in rtw8922a_set_nbi_tone_idx()
1435 rtw89_phy_write32_idx(rtwdev, nbi->notch2_en.addr, in rtw8922a_set_nbi_tone_idx()
1436 nbi->notch2_en.mask, 0, phy_idx); in rtw8922a_set_nbi_tone_idx()
1437 rtw89_phy_write32_idx(rtwdev, nbi->notch2_en.addr, in rtw8922a_set_nbi_tone_idx()
1438 nbi->notch2_en.mask, 1, phy_idx); in rtw8922a_set_nbi_tone_idx()
1439 rtw89_phy_write32_idx(rtwdev, nbi->notch1_en.addr, in rtw8922a_set_nbi_tone_idx()
1440 nbi->notch1_en.mask, 0, phy_idx); in rtw8922a_set_nbi_tone_idx()
1442 rtw89_phy_write32_idx(rtwdev, nbi->notch1_idx.addr, in rtw8922a_set_nbi_tone_idx()
1443 nbi->notch1_idx.mask, nbi_tone_idx, phy_idx); in rtw8922a_set_nbi_tone_idx()
1444 rtw89_phy_write32_idx(rtwdev, nbi->notch1_frac_idx.addr, in rtw8922a_set_nbi_tone_idx()
1445 nbi->notch1_frac_idx.mask, nbi_frac_tone_idx, in rtw8922a_set_nbi_tone_idx()
1447 rtw89_phy_write32_idx(rtwdev, nbi->notch1_en.addr, in rtw8922a_set_nbi_tone_idx()
1448 nbi->notch1_en.mask, 0, phy_idx); in rtw8922a_set_nbi_tone_idx()
1449 rtw89_phy_write32_idx(rtwdev, nbi->notch1_en.addr, in rtw8922a_set_nbi_tone_idx()
1450 nbi->notch1_en.mask, 1, phy_idx); in rtw8922a_set_nbi_tone_idx()
1451 rtw89_phy_write32_idx(rtwdev, nbi->notch2_en.addr, in rtw8922a_set_nbi_tone_idx()
1452 nbi->notch2_en.mask, 0, phy_idx); in rtw8922a_set_nbi_tone_idx()
1532 rtw89_bbmcu_write32(rtwdev, reg->addr, reg->data, phy_idx); in rtw8922a_bbmcu_cr_init()
1625 if (phy_idx == RTW89_PHY_1 && !rtwdev->dbcc_en) in rtw8922a_ctrl_tx_path_tmac()
1650 ret = -EINVAL; in rtw8922a_ctrl_tx_path_tmac()
1693 return -EINVAL; in rtw8922a_cfg_rx_nss_limit()
1703 if (rtwdev->mlo_dbcc_mode == MLO_1_PLUS_1_1RF) { in rtw8922a_tssi_reset()
1744 return -EINVAL; in rtw8922a_ctrl_rx_path_tmac()
1789 bool enable = chan->band_type != RTW89_BAND_2G; in rtw8922a_digital_pwr_comp()
1792 if (rtwdev->mlo_dbcc_mode == MLO_1_PLUS_1_1RF) { in rtw8922a_digital_pwr_comp()
1816 return -EOPNOTSUPP; in rtw8922a_ctrl_mlo()
1830 rtw8922a_ctrl_afe_dac(rtwdev, chan0->band_width, RF_PATH_A); in rtw8922a_ctrl_mlo()
1831 rtw8922a_ctrl_afe_dac(rtwdev, chan1->band_width, RF_PATH_B); in rtw8922a_ctrl_mlo()
1865 if (rtwdev->dbcc_en) { in rtw8922a_bb_sethw()
1870 rtw8922a_ctrl_mlo(rtwdev, rtwdev->mlo_dbcc_mode); in rtw8922a_bb_sethw()
1893 bool cck_en = chan->band_type == RTW89_BAND_2G; in rtw8922a_set_channel_bb()
1894 u8 pri_sb = chan->pri_sb_idx; in rtw8922a_set_channel_bb()
1897 rtw8922a_ctrl_sco_cck(rtwdev, chan->primary_channel, in rtw8922a_set_channel_bb()
1898 chan->band_width, phy_idx); in rtw8922a_set_channel_bb()
1901 rtw8922a_ctrl_bw(rtwdev, pri_sb, chan->band_width, phy_idx); in rtw8922a_set_channel_bb()
1912 if (!rtwdev->dbcc_en) in rtw8922a_pre_set_channel_bb()
1935 if (!rtwdev->dbcc_en) in rtw8922a_post_set_channel_bb()
1997 if (rtwdev->mlo_dbcc_mode == MLO_1_PLUS_1_1RF) { in rtw8922a_adc_en()
2042 rtw8922a_hal_reset(rtwdev, phy_idx, mac_idx, chan->band_type, &p->tx_en, enter); in rtw8922a_set_channel_help()
2045 rtw8922a_post_set_channel_bb(rtwdev, rtwdev->mlo_dbcc_mode, phy_idx); in rtw8922a_set_channel_help()
2052 struct rtw89_rfk_mcc_info *rfk_mcc = &rtwdev->rfk_mcc; in rtw8922a_rfk_init()
2054 rtwdev->is_tssi_mode[RF_PATH_A] = false; in rtw8922a_rfk_init()
2055 rtwdev->is_tssi_mode[RF_PATH_B] = false; in rtw8922a_rfk_init()
2074 if (rtwdev->dbcc_en) in rtw8922a_rfk_init_late()
2092 "[RFK] Wait S%d to Rx mode!! (ret = %d)\n", in _wait_rx_mode()
2100 enum rtw89_chanctx_idx chanctx_idx = rtwvif_link->chanctx_idx; in rtw8922a_rfk_channel()
2102 enum rtw89_phy_idx phy_idx = rtwvif_link->phy_idx; in rtw8922a_rfk_channel()
2164 const struct rtw89_rfe_parms *rfe_parms = rtwdev->rfe_parms; in rtw8922a_set_tx_shape()
2165 const struct rtw89_tx_shape *tx_shape = &rfe_parms->tx_shape; in rtw8922a_set_tx_shape()
2169 band = chan->band_type; in rtw8922a_set_tx_shape()
2171 tx_shape_idx = (*tx_shape->lmt)[band][RTW89_RS_OFDM][regd]; in rtw8922a_set_tx_shape()
2260 enum rtw89_band band = chan->band_type; in rtw8922a_bb_cfg_txrx_path()
2261 struct rtw89_hal *hal = &rtwdev->hal; in rtw8922a_bb_cfg_txrx_path()
2265 if (hal->antenna_tx == RF_A) in rtw8922a_bb_cfg_txrx_path()
2267 else if (hal->antenna_tx == RF_B) in rtw8922a_bb_cfg_txrx_path()
2271 if (rtwdev->dbcc_en) in rtw8922a_bb_cfg_txrx_path()
2278 if (rtwdev->dbcc_en) in rtw8922a_bb_cfg_txrx_path()
2285 struct rtw89_power_trim_info *info = &rtwdev->pwr_trim; in rtw8922a_get_thermal()
2286 struct rtw89_hal *hal = &rtwdev->hal; in rtw8922a_get_thermal()
2291 !hal->thermal_prot_th) in rtw8922a_get_thermal()
2301 th += (s8)info->thermal_trim[rf_path]; in rtw8922a_get_thermal()
2308 union rtw89_btc_module_info *md = &rtwdev->btc.mdinfo; in rtw8922a_btc_set_rfe()
2309 struct rtw89_btc_module_v7 *module = &md->md_v7; in rtw8922a_btc_set_rfe()
2311 module->rfe_type = rtwdev->efuse.rfe_type; in rtw8922a_btc_set_rfe()
2312 module->kt_ver = rtwdev->hal.cv; in rtw8922a_btc_set_rfe()
2313 module->bt_solo = 0; in rtw8922a_btc_set_rfe()
2314 module->switch_type = BTC_SWITCH_INTERNAL; in rtw8922a_btc_set_rfe()
2315 module->wa_type = 0; in rtw8922a_btc_set_rfe()
2317 module->ant.type = BTC_ANT_SHARED; in rtw8922a_btc_set_rfe()
2318 module->ant.num = 2; in rtw8922a_btc_set_rfe()
2319 module->ant.isolation = 10; in rtw8922a_btc_set_rfe()
2320 module->ant.diversity = 0; in rtw8922a_btc_set_rfe()
2321 module->ant.single_pos = RF_PATH_A; in rtw8922a_btc_set_rfe()
2322 module->ant.btg_pos = RF_PATH_B; in rtw8922a_btc_set_rfe()
2324 if (module->kt_ver <= 1) in rtw8922a_btc_set_rfe()
2325 module->wa_type |= BTC_WA_HFP_ZB; in rtw8922a_btc_set_rfe()
2327 rtwdev->btc.cx.other.type = BTC_3CX_NONE; in rtw8922a_btc_set_rfe()
2329 if (module->rfe_type == 0) { in rtw8922a_btc_set_rfe()
2330 rtwdev->btc.dm.error.map.rfe_type0 = true; in rtw8922a_btc_set_rfe()
2334 module->ant.num = (module->rfe_type % 2) ? 2 : 3; in rtw8922a_btc_set_rfe()
2336 if (module->kt_ver == 0) in rtw8922a_btc_set_rfe()
2337 module->ant.num = 2; in rtw8922a_btc_set_rfe()
2339 if (module->ant.num == 3) { in rtw8922a_btc_set_rfe()
2340 module->ant.type = BTC_ANT_DEDICATED; in rtw8922a_btc_set_rfe()
2341 module->bt_pos = BTC_BT_ALONE; in rtw8922a_btc_set_rfe()
2343 module->ant.type = BTC_ANT_SHARED; in rtw8922a_btc_set_rfe()
2344 module->bt_pos = BTC_BT_BTG; in rtw8922a_btc_set_rfe()
2346 rtwdev->btc.btg_pos = module->ant.btg_pos; in rtw8922a_btc_set_rfe()
2347 rtwdev->btc.ant_type = module->ant.type; in rtw8922a_btc_set_rfe()
2359 struct rtw89_btc *btc = &rtwdev->btc; in rtw8922a_btc_init_cfg()
2360 struct rtw89_btc_ant_info_v7 *ant = &btc->mdinfo.md_v7.ant; in rtw8922a_btc_init_cfg()
2364 /* for 1-Ant && 1-ss case: only 1-path */ in rtw8922a_btc_init_cfg()
2365 if (ant->num == 1) { in rtw8922a_btc_init_cfg()
2366 path_min = ant->single_pos; in rtw8922a_btc_init_cfg()
2376 /* set DEBUG_LUT_RFMODE_MASK = 1 to start trx-mask-setup */ in rtw8922a_btc_init_cfg()
2379 /* if GNT_WL=0 && BT=SS_group --> WL Tx/Rx = THRU */ in rtw8922a_btc_init_cfg()
2382 /* if GNT_WL=0 && BT=Rx_group --> WL-Rx = THRU + WL-Tx = MASK */ in rtw8922a_btc_init_cfg()
2385 /* if GNT_WL = 0 && BT = Tx_group --> in rtw8922a_btc_init_cfg()
2386 * Shared-Ant && BTG-path:WL mask(0x55f), others:WL THRU(0x5ff) in rtw8922a_btc_init_cfg()
2388 if (btc->ant_type == BTC_ANT_SHARED && btc->btg_pos == path) in rtw8922a_btc_init_cfg()
2396 /* set WL PTA Hi-Pri: Ack-Tx, beacon-tx, Trig-frame-Tx, Null-Tx*/ in rtw8922a_btc_init_cfg()
2404 /* ZB coex table init for HFP PTA req-cmd bit-4 define issue COEX-900*/ in rtw8922a_btc_init_cfg()
2410 btc->cx.wl.status.map.init_ok = true; in rtw8922a_btc_init_cfg()
2453 return clamp_t(s8, val, -100, 0) + 100; in rtw8922a_btc_get_bt_rssi()
2457 {255, 0, 0, 7}, /* 0 -> original */
2458 {255, 2, 0, 7}, /* 1 -> for BT-connected ACI issue && BTG co-rx */
2459 {255, 0, 0, 7}, /* 2 ->reserved for shared-antenna */
2460 {255, 0, 0, 7}, /* 3- >reserved for shared-antenna */
2461 {255, 0, 0, 7}, /* 4 ->reserved for shared-antenna */
2462 {255, 1, 0, 7}, /* the below id is for non-shared-antenna free-run */
2469 {255, 0, 0, 7}, /* 0 -> original */
2470 {255, 2, 0, 7}, /* 1 -> reserved for shared-antenna */
2471 {255, 0, 0, 7}, /* 2 ->reserved for shared-antenna */
2472 {255, 0, 0, 7}, /* 3- >reserved for shared-antenna */
2473 {255, 0, 0, 7}, /* 4 ->reserved for shared-antenna */
2474 {255, 1, 0, 7}, /* the below id is for non-shared-antenna free-run */
2541 static void rtw8922a_btc_set_wl_rx_gain(struct rtw89_dev *rtwdev, u32 level) in rtw8922a_btc_set_wl_rx_gain() argument
2549 u8 chan_idx = phy_ppdu->chan_idx; in rtw8922a_fill_freq_with_ppdu()
2557 status->freq = ieee80211_channel_to_frequency(ch, band); in rtw8922a_fill_freq_with_ppdu()
2558 status->band = band; in rtw8922a_fill_freq_with_ppdu()
2566 u8 *rx_power = phy_ppdu->rssi; in rtw8922a_query_ppdu()
2568 if (!status->signal) in rtw8922a_query_ppdu()
2569 status->signal = RTW89_RSSI_RAW_TO_DBM(max(rx_power[RF_PATH_A], in rtw8922a_query_ppdu()
2572 for (path = 0; path < rtwdev->chip->rf_path_num; path++) { in rtw8922a_query_ppdu()
2573 status->chains |= BIT(path); in rtw8922a_query_ppdu()
2574 status->chain_signal[path] = RTW89_RSSI_RAW_TO_DBM(rx_power[path]); in rtw8922a_query_ppdu()
2576 if (phy_ppdu->valid) in rtw8922a_query_ppdu()
2585 u8 *rssi = phy_ppdu->rssi; in rtw8922a_convert_rpl_to_rssi()
2590 if (phy_ppdu->bw_idx < ARRAY_SIZE(bw_compensate)) in rtw8922a_convert_rpl_to_rssi()
2591 compensate = bw_compensate[phy_ppdu->bw_idx]; in rtw8922a_convert_rpl_to_rssi()
2594 if (!(phy_ppdu->rx_path_en & BIT(i))) { in rtw8922a_convert_rpl_to_rssi()
2596 phy_ppdu->rpl_path[i] = 0; in rtw8922a_convert_rpl_to_rssi()
2597 phy_ppdu->rpl_fd[i] = 0; in rtw8922a_convert_rpl_to_rssi()
2599 if (phy_ppdu->rate >= RTW89_HW_RATE_OFDM6) { in rtw8922a_convert_rpl_to_rssi()
2600 rpl_tmp = phy_ppdu->rpl_fd[i]; in rtw8922a_convert_rpl_to_rssi()
2604 phy_ppdu->rpl_path[i] = rpl_tmp; in rtw8922a_convert_rpl_to_rssi()
2606 rssi[i] = phy_ppdu->rpl_path[i]; in rtw8922a_convert_rpl_to_rssi()
2609 phy_ppdu->rssi_avg = phy_ppdu->rpl_avg; in rtw8922a_convert_rpl_to_rssi()
2616 if (desc_info->rssi <= 0x1 || (desc_info->rssi >> 2) > MAX_RSSI) in rtw8922a_phy_rpt_to_rssi()
2619 rx_status->signal = (desc_info->rssi >> 2) - MAX_RSSI; in rtw8922a_phy_rpt_to_rssi()