Lines Matching +full:tx +full:- +full:d +full:- +full:cal

1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
12 #include "tx.h"
21 static const s8 lna_gain_table[] = {15, -1, -17, 0, -30, -38}; in rtw8821a_cck_rx_pwr()
32 rx_pwr_all = lna_gain - 2 * vga_idx; in rtw8821a_cck_rx_pwr()
62 /* [31] = 0 --> Page C */ in rtw8821a_iqk_backup_rf()
77 /* [31] = 0 --> Page C */ in rtw8821a_iqk_restore_rf()
90 /* [31] = 0 --> Page C */ in rtw8821a_iqk_restore_afe()
97 /* [31] = 1 --> Page C1 */ in rtw8821a_iqk_restore_afe()
114 /* [31] = 0 --> Page C */ in rtw8821a_iqk_rx_fill()
126 /* [31] = 1 --> Page C1 */ in rtw8821a_iqk_tx_fill()
136 static void rtw8821a_iqk_tx_vdf_true(struct rtw_dev *rtwdev, u32 cal, in rtw8821a_iqk_tx_vdf_true() argument
173 tx_dt[cal] = (vdf_y[1] >> 20) - (vdf_y[0] >> 20); in rtw8821a_iqk_tx_vdf_true()
174 tx_dt[cal] = (16 * tx_dt[cal]) * 10000 / 15708; in rtw8821a_iqk_tx_vdf_true()
175 tx_dt[cal] = (tx_dt[cal] >> 1) + (tx_dt[cal] & BIT(0)); in rtw8821a_iqk_tx_vdf_true()
184 tx_dt[cal] & 0x00003fff); in rtw8821a_iqk_tx_vdf_true()
256 tx_x0[cal] = vdf_x[k - 1]; in rtw8821a_iqk_tx_vdf_true()
257 tx_y0[cal] = vdf_y[k - 1]; in rtw8821a_iqk_tx_vdf_true()
261 static void rtw8821a_iqk_tx_vdf_false(struct rtw_dev *rtwdev, u32 cal, in rtw8821a_iqk_tx_vdf_false() argument
307 tx_x0[cal] = rtw_read32_mask(rtwdev, REG_IQKA_END, in rtw8821a_iqk_tx_vdf_false()
309 tx_x0[cal] <<= 21; in rtw8821a_iqk_tx_vdf_false()
312 tx_y0[cal] = rtw_read32_mask(rtwdev, REG_IQKA_END, in rtw8821a_iqk_tx_vdf_false()
314 tx_y0[cal] <<= 21; in rtw8821a_iqk_tx_vdf_false()
328 static void rtw8821a_iqk_rx(struct rtw_dev *rtwdev, u32 cal, bool *rx0iqkok, in rtw8821a_iqk_rx() argument
364 rx_x0[cal] = rtw_read32_mask(rtwdev, REG_IQKA_END, in rtw8821a_iqk_rx()
366 rx_x0[cal] <<= 21; in rtw8821a_iqk_rx()
369 rx_y0[cal] = rtw_read32_mask(rtwdev, REG_IQKA_END, in rtw8821a_iqk_rx()
371 rx_y0[cal] <<= 21; in rtw8821a_iqk_rx()
390 const struct rtw_efuse *efuse = &rtwdev->efuse; in rtw8821a_iqk()
392 const struct rtw_hal *hal = &rtwdev->hal; in rtw8821a_iqk()
402 u32 cal; in rtw8821a_iqk() local
406 "band_width = %d, ext_pa = %d, ext_pa_5g = %d\n", in rtw8821a_iqk()
407 hal->current_band_width, efuse->ext_pa_2g, efuse->ext_pa_5g); in rtw8821a_iqk()
409 vdf_enable = hal->current_band_width == RTW_CHANNEL_WIDTH_80; in rtw8821a_iqk()
411 for (cal = 0; cal < CAL_NUM_8821A; cal++) { in rtw8821a_iqk()
412 /* path-A LOK */ in rtw8821a_iqk()
414 /* [31] = 0 --> Page C */ in rtw8821a_iqk()
417 /* ========path-A AFE all on======== */ in rtw8821a_iqk()
424 /* hardware 3-wire off */ in rtw8821a_iqk()
447 /* TX (X,Y) */ in rtw8821a_iqk()
454 /* [31] = 1 --> Page C1 */ in rtw8821a_iqk()
457 if (efuse->ext_pa_5g) in rtw8821a_iqk()
464 if (hal->current_band_type == RTW_BAND_5G) in rtw8821a_iqk()
480 /* [31] = 0 --> Page C */ in rtw8821a_iqk()
485 if (hal->current_band_width == RTW_CHANNEL_WIDTH_40) in rtw8821a_iqk()
488 else if (hal->current_band_width == RTW_CHANNEL_WIDTH_80) in rtw8821a_iqk()
492 /* [31] = 1 --> Page C1 */ in rtw8821a_iqk()
495 /* 3. TX RF setting */ in rtw8821a_iqk()
496 /* [31] = 0 --> Page C */ in rtw8821a_iqk()
511 /* TX (X,Y) */ in rtw8821a_iqk()
518 /* [31] = 1 --> Page C1 */ in rtw8821a_iqk()
521 if (efuse->ext_pa_5g) in rtw8821a_iqk()
528 if (hal->current_band_type == RTW_BAND_5G) in rtw8821a_iqk()
534 rtw8821a_iqk_tx_vdf_true(rtwdev, cal, &tx0iqkok, in rtw8821a_iqk()
537 rtw8821a_iqk_tx_vdf_false(rtwdev, cal, &tx0iqkok, in rtw8821a_iqk()
544 /* [31] = 0 --> Page C */ in rtw8821a_iqk()
559 (tx_x0[cal] >> 21) & 0x000007ff); in rtw8821a_iqk()
561 (tx_y0[cal] >> 21) & 0x000007ff); in rtw8821a_iqk()
567 /* [31] = 1 --> Page C1 */ in rtw8821a_iqk()
587 rtw8821a_iqk_rx(rtwdev, cal, &rx0iqkok, in rtw8821a_iqk()
604 "tx_x0[%d] = %x ;; tx_y0[%d] = %x\n", in rtw8821a_iqk()
619 "rx_x0[0][%d] = %x ;; rx_y0[0][%d] = %x\n", in rtw8821a_iqk()
625 "rx_x0[1][%d] = %x ;; rx_y0[1][%d] = %x\n", in rtw8821a_iqk()
696 struct rtw_dm_info *dm_info = &rtwdev->dm_info; in rtw8821a_pwr_track()
698 if (!dm_info->pwr_trk_triggered) { in rtw8821a_pwr_track()
701 dm_info->pwr_trk_triggered = true; in rtw8821a_pwr_track()
706 dm_info->pwr_trk_triggered = false; in rtw8821a_pwr_track()
749 if (rtwdev->efuse.share_ant) in rtw8821a_coex_cfg_init()
763 bool share_ant = rtwdev->efuse.share_ant; in rtw8821a_coex_cfg_ant_switch()
764 struct rtw_coex *coex = &rtwdev->coex; in rtw8821a_coex_cfg_ant_switch()
765 struct rtw_coex_dm *coex_dm = &coex->dm; in rtw8821a_coex_cfg_ant_switch()
766 u32 phase = coex_dm->cur_ant_pos_type; in rtw8821a_coex_cfg_ant_switch()
768 if (!rtwdev->efuse.btcoex) in rtw8821a_coex_cfg_ant_switch()
818 rtw_warn(rtwdev, "%s: not handling phase %d\n", in rtw8821a_coex_cfg_ant_switch()
834 struct rtw_coex *coex = &rtwdev->coex; in rtw8821a_coex_cfg_rfe_type()
835 struct rtw_coex_rfe *coex_rfe = &coex->rfe; in rtw8821a_coex_cfg_rfe_type()
837 coex_rfe->ant_switch_exist = true; in rtw8821a_coex_cfg_rfe_type()
842 struct rtw_coex *coex = &rtwdev->coex; in rtw8821a_coex_cfg_wl_tx_power()
843 struct rtw_coex_dm *coex_dm = &coex->dm; in rtw8821a_coex_cfg_wl_tx_power()
844 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw8821a_coex_cfg_wl_tx_power()
845 bool share_ant = efuse->share_ant; in rtw8821a_coex_cfg_wl_tx_power()
850 if (wl_pwr == coex_dm->cur_wl_pwr_lvl) in rtw8821a_coex_cfg_wl_tx_power()
853 coex_dm->cur_wl_pwr_lvl = wl_pwr; in rtw8821a_coex_cfg_wl_tx_power()
950 /* rssi in percentage % (dbm = % - 100) */
960 * rtw_8821au 1-2:1.2: [BTCoex], Bt_info[1], len=7, data=[81 00 0a 01 00 00]
961 * - 81 means PAN (personal area network) when it should be 4x (A2DP)
965 /* Shared-Antenna Coex Table */
967 {0x55555555, 0x55555555}, /* case-0 */
972 {0xfafafafa, 0xfafafafa}, /* case-5 */
977 {0x66555555, 0x6a5a5a5a}, /* case-10 */
982 {0x66555555, 0xaaaaaaaa}, /* case-15 */
987 {0xaa5555aa, 0x6a5a5a5a}, /* case-20 */
992 {0xffffffff, 0x5a5a5aaa}, /* case-25 */
997 {0x66556aaa, 0x6a5a6aaa}, /* case-30 */
1002 /* Non-Shared-Antenna Coex Table */
1004 {0xffffffff, 0xffffffff}, /* case-100 */
1009 {0xffffffff, 0xffffffff}, /* case-105 */
1014 {0x66555555, 0x6a5a5a5a}, /* case-110 */
1019 {0xffff55ff, 0xffff55ff}, /* case-115 */
1024 {0xffffffff, 0xaaaaaaaa}, /* case-120 */
1030 /* Shared-Antenna TDMA */
1032 { {0x00, 0x00, 0x00, 0x00, 0x00} }, /* case-0 */
1033 { {0x61, 0x45, 0x03, 0x11, 0x11} }, /* case-1 */
1037 { {0x61, 0x3a, 0x03, 0x11, 0x11} }, /* case-5 */
1042 { {0x61, 0x10, 0x03, 0x11, 0x10} }, /* case-10 */
1047 { {0x51, 0x08, 0x07, 0x10, 0x54} }, /* case-15 */
1052 { {0x51, 0x10, 0x03, 0x10, 0x50} }, /* case-20 */
1057 { {0x51, 0x10, 0x03, 0x10, 0x51} }, /* case-25 */
1062 /* Non-Shared-Antenna TDMA */
1064 { {0x00, 0x00, 0x00, 0x40, 0x00} }, /* case-100 */
1069 { {0x61, 0x10, 0x03, 0x11, 0x11} }, /* case-105 */
1074 { {0x61, 0x10, 0x03, 0x11, 0x10} }, /* case-110 */
1079 { {0x51, 0x08, 0x07, 0x10, 0x54} }, /* case-115 */
1084 { {0x51, 0x21, 0x03, 0x10, 0x50} }, /* case-120 */
1091 {0, 20, false, 7}, /* for WL-CPT */
1100 {0, 20, false, 7}, /* for WL-CPT */