]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw88: Move pwr_track_tbl to struct rtw_rfe_def
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Wed, 23 Oct 2024 14:12:39 +0000 (17:12 +0300)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 29 Oct 2024 04:00:43 +0000 (12:00 +0800)
RTL8812AU uses one set of TX power tracking tables for RFE 3, and
another set for everything else.

Move pwr_track_tbl from struct rtw_chip_info to struct rtw_rfe_def in
order to load the right set of tables for each RFE (RF front end) type.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/904d0ab1-c046-40cd-a3a3-d4fdcf663c9d@gmail.com
drivers/net/wireless/realtek/rtw88/main.h
drivers/net/wireless/realtek/rtw88/phy.c
drivers/net/wireless/realtek/rtw88/rtw8703b.c
drivers/net/wireless/realtek/rtw88/rtw8723d.c
drivers/net/wireless/realtek/rtw88/rtw8723x.c
drivers/net/wireless/realtek/rtw88/rtw8821c.c
drivers/net/wireless/realtek/rtw88/rtw8822b.c
drivers/net/wireless/realtek/rtw88/rtw8822c.c

index ef82e60d5c19fc77125f161d22f76cef37d7edbb..b5aa46a44cdb9fe46ed281a73efbe126c8af9abf 100644 (file)
@@ -1099,17 +1099,20 @@ enum rtw_rfe_fem {
 struct rtw_rfe_def {
        const struct rtw_table *phy_pg_tbl;
        const struct rtw_table *txpwr_lmt_tbl;
+       const struct rtw_pwr_track_tbl *pwr_track_tbl;
        const struct rtw_table *agc_btg_tbl;
 };
 
-#define RTW_DEF_RFE(chip, bb_pg, pwrlmt) {                               \
+#define RTW_DEF_RFE(chip, bb_pg, pwrlmt, track) {                                \
        .phy_pg_tbl = &rtw ## chip ## _bb_pg_type ## bb_pg ## _tbl,       \
        .txpwr_lmt_tbl = &rtw ## chip ## _txpwr_lmt_type ## pwrlmt ## _tbl, \
+       .pwr_track_tbl = &rtw ## chip ## _pwr_track_type ## track ## _tbl, \
        }
 
-#define RTW_DEF_RFE_EXT(chip, bb_pg, pwrlmt, btg) {                      \
+#define RTW_DEF_RFE_EXT(chip, bb_pg, pwrlmt, track, btg) {                       \
        .phy_pg_tbl = &rtw ## chip ## _bb_pg_type ## bb_pg ## _tbl,       \
        .txpwr_lmt_tbl = &rtw ## chip ## _txpwr_lmt_type ## pwrlmt ## _tbl, \
+       .pwr_track_tbl = &rtw ## chip ## _pwr_track_type ## track ## _tbl, \
        .agc_btg_tbl = &rtw ## chip ## _agc_btg_type ## btg ## _tbl, \
        }
 
