.hci_ver = (hciv), \
        .hci_bus = (bus)
 
+enum btrtl_chip_id {
+       CHIP_ID_8723A,
+       CHIP_ID_8723B,
+       CHIP_ID_8821A,
+       CHIP_ID_8761A,
+       CHIP_ID_8822B = 8,
+       CHIP_ID_8723D,
+       CHIP_ID_8821C,
+       CHIP_ID_8822C = 13,
+       CHIP_ID_8761B,
+       CHIP_ID_8852A = 18,
+};
+
 struct id_table {
        __u16 match_flags;
        __u16 lmp_subver;
        u8 *cfg_data;
        int cfg_len;
        bool drop_fw;
+       int project_id;
 };
 
 static const struct id_table ic_id_table[] = {
 
        /* Find project_id in table */
        for (i = 0; i < ARRAY_SIZE(project_id_to_lmp_subver); i++) {
-               if (project_id == project_id_to_lmp_subver[i].id)
+               if (project_id == project_id_to_lmp_subver[i].id) {
+                       btrtl_dev->project_id = project_id;
                        break;
+               }
        }
 
        if (i >= ARRAY_SIZE(project_id_to_lmp_subver)) {
         */
        set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
 
-       if (!btrtl_dev->ic_info)
-               goto done;
-
        /* Enable central-peripheral role (able to create new connections with
         * an existing connection in slave role).
         */
-       switch (btrtl_dev->ic_info->lmp_subver) {
-       case RTL_ROM_LMP_8822B:
+       /* Enable WBS supported for the specific Realtek devices. */
+       switch (btrtl_dev->project_id) {
+       case CHIP_ID_8822C:
+       case CHIP_ID_8852A:
                set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
+               set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
                break;
        default:
                rtl_dev_dbg(hdev, "Central-peripheral role not enabled.");
+               rtl_dev_dbg(hdev, "WBS supported not enabled.");
                break;
        }
 
-done:
        btrtl_free(btrtl_dev);
        return ret;
 }