u16 fw_b_aid;
};
+struct rtw89_qta_def {
+ const struct rtw89_hfc_param_ini *hfc_param_ini[RTW89_HCI_DLE_TYPE_NUM];
+ const struct rtw89_dle_mem *dle_mem[RTW89_HCI_DLE_TYPE_NUM];
+};
+
struct rtw89_phy_table {
const struct rtw89_reg2_def *regs;
u32 n_regs;
u16 max_rx_agg_num;
bool dis_2g_40m_ul_ofdma;
u32 rsvd_ple_ofst;
- const struct rtw89_hfc_param_ini *hfc_param_ini[RTW89_HCI_DLE_TYPE_NUM];
- const struct rtw89_dle_mem *dle_mem[RTW89_HCI_DLE_TYPE_NUM];
+ struct rtw89_qta_def qta_def;
u8 wde_qempty_acq_grpnum;
u8 wde_qempty_mgq_grpsel;
u32 rf_base_addr[2];
bool no_mcs_12_13: 1;
u32 fw_min_ver_code;
const struct rtw89_fw_def *fw_def_override;
+ const struct rtw89_qta_def *qta_def_override;
};
union rtw89_bus_info {
return __rtw89_chip_get_fw_def(rtwdev->chip, rtwdev->variant);
}
+static inline
+const struct rtw89_qta_def *rtw89_chip_get_qta_def(struct rtw89_dev *rtwdev)
+{
+ const struct rtw89_chip_variant *variant = rtwdev->variant;
+
+ if (variant && variant->qta_def_override)
+ return variant->qta_def_override;
+
+ return &rtwdev->chip->qta_def;
+}
+
static inline void rtw89_load_txpwr_table(struct rtw89_dev *rtwdev,
const struct rtw89_txpwr_table *tbl)
{
static int hfc_reset_param(struct rtw89_dev *rtwdev)
{
+ const struct rtw89_qta_def *qta_def = rtw89_chip_get_qta_def(rtwdev);
const struct rtw89_hfc_param_ini *param_ini, *param_inis;
struct rtw89_hfc_param *param = &rtwdev->mac.hfc_param;
u8 qta_mode = rtwdev->mac.dle_info.qta_mode;
- param_inis = rtwdev->chip->hfc_param_ini[rtwdev->hci.dle_type];
+ param_inis = qta_def->hfc_param_ini[rtwdev->hci.dle_type];
if (!param_inis)
return -EINVAL;
static const struct rtw89_dle_mem *get_dle_mem_cfg(struct rtw89_dev *rtwdev,
enum rtw89_qta_mode mode)
{
+ const struct rtw89_qta_def *qta_def = rtw89_chip_get_qta_def(rtwdev);
struct rtw89_mac_info *mac = &rtwdev->mac;
const struct rtw89_dle_mem *cfg, *cfgs;
- cfgs = rtwdev->chip->dle_mem[rtwdev->hci.dle_type];
+ cfgs = qta_def->dle_mem[rtwdev->hci.dle_type];
if (!cfgs)
return NULL;
.max_rx_agg_num = 64,
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x2f800,
- .hfc_param_ini = {rtw8851b_hfc_param_ini_pcie,
+ .qta_def = {
+ .hfc_param_ini = {rtw8851b_hfc_param_ini_pcie,
rtw8851b_hfc_param_ini_usb,
rtw8851b_hfc_param_ini_usb,
NULL},
- .dle_mem = {rtw8851b_dle_mem_pcie,
+ .dle_mem = {rtw8851b_dle_mem_pcie,
rtw8851b_dle_mem_usb2,
rtw8851b_dle_mem_usb3,
NULL},
+ },
.wde_qempty_acq_grpnum = 4,
.wde_qempty_mgq_grpsel = 4,
.rf_base_addr = {0xe000},
.max_rx_agg_num = 64,
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x6f800,
- .hfc_param_ini = {rtw8852a_hfc_param_ini_pcie,
+ .qta_def = {
+ .hfc_param_ini = {rtw8852a_hfc_param_ini_pcie,
rtw8852a_hfc_param_ini_usb,
rtw8852a_hfc_param_ini_usb,
NULL},
- .dle_mem = {rtw8852a_dle_mem_pcie,
+ .dle_mem = {rtw8852a_dle_mem_pcie,
rtw8852a_dle_mem_usb,
rtw8852a_dle_mem_usb,
NULL},
+ },
.wde_qempty_acq_grpnum = 16,
.wde_qempty_mgq_grpsel = 16,
.rf_base_addr = {0xc000, 0xd000},
.max_rx_agg_num = 64,
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x2f800,
- .hfc_param_ini = {rtw8852b_hfc_param_ini_pcie,
+ .qta_def = {
+ .hfc_param_ini = {rtw8852b_hfc_param_ini_pcie,
rtw8852b_hfc_param_ini_usb,
rtw8852b_hfc_param_ini_usb,
NULL},
- .dle_mem = {rtw8852b_dle_mem_pcie,
+ .dle_mem = {rtw8852b_dle_mem_pcie,
rtw8852b_dle_mem_usb3,
rtw8852b_dle_mem_usb3,
NULL},
+ },
.wde_qempty_acq_grpnum = 4,
.wde_qempty_mgq_grpsel = 4,
.rf_base_addr = {0xe000, 0xf000},
.max_rx_agg_num = 64,
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x6f800,
- .hfc_param_ini = {rtw8852bt_hfc_param_ini_pcie, NULL, NULL, NULL},
- .dle_mem = {rtw8852bt_dle_mem_pcie, NULL, NULL, NULL},
+ .qta_def = {
+ .hfc_param_ini = {rtw8852bt_hfc_param_ini_pcie, NULL, NULL, NULL},
+ .dle_mem = {rtw8852bt_dle_mem_pcie, NULL, NULL, NULL},
+ },
.wde_qempty_acq_grpnum = 4,
.wde_qempty_mgq_grpsel = 4,
.rf_base_addr = {0xe000, 0xf000},
.max_rx_agg_num = 64,
.dis_2g_40m_ul_ofdma = false,
.rsvd_ple_ofst = 0x6f800,
- .hfc_param_ini = {rtw8852c_hfc_param_ini_pcie,
+ .qta_def = {
+ .hfc_param_ini = {rtw8852c_hfc_param_ini_pcie,
rtw8852c_hfc_param_ini_usb,
rtw8852c_hfc_param_ini_usb,
NULL},
- .dle_mem = {rtw8852c_dle_mem_pcie,
+ .dle_mem = {rtw8852c_dle_mem_pcie,
rtw8852c_dle_mem_usb2,
rtw8852c_dle_mem_usb3,
NULL},
+ },
.wde_qempty_acq_grpnum = 16,
.wde_qempty_mgq_grpsel = 16,
.rf_base_addr = {0xe000, 0xf000},
.max_rx_agg_num = 64,
.dis_2g_40m_ul_ofdma = false,
.rsvd_ple_ofst = 0x8f800,
- .hfc_param_ini = {rtw8922a_hfc_param_ini_pcie,
+ .qta_def = {
+ .hfc_param_ini = {rtw8922a_hfc_param_ini_pcie,
rtw8922a_hfc_param_ini_usb2,
rtw8922a_hfc_param_ini_usb3,
NULL},
- .dle_mem = {rtw8922a_dle_mem_pcie,
+ .dle_mem = {rtw8922a_dle_mem_pcie,
rtw8922a_dle_mem_usb2,
rtw8922a_dle_mem_usb3,
NULL},
+ },
.wde_qempty_acq_grpnum = 4,
.wde_qempty_mgq_grpsel = 4,
.rf_base_addr = {0xe000, 0xf000},
.no_mcs_12_13 = true,
.fw_min_ver_code = RTW89_FW_VER_CODE(0, 35, 54, 0),
.fw_def_override = NULL,
+ .qta_def_override = NULL,
};
EXPORT_SYMBOL(rtw8922ae_vs_variant);
.max_rx_agg_num = 256,
.dis_2g_40m_ul_ofdma = false,
.rsvd_ple_ofst = 0x5f800,
- .hfc_param_ini = {rtw8922d_hfc_param_ini_pcie, NULL, NULL, NULL},
- .dle_mem = {rtw8922d_dle_mem_pcie, NULL, NULL, NULL},
+ .qta_def = {
+ .hfc_param_ini = {rtw8922d_hfc_param_ini_pcie, NULL, NULL, NULL},
+ .dle_mem = {rtw8922d_dle_mem_pcie, NULL, NULL, NULL},
+ },
.wde_qempty_acq_grpnum = 8,
.wde_qempty_mgq_grpsel = 8,
.rf_base_addr = {0x3e000, 0x3f000},
.no_mcs_12_13 = true,
.fw_min_ver_code = RTW89_FW_VER_CODE(0, 0, 0, 0),
.fw_def_override = &rtw8922de_vs_fw_def,
+ .qta_def_override = NULL,
};
EXPORT_SYMBOL(rtw8922de_vs_variant);