]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw89: coex: Get Bluetooth desired version by WiFi firmware version
authorChing-Te Ku <ku920601@realtek.com>
Mon, 16 Jun 2025 09:02:46 +0000 (17:02 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 24 Jun 2025 06:26:09 +0000 (14:26 +0800)
Because when Wi-Fi/Bluetooth want to communicate with each other, their
contact window are their firmware. So the desired version code is more
reasonable to change with firmware version.

Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20250616090252.51098-6-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/coex.c
drivers/net/wireless/realtek/rtw89/core.h
drivers/net/wireless/realtek/rtw89/rtw8851b.c
drivers/net/wireless/realtek/rtw89/rtw8852a.c
drivers/net/wireless/realtek/rtw89/rtw8852b.c
drivers/net/wireless/realtek/rtw89/rtw8852bt.c
drivers/net/wireless/realtek/rtw89/rtw8852c.c
drivers/net/wireless/realtek/rtw89/rtw8922a.c

index a4c4b56e7fddbd8c3212043ccd9dee7cfea9b322..d34af499e13709034238cc8fe8b02561e9740eed 100644 (file)
@@ -139,7 +139,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 7,  .fcxbtscan = 7,  .fcxbtafh = 7, .fcxbtdevinfo = 7,
         .fwlrole = 7,   .frptmap = 3,    .fcxctrl = 7,  .fcxinit = 7,
         .fwevntrptl = 1, .fwc2hfunc = 2, .drvinfo_type = 1, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 8,
        },
        {RTL8852BT, RTW89_FW_VER_CODE(0, 29, 90, 0),
         .fcxbtcrpt = 7, .fcxtdma = 7,    .fcxslots = 7, .fcxcysta = 7,
@@ -147,7 +147,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 7,  .fcxbtscan = 7,  .fcxbtafh = 7, .fcxbtdevinfo = 7,
         .fwlrole = 7,   .frptmap = 3,    .fcxctrl = 7,  .fcxinit = 7,
         .fwevntrptl = 1, .fwc2hfunc = 2, .drvinfo_type = 1, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 8,
        },
        {RTL8922A, RTW89_FW_VER_CODE(0, 35, 71, 0),
         .fcxbtcrpt = 8, .fcxtdma = 7,    .fcxslots = 7, .fcxcysta = 7,
@@ -155,7 +155,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 7,  .fcxbtscan = 7,  .fcxbtafh = 7, .fcxbtdevinfo = 7,
         .fwlrole = 8,   .frptmap = 4,    .fcxctrl = 7,  .fcxinit = 7,
         .fwevntrptl = 1, .fwc2hfunc = 3, .drvinfo_type = 2, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 1,  .fcxmlo = 1,
+        .max_role_num = 6, .fcxosi = 1,  .fcxmlo = 1,   .bt_desired = 9,
        },
        {RTL8922A, RTW89_FW_VER_CODE(0, 35, 63, 0),
         .fcxbtcrpt = 8, .fcxtdma = 7,    .fcxslots = 7, .fcxcysta = 7,
@@ -163,7 +163,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 7,  .fcxbtscan = 7,  .fcxbtafh = 7, .fcxbtdevinfo = 7,
         .fwlrole = 8,   .frptmap = 4,    .fcxctrl = 7,  .fcxinit = 7,
         .fwevntrptl = 1, .fwc2hfunc = 3, .drvinfo_type = 2, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 1,  .fcxmlo = 1,
+        .max_role_num = 6, .fcxosi = 1,  .fcxmlo = 1,   .bt_desired = 9,
        },
        {RTL8922A, RTW89_FW_VER_CODE(0, 35, 8, 0),
         .fcxbtcrpt = 8, .fcxtdma = 7,    .fcxslots = 7, .fcxcysta = 7,
@@ -171,7 +171,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 7,  .fcxbtscan = 7,  .fcxbtafh = 7, .fcxbtdevinfo = 7,
         .fwlrole = 8,   .frptmap = 3,    .fcxctrl = 7,  .fcxinit = 7,
         .fwevntrptl = 1, .fwc2hfunc = 1, .drvinfo_type = 1, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8851B, RTW89_FW_VER_CODE(0, 29, 29, 0),
         .fcxbtcrpt = 105, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 5,
@@ -179,7 +179,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 2,  .fcxbtafh = 2, .fcxbtdevinfo = 1,
         .fwlrole = 2,   .frptmap = 3,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852C, RTW89_FW_VER_CODE(0, 27, 57, 0),
         .fcxbtcrpt = 4, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 3,
@@ -187,7 +187,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 2, .fcxbtdevinfo = 1,
         .fwlrole = 1,   .frptmap = 3,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1280,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852C, RTW89_FW_VER_CODE(0, 27, 42, 0),
         .fcxbtcrpt = 4, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 3,
@@ -195,7 +195,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 2, .fcxbtdevinfo = 1,
         .fwlrole = 1,   .frptmap = 2,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1280,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852C, RTW89_FW_VER_CODE(0, 27, 0, 0),
         .fcxbtcrpt = 4, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 3,
@@ -203,7 +203,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 1, .fcxbtdevinfo = 1,
         .fwlrole = 1,   .frptmap = 2,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1280,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852B, RTW89_FW_VER_CODE(0, 29, 29, 0),
         .fcxbtcrpt = 105, .fcxtdma = 3,  .fcxslots = 1, .fcxcysta = 5,
@@ -211,7 +211,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 2,  .fcxbtafh = 2, .fcxbtdevinfo = 1,
         .fwlrole = 2,   .frptmap = 3,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852B, RTW89_FW_VER_CODE(0, 29, 14, 0),
         .fcxbtcrpt = 5, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 4,
@@ -219,7 +219,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 2, .fcxbtdevinfo = 1,
         .fwlrole = 1,   .frptmap = 3,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1800,
-        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 6, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852B, RTW89_FW_VER_CODE(0, 27, 0, 0),
         .fcxbtcrpt = 4, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 3,
@@ -227,7 +227,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 1, .fcxbtdevinfo = 1,
         .fwlrole = 1,   .frptmap = 1,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1280,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852A, RTW89_FW_VER_CODE(0, 13, 37, 0),
         .fcxbtcrpt = 4, .fcxtdma = 3,    .fcxslots = 1, .fcxcysta = 3,
@@ -235,7 +235,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 2, .fcxbtdevinfo = 1,
         .fwlrole = 1,   .frptmap = 3,    .fcxctrl = 1,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 0, .drvinfo_type = 0, .info_buf = 1280,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
        {RTL8852A, RTW89_FW_VER_CODE(0, 13, 0, 0),
         .fcxbtcrpt = 1, .fcxtdma = 1,    .fcxslots = 1, .fcxcysta = 2,
@@ -243,7 +243,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 1, .fcxbtdevinfo = 1,
         .fwlrole = 0,   .frptmap = 0,    .fcxctrl = 0,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 0, .drvinfo_type = 0, .info_buf = 1024,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
 
        /* keep it to be the last as default entry */
@@ -253,7 +253,7 @@ static const struct rtw89_btc_ver rtw89_btc_ver_defs[] = {
         .fcxbtver = 1,  .fcxbtscan = 1,  .fcxbtafh = 1, .fcxbtdevinfo = 1,
         .fwlrole = 0,   .frptmap = 0,    .fcxctrl = 0,  .fcxinit = 0,
         .fwevntrptl = 0, .fwc2hfunc = 1, .drvinfo_type = 0, .info_buf = 1024,
-        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,
+        .max_role_num = 5, .fcxosi = 0,  .fcxmlo = 0,   .bt_desired = 7,
        },
 };
 
@@ -8823,8 +8823,8 @@ static int _show_cx_info(struct rtw89_dev *rtwdev, char *buf, size_t bufsz)
 
        p += scnprintf(p, end - p, "BT_FW_coex:%d(%s, desired:%d)\n",
                       bt->ver_info.fw_coex,
-                      (bt->ver_info.fw_coex >= chip->btcx_desired ?
-                       "Match" : "Mismatch"), chip->btcx_desired);
+                      (bt->ver_info.fw_coex >= ver->bt_desired ?
+                       "Match" : "Mismatch"), ver->bt_desired);
 
        if (bt->enable.now && bt->ver_info.fw == 0)
                rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_BT_VER_INFO, true);
