Bluetooth: btrtl: Set VsMsftOpCode based on device table
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 28 Sep 2021 18:10:50 +0000 (20:10 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 28 Sep 2021 21:45:31 +0000 (14:45 -0700)
The device table already has the option to hold device specific details
and thus include the support for Microsoft extensions there as well.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btrtl.c

index 5a1090b7c69a20f719ba2329b0667caf05e1248a..22b84405c257219e20902a4069b32dc8cb5db065 100644 (file)
@@ -59,6 +59,7 @@ struct id_table {
        __u8 hci_bus;
        bool config_needed;
        bool has_rom_version;
+       bool has_msft_ext;
        char *fw_name;
        char *cfg_name;
 };
@@ -135,6 +136,7 @@ static const struct id_table ic_id_table[] = {
        { IC_INFO(RTL_ROM_LMP_8761A, 0xb, 0xa, HCI_UART),
          .config_needed = false,
          .has_rom_version = true,
+         .has_msft_ext = true,
          .fw_name  = "rtl_bt/rtl8761b_fw.bin",
          .cfg_name = "rtl_bt/rtl8761b_config" },
 
@@ -149,6 +151,7 @@ static const struct id_table ic_id_table[] = {
        { IC_INFO(RTL_ROM_LMP_8822B, 0xc, 0xa, HCI_UART),
          .config_needed = true,
          .has_rom_version = true,
+         .has_msft_ext = true,
          .fw_name  = "rtl_bt/rtl8822cs_fw.bin",
          .cfg_name = "rtl_bt/rtl8822cs_config" },
 
@@ -156,6 +159,7 @@ static const struct id_table ic_id_table[] = {
        { IC_INFO(RTL_ROM_LMP_8822B, 0xc, 0xa, HCI_USB),
          .config_needed = false,
          .has_rom_version = true,
+         .has_msft_ext = true,
          .fw_name  = "rtl_bt/rtl8822cu_fw.bin",
          .cfg_name = "rtl_bt/rtl8822cu_config" },
 
@@ -163,6 +167,7 @@ static const struct id_table ic_id_table[] = {
        { IC_INFO(RTL_ROM_LMP_8822B, 0xb, 0x7, HCI_USB),
          .config_needed = true,
          .has_rom_version = true,
+         .has_msft_ext = true,
          .fw_name  = "rtl_bt/rtl8822b_fw.bin",
          .cfg_name = "rtl_bt/rtl8822b_config" },
 
@@ -170,6 +175,7 @@ static const struct id_table ic_id_table[] = {
        { IC_INFO(RTL_ROM_LMP_8852A, 0xa, 0xb, HCI_USB),
          .config_needed = false,
          .has_rom_version = true,
+         .has_msft_ext = true,
          .fw_name  = "rtl_bt/rtl8852au_fw.bin",
          .cfg_name = "rtl_bt/rtl8852au_config" },
        };
@@ -684,12 +690,8 @@ out_free:
        /* The following chips supports the Microsoft vendor extension,
         * therefore set the corresponding VsMsftOpCode.
         */
-       switch (lmp_subver) {
-       case RTL_ROM_LMP_8822B:
-       case RTL_ROM_LMP_8852A:
+       if (btrtl_dev->ic_info->has_msft_ext)
                hci_set_msft_opcode(hdev, 0xFCF0);
-               break;
-       }
 
        return btrtl_dev;