@@ -1243,7 +1246,6 @@ struct rtw_chip_info {
        u16 dpd_ratemask;
        u8 iqk_threshold;
        u8 lck_threshold;
-       const struct rtw_pwr_track_tbl *pwr_track_tbl;
 
        u8 bfer_su_max_num;
        u8 bfer_mu_max_num;
index d7b8efbd0d3c6cf3630f769aff26ed464c4fef6d..de491fb9caadb71b55803968d4d8999eec6a2719 100644 (file)
@@ -2384,7 +2384,8 @@ void rtw_phy_init_tx_power(struct rtw_dev *rtwdev)
 void rtw_phy_config_swing_table(struct rtw_dev *rtwdev,
                                struct rtw_swing_table *swing_table)
 {
-       const struct rtw_pwr_track_tbl *tbl = rtwdev->chip->pwr_track_tbl;
+       const struct rtw_rfe_def *rfe_def = rtw_get_rfe_def(rtwdev);
+       const struct rtw_pwr_track_tbl *tbl = rfe_def->pwr_track_tbl;
        u8 channel = rtwdev->hal.current_channel;
 
        if (IS_CH_2G_BAND(channel)) {
index dec0cec4ca22d95a29892475f1177756f58a73dc..a19b94d022ee64bfe981dd5c5a5f320f1b473368 100644 (file)
@@ -493,11 +493,6 @@ static const struct rtw_pwr_seq_cmd * const card_disable_flow_8703b[] = {
        NULL
 };
 
-static const struct rtw_rfe_def rtw8703b_rfe_defs[] = {
-       [0] = { .phy_pg_tbl     = &rtw8703b_bb_pg_tbl,
-               .txpwr_lmt_tbl  = &rtw8703b_txpwr_lmt_tbl,},
-};
-
 static const struct rtw_page_table page_table_8703b[] = {
        {12, 2, 2, 0, 1},
        {12, 2, 2, 0, 1},
@@ -1818,6 +1813,12 @@ static const struct rtw_pwr_track_tbl rtw8703b_rtw_pwr_track_tbl = {
        .pwrtrk_xtal_p = rtw8703b_pwrtrk_xtal_p,
 };
 
+static const struct rtw_rfe_def rtw8703b_rfe_defs[] = {
+       [0] = { .phy_pg_tbl     = &rtw8703b_bb_pg_tbl,
+               .txpwr_lmt_tbl  = &rtw8703b_txpwr_lmt_tbl,
+               .pwr_track_tbl  = &rtw8703b_rtw_pwr_track_tbl, },
+};
+
 /* Shared-Antenna Coex Table */
 static const struct coex_table_para table_sant_8703b[] = {
        {0xffffffff, 0xffffffff}, /* case-0 */
@@ -1997,7 +1998,6 @@ const struct rtw_chip_info rtw8703b_hw_spec = {
        .rfe_defs_size = ARRAY_SIZE(rtw8703b_rfe_defs),
 
        .iqk_threshold = 8,
-       .pwr_track_tbl = &rtw8703b_rtw_pwr_track_tbl,
 
        /* WOWLAN firmware exists, but not implemented yet */
        .wow_fw_name = "rtw88/rtw8703b_wow_fw.bin",
index 1d99bb89ef1df7c1090593179f1cf846a40ac047..eeca31bf71f166e6b716c1c8649bd2a01debd0fd 100644 (file)
@@ -2020,11 +2020,6 @@ static const struct rtw_intf_phy_para_table phy_para_table_8723d = {
        .n_gen1_para    = ARRAY_SIZE(pcie_gen1_param_8723d),
 };
 
-static const struct rtw_rfe_def rtw8723d_rfe_defs[] = {
-       [0] = { .phy_pg_tbl     = &rtw8723d_bb_pg_tbl,
-               .txpwr_lmt_tbl  = &rtw8723d_txpwr_lmt_tbl,},
-};
-
 static const u8 rtw8723d_pwrtrk_2gb_n[] = {
        0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5,
        6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10
@@ -2088,6 +2083,12 @@ static const struct rtw_pwr_track_tbl rtw8723d_rtw_pwr_track_tbl = {
        .pwrtrk_xtal_n = rtw8723d_pwrtrk_xtal_n,
 };
 
+static const struct rtw_rfe_def rtw8723d_rfe_defs[] = {
+       [0] = { .phy_pg_tbl     = &rtw8723d_bb_pg_tbl,
+               .txpwr_lmt_tbl  = &rtw8723d_txpwr_lmt_tbl,
+               .pwr_track_tbl  = &rtw8723d_rtw_pwr_track_tbl, },
+};
+
 static const struct rtw_reg_domain coex_info_hw_regs_8723d[] = {
        {0x948, MASKDWORD, RTW_REG_DOMAIN_MAC32},
        {0x67, BIT(7), RTW_REG_DOMAIN_MAC8},
@@ -2159,7 +2160,6 @@ const struct rtw_chip_info rtw8723d_hw_spec = {
        .rfe_defs = rtw8723d_rfe_defs,
        .rfe_defs_size = ARRAY_SIZE(rtw8723d_rfe_defs),
        .rx_ldpc = false,
-       .pwr_track_tbl = &rtw8723d_rtw_pwr_track_tbl,
        .iqk_threshold = 8,
        .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
        .max_scan_ie_len = IEEE80211_MAX_DATA_LEN,
index 0d0b6c2cb9aa1940d53df5819b28fc6b64650388..69f73cb5b4cd5bec4dc0cccbb22c42ba52ede655 100644 (file)
@@ -595,7 +595,8 @@ void __rtw8723x_pwrtrack_set_xtal(struct rtw_dev *rtwdev, u8 therm_path,
                                  u8 delta)
 {
        struct rtw_dm_info *dm_info = &rtwdev->dm_info;
-       const struct rtw_pwr_track_tbl *tbl = rtwdev->chip->pwr_track_tbl;
+       const struct rtw_rfe_def *rfe_def = rtw_get_rfe_def(rtwdev);
+       const struct rtw_pwr_track_tbl *tbl = rfe_def->pwr_track_tbl;
        const s8 *pwrtrk_xtal;
        s8 xtal_cap;
 
index 39dc8244f744a436206eb1ec482bfe923f33f559..0270225b9c20bc18b1e6e4f5eafb16bdd95ceec1 100644 (file)
@@ -1581,13 +1581,6 @@ static const struct rtw_intf_phy_para_table phy_para_table_8821c = {
        .n_gen2_para    = ARRAY_SIZE(pcie_gen2_param_8821c),
 };
 
-static const struct rtw_rfe_def rtw8821c_rfe_defs[] = {
-       [0] = RTW_DEF_RFE(8821c, 0, 0),
-       [2] = RTW_DEF_RFE_EXT(8821c, 0, 0, 2),
-       [4] = RTW_DEF_RFE_EXT(8821c, 0, 0, 2),
-       [6] = RTW_DEF_RFE(8821c, 0, 0),
-};
-
 static const struct rtw_hw_reg rtw8821c_dig[] = {
        [0] = { .addr = 0xc50, .mask = 0x7f },
 };
@@ -1899,7 +1892,7 @@ static const u8 rtw8821c_pwrtrk_2g_cck_a_p[] = {
        5, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9
 };
 
-static const struct rtw_pwr_track_tbl rtw8821c_rtw_pwr_track_tbl = {
+static const struct rtw_pwr_track_tbl rtw8821c_pwr_track_type0_tbl = {
        .pwrtrk_5gb_n[0] = rtw8821c_pwrtrk_5gb_n[0],
        .pwrtrk_5gb_n[1] = rtw8821c_pwrtrk_5gb_n[1],
        .pwrtrk_5gb_n[2] = rtw8821c_pwrtrk_5gb_n[2],
@@ -1922,6 +1915,13 @@ static const struct rtw_pwr_track_tbl rtw8821c_rtw_pwr_track_tbl = {
        .pwrtrk_2g_ccka_p = rtw8821c_pwrtrk_2g_cck_a_p,
 };
 
+static const struct rtw_rfe_def rtw8821c_rfe_defs[] = {
+       [0] = RTW_DEF_RFE(8821c, 0, 0, 0),
+       [2] = RTW_DEF_RFE_EXT(8821c, 0, 0, 0, 2),
+       [4] = RTW_DEF_RFE_EXT(8821c, 0, 0, 0, 2),
+       [6] = RTW_DEF_RFE(8821c, 0, 0, 0),
+};
+
 static const struct rtw_reg_domain coex_info_hw_regs_8821c[] = {
        {0xCB0, MASKDWORD, RTW_REG_DOMAIN_MAC32},
        {0xCB4, MASKDWORD, RTW_REG_DOMAIN_MAC32},
@@ -1994,7 +1994,6 @@ const struct rtw_chip_info rtw8821c_hw_spec = {
        .rfe_defs = rtw8821c_rfe_defs,
        .rfe_defs_size = ARRAY_SIZE(rtw8821c_rfe_defs),
        .rx_ldpc = false,
-       .pwr_track_tbl = &rtw8821c_rtw_pwr_track_tbl,
        .iqk_threshold = 8,
        .bfer_su_max_num = 2,
        .bfer_mu_max_num = 1,
index 419eb14c54670422481c062bb5be0141868e85dd..739809f4cab5577e564556c3213a40a2c1d3c83c 100644 (file)
@@ -2072,12 +2072,6 @@ static const struct rtw_intf_phy_para_table phy_para_table_8822b = {
        .n_gen2_para    = ARRAY_SIZE(pcie_gen2_param_8822b),
 };
 
-static const struct rtw_rfe_def rtw8822b_rfe_defs[] = {
-       [2] = RTW_DEF_RFE(8822b, 2, 2),
-       [3] = RTW_DEF_RFE(8822b, 3, 0),
-       [5] = RTW_DEF_RFE(8822b, 5, 5),
-};
-
 static const struct rtw_hw_reg rtw8822b_dig[] = {
        [0] = { .addr = 0xc50, .mask = 0x7f },
        [1] = { .addr = 0xe50, .mask = 0x7f },
@@ -2432,7 +2426,7 @@ static const u8 rtw8822b_pwrtrk_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
        10, 11, 11, 12, 12, 13, 13, 14, 14, 15
 };
 
-static const struct rtw_pwr_track_tbl rtw8822b_rtw_pwr_track_tbl = {
+static const struct rtw_pwr_track_tbl rtw8822b_pwr_track_type0_tbl = {
        .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8822b_pwrtrk_5gb_n[RTW_PWR_TRK_5G_1],
        .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8822b_pwrtrk_5gb_n[RTW_PWR_TRK_5G_2],
        .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8822b_pwrtrk_5gb_n[RTW_PWR_TRK_5G_3],
@@ -2455,6 +2449,12 @@ static const struct rtw_pwr_track_tbl rtw8822b_rtw_pwr_track_tbl = {
        .pwrtrk_2g_ccka_p = rtw8822b_pwrtrk_2g_cck_a_p,
 };
 
+static const struct rtw_rfe_def rtw8822b_rfe_defs[] = {
+       [2] = RTW_DEF_RFE(8822b, 2, 2, 0),
+       [3] = RTW_DEF_RFE(8822b, 3, 0, 0),
+       [5] = RTW_DEF_RFE(8822b, 5, 5, 0),
+};
+
 static const struct rtw_reg_domain coex_info_hw_regs_8822b[] = {
        {0xcb0, MASKDWORD, RTW_REG_DOMAIN_MAC32},
        {0xcb4, MASKDWORD, RTW_REG_DOMAIN_MAC32},
@@ -2535,7 +2535,6 @@ const struct rtw_chip_info rtw8822b_hw_spec = {
        .rf_tbl = {&rtw8822b_rf_a_tbl, &rtw8822b_rf_b_tbl},
        .rfe_defs = rtw8822b_rfe_defs,
        .rfe_defs_size = ARRAY_SIZE(rtw8822b_rfe_defs),
-       .pwr_track_tbl = &rtw8822b_rtw_pwr_track_tbl,
        .iqk_threshold = 8,
        .bfer_su_max_num = 2,
        .bfer_mu_max_num = 1,
index 56085f220fcd9d78a11ad1b2161f8b27e71bb1c0..af6b76937f1dc5e7f4dc0ee331b4f1e036aa6b29 100644 (file)
@@ -4883,16 +4883,6 @@ static const struct rtw_intf_phy_para_table phy_para_table_8822c = {
        .n_gen2_para    = ARRAY_SIZE(pcie_gen2_param_8822c),
 };
 
-static const struct rtw_rfe_def rtw8822c_rfe_defs[] = {
-       [0] = RTW_DEF_RFE(8822c, 0, 0),
-       [1] = RTW_DEF_RFE(8822c, 0, 0),
-       [2] = RTW_DEF_RFE(8822c, 0, 0),
-       [3] = RTW_DEF_RFE(8822c, 0, 0),
-       [4] = RTW_DEF_RFE(8822c, 0, 0),
-       [5] = RTW_DEF_RFE(8822c, 0, 5),
-       [6] = RTW_DEF_RFE(8822c, 0, 0),
-};
-
 static const struct rtw_hw_reg rtw8822c_dig[] = {
        [0] = { .addr = 0x1d70, .mask = 0x7f },
        [1] = { .addr = 0x1d70, .mask = 0x7f00 },
@@ -5238,7 +5228,7 @@ static const u8 rtw8822c_pwrtrk_2g_cck_a_p[RTW_PWR_TRK_TBL_SZ] = {
        18, 18, 19, 20, 21, 22, 23, 24, 24, 25
 };
 
-static const struct rtw_pwr_track_tbl rtw8822c_rtw_pwr_track_tbl = {
+static const struct rtw_pwr_track_tbl rtw8822c_pwr_track_type0_tbl = {
        .pwrtrk_5gb_n[RTW_PWR_TRK_5G_1] = rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_1],
        .pwrtrk_5gb_n[RTW_PWR_TRK_5G_2] = rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_2],
        .pwrtrk_5gb_n[RTW_PWR_TRK_5G_3] = rtw8822c_pwrtrk_5gb_n[RTW_PWR_TRK_5G_3],
@@ -5261,6 +5251,16 @@ static const struct rtw_pwr_track_tbl rtw8822c_rtw_pwr_track_tbl = {
        .pwrtrk_2g_ccka_p = rtw8822c_pwrtrk_2g_cck_a_p,
 };
 
+static const struct rtw_rfe_def rtw8822c_rfe_defs[] = {
+       [0] = RTW_DEF_RFE(8822c, 0, 0, 0),
+       [1] = RTW_DEF_RFE(8822c, 0, 0, 0),
+       [2] = RTW_DEF_RFE(8822c, 0, 0, 0),
+       [3] = RTW_DEF_RFE(8822c, 0, 0, 0),
+       [4] = RTW_DEF_RFE(8822c, 0, 0, 0),
+       [5] = RTW_DEF_RFE(8822c, 0, 5, 0),
+       [6] = RTW_DEF_RFE(8822c, 0, 0, 0),
+};
+
 static const struct rtw_hw_reg_offset rtw8822c_edcca_th[] = {
        [EDCCA_TH_L2H_IDX] = {
                {.addr = 0x84c, .mask = MASKBYTE2}, .offset = 0x80
@@ -5360,7 +5360,6 @@ const struct rtw_chip_info rtw8822c_hw_spec = {
        .rfe_defs_size = ARRAY_SIZE(rtw8822c_rfe_defs),
        .en_dis_dpd = true,
        .dpd_ratemask = DIS_DPD_RATEALL,
-       .pwr_track_tbl = &rtw8822c_rtw_pwr_track_tbl,
        .iqk_threshold = 8,
        .lck_threshold = 8,
        .bfer_su_max_num = 2,