index 3b046727e04a9366e317ce79c410453ecc827d2a..cdacf100a59ad47f51f2ff905ce4eb1abad2c5f5 100644 (file)
@@ -3199,6 +3199,7 @@ struct rtw89_btc_ver {
        u8 max_role_num;
        u8 fcxosi;
        u8 fcxmlo;
+       u8 bt_desired;
 };
 
 struct rtw89_btc_btf_fwinfo {
@@ -4422,7 +4423,6 @@ struct rtw89_chip_info {
 
        u32 para_ver;
        u32 wlcx_desired;
-       u8 btcx_desired;
        u8 scbd;
        u8 mailbox;
 
index 39df1a255095e00cef55f6500ca07b27717a23fa..c55833f259deabc6caabec3f694fe228ff0a632f 100644 (file)
@@ -2529,7 +2529,6 @@ const struct rtw89_chip_info rtw8851b_chip_info = {
        .phycap_size            = 128,
        .para_ver               = 0,
        .wlcx_desired           = 0x06000000,
-       .btcx_desired           = 0x7,
        .scbd                   = 0x1,
        .mailbox                = 0x1,
 
index dc4eab2e791995669a59aaee5e5a86dc4379bac8..080636e8d0c31970b17f7906881e62d50919fa0b 100644 (file)
@@ -2247,7 +2247,6 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
        .phycap_size            = 128,
        .para_ver               = 0x0,
        .wlcx_desired           = 0x06000000,
-       .btcx_desired           = 0x7,
        .scbd                   = 0x1,
        .mailbox                = 0x1,
 
index 1f1e10f2b39d7e4ff556aada1a5878bbc424ffa0..c0bf80450acfae4bb4c8749bf8360de280d66c66 100644 (file)
@@ -883,7 +883,6 @@ const struct rtw89_chip_info rtw8852b_chip_info = {
        .phycap_size            = 128,
        .para_ver               = 0,
        .wlcx_desired           = 0x05050000,
-       .btcx_desired           = 0x5,
        .scbd                   = 0x1,
        .mailbox                = 0x1,
 
index 4c34f50379087809a9b9c1e34cf89bfa89a53bbb..95e088734423641430df0ba96b4619ed4a5a26ec 100644 (file)
@@ -816,7 +816,6 @@ const struct rtw89_chip_info rtw8852bt_chip_info = {
        .phycap_size            = 128,
        .para_ver               = 0,
        .wlcx_desired           = 0x070e0000,
-       .btcx_desired           = 0x7,
        .scbd                   = 0x1,
        .mailbox                = 0x1,
 
index b39add1b798c0f5cc9926ef1cdc83f216840ab6c..8f3d0c91a3f8d7e5f20a15ae8cef18265d1ddc62 100644 (file)
@@ -3070,7 +3070,6 @@ const struct rtw89_chip_info rtw8852c_chip_info = {
        .phycap_size            = 0x60,
        .para_ver               = 0x1,
        .wlcx_desired           = 0x06000000,
-       .btcx_desired           = 0x7,
        .scbd                   = 0x1,
        .mailbox                = 0x1,
 
index ca32ccb001074e568691c8ea7af3c6a0a2f7365a..603212ed45589e9618b51adf1d33fe7fded5868e 100644 (file)
@@ -2923,7 +2923,6 @@ const struct rtw89_chip_info rtw8922a_chip_info = {
        .phycap_size            = 0x38,
        .para_ver               = 0xf,
        .wlcx_desired           = 0x07110000,
-       .btcx_desired           = 0x7,
        .scbd                   = 0x1,
        .mailbox                = 0x1,