@@ -4273,6 +4273,7 @@ struct rtw89_chip_info {
bool dis_2g_40m_ul_ofdma;
u32 rsvd_ple_ofst;
const struct rtw89_hfc_param_ini *hfc_param_ini_pcie;
+ const struct rtw89_hfc_param_ini *hfc_param_ini_usb;
const struct rtw89_dle_mem *dle_mem_pcie;
const struct rtw89_dle_mem *dle_mem_usb2;
const struct rtw89_dle_mem *dle_mem_usb3;
@@ -882,12 +882,16 @@ static int hfc_reset_param(struct rtw89_dev *rtwdev)
switch (rtwdev->hci.type) {
case RTW89_HCI_TYPE_PCIE:
param_ini = rtwdev->chip->hfc_param_ini_pcie[qta_mode];
- param->en = 0;
+ break;
+ case RTW89_HCI_TYPE_USB:
+ param_ini = rtwdev->chip->hfc_param_ini_usb[qta_mode];
break;
default:
return -EINVAL;
}
+ param->en = 0;
+
if (param_ini.pub_cfg)
param->pub_cfg = *param_ini.pub_cfg;
@@ -51,6 +51,48 @@ static const struct rtw89_hfc_param_ini rtw8851b_hfc_param_ini_pcie[] = {
[RTW89_QTA_INVALID] = {NULL},
};
+static const struct rtw89_hfc_ch_cfg rtw8851b_hfc_chcfg_usb[] = {
+ {18, 152, grp_0}, /* ACH 0 */
+ {18, 152, grp_0}, /* ACH 1 */
+ {18, 152, grp_0}, /* ACH 2 */
+ {18, 152, grp_0}, /* ACH 3 */
+ {0, 0, grp_0}, /* ACH 4 */
+ {0, 0, grp_0}, /* ACH 5 */
+ {0, 0, grp_0}, /* ACH 6 */
+ {0, 0, grp_0}, /* ACH 7 */
+ {18, 152, grp_0}, /* B0MGQ */
+ {18, 152, grp_0}, /* B0HIQ */
+ {0, 0, grp_0}, /* B1MGQ */
+ {0, 0, grp_0}, /* B1HIQ */
+ {0, 0, 0} /* FWCMDQ */
+};
+
+static const struct rtw89_hfc_pub_cfg rtw8851b_hfc_pubcfg_usb = {
+ 152, /* Group 0 */
+ 0, /* Group 1 */
+ 152, /* Public Max */
+ 0 /* WP threshold */
+};
+
+static const struct rtw89_hfc_prec_cfg rtw8851b_hfc_preccfg_usb = {
+ 9, /* CH 0-11 pre-cost */
+ 32, /* H2C pre-cost */
+ 64, /* WP CH 0-7 pre-cost */
+ 24, /* WP CH 8-11 pre-cost */
+ 1, /* CH 0-11 full condition */
+ 1, /* H2C full condition */
+ 1, /* WP CH 0-7 full condition */
+ 1, /* WP CH 8-11 full condition */
+};
+
+static const struct rtw89_hfc_param_ini rtw8851b_hfc_param_ini_usb[] = {
+ [RTW89_QTA_SCC] = {rtw8851b_hfc_chcfg_usb, &rtw8851b_hfc_pubcfg_usb,
+ &rtw8851b_hfc_preccfg_usb, RTW89_HCIFC_STF},
+ [RTW89_QTA_DLFW] = {NULL, NULL,
+ &rtw8851b_hfc_preccfg_usb, RTW89_HCIFC_STF},
+ [RTW89_QTA_INVALID] = {NULL},
+};
+
static const struct rtw89_dle_mem rtw8851b_dle_mem_pcie[] = {
[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size6,
&rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
@@ -2491,6 +2533,7 @@ const struct rtw89_chip_info rtw8851b_chip_info = {
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x2f800,
.hfc_param_ini_pcie = rtw8851b_hfc_param_ini_pcie,
+ .hfc_param_ini_usb = rtw8851b_hfc_param_ini_usb,
.dle_mem_pcie = rtw8851b_dle_mem_pcie,
.dle_mem_usb2 = rtw8851b_dle_mem_usb2,
.dle_mem_usb3 = rtw8851b_dle_mem_usb3,
@@ -2184,6 +2184,7 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x6f800,
.hfc_param_ini_pcie = rtw8852a_hfc_param_ini_pcie,
+ .hfc_param_ini_usb = NULL,
.dle_mem_pcie = rtw8852a_dle_mem_pcie,
.dle_mem_usb2 = NULL,
.dle_mem_usb3 = NULL,
@@ -820,6 +820,7 @@ const struct rtw89_chip_info rtw8852b_chip_info = {
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x2f800,
.hfc_param_ini_pcie = rtw8852b_hfc_param_ini_pcie,
+ .hfc_param_ini_usb = NULL,
.dle_mem_pcie = rtw8852b_dle_mem_pcie,
.dle_mem_usb2 = NULL,
.dle_mem_usb3 = NULL,
@@ -754,6 +754,7 @@ const struct rtw89_chip_info rtw8852bt_chip_info = {
.dis_2g_40m_ul_ofdma = true,
.rsvd_ple_ofst = 0x6f800,
.hfc_param_ini_pcie = rtw8852bt_hfc_param_ini_pcie,
+ .hfc_param_ini_usb = NULL,
.dle_mem_pcie = rtw8852bt_dle_mem_pcie,
.dle_mem_usb2 = NULL,
.dle_mem_usb3 = NULL,
@@ -3004,6 +3004,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = {
.dis_2g_40m_ul_ofdma = false,
.rsvd_ple_ofst = 0x6f800,
.hfc_param_ini_pcie = rtw8852c_hfc_param_ini_pcie,
+ .hfc_param_ini_usb = NULL,
.dle_mem_pcie = rtw8852c_dle_mem_pcie,
.dle_mem_usb2 = NULL,
.dle_mem_usb3 = NULL,
@@ -2816,6 +2816,7 @@ const struct rtw89_chip_info rtw8922a_chip_info = {
.dis_2g_40m_ul_ofdma = false,
.rsvd_ple_ofst = 0x8f800,
.hfc_param_ini_pcie = rtw8922a_hfc_param_ini_pcie,
+ .hfc_param_ini_usb = NULL,
.dle_mem_pcie = rtw8922a_dle_mem_pcie,
.dle_mem_usb2 = NULL,
.dle_mem_usb3 = NULL,
Add hfc_param_ini_usb to struct rtw89_chip_info. For now initialise it only for RTL8851B. Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com> --- drivers/net/wireless/realtek/rtw89/core.h | 1 + drivers/net/wireless/realtek/rtw89/mac.c | 6 ++- drivers/net/wireless/realtek/rtw89/rtw8851b.c | 43 +++++++++++++++++++ drivers/net/wireless/realtek/rtw89/rtw8852a.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852b.c | 1 + .../net/wireless/realtek/rtw89/rtw8852bt.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852c.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8922a.c | 1 + 8 files changed, 54 insertions(+), 1 deletion(-)