Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Bluetooth: btrtl: Add the support for RTL8761CUV

Add support for RTL8761CUV BT controller on the USB interface.
Do not apply IC_MATCH_FL_HCIVER when hci_ver is 0 in the ic_id_table.

The device info from /sys/kernel/debug/usb/devices as below.

T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 13 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0bda ProdID=c761 Rev= 2.00
S: Manufacturer=Realtek
S: Product=Bluetooth Controller
S: SerialNumber=10000
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=1ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
I: If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=83(I) Atr=01(Isoc) MxPS= 63 Ivl=1ms
E: Ad=03(O) Atr=01(Isoc) MxPS= 63 Ivl=1ms

Signed-off-by: Max Chou <max.chou@realtek.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

authored by

Max Chou and committed by
Luiz Augusto von Dentz
4a23ce93 b8414ba5

+15 -1
+15 -1
drivers/bluetooth/btrtl.c
··· 72 72 CHIP_ID_8851B = 36, 73 73 CHIP_ID_8922A = 44, 74 74 CHIP_ID_8852BT = 47, 75 + CHIP_ID_8761C = 51, 75 76 }; 76 77 77 78 struct id_table { ··· 231 230 .cfg_name = "rtl_bt/rtl8761bu_config", 232 231 .hw_info = "rtl8761bu" }, 233 232 233 + /* 8761CU */ 234 + { IC_INFO(RTL_ROM_LMP_8761A, 0x0e, 0, HCI_USB), 235 + .config_needed = false, 236 + .has_rom_version = true, 237 + .fw_name = "rtl_bt/rtl8761cu_fw", 238 + .cfg_name = "rtl_bt/rtl8761cu_config", 239 + .hw_info = "rtl8761cu" }, 240 + 234 241 /* 8822C with UART interface */ 235 242 { IC_INFO(RTL_ROM_LMP_8822B, 0xc, 0x8, HCI_UART), 236 243 .config_needed = true, ··· 353 344 (ic_id_table[i].hci_rev != hci_rev)) 354 345 continue; 355 346 if ((ic_id_table[i].match_flags & IC_MATCH_FL_HCIVER) && 356 - (ic_id_table[i].hci_ver != hci_ver)) 347 + (ic_id_table[i].hci_ver != hci_ver) && 348 + (ic_id_table[i].hci_ver != 0)) 357 349 continue; 358 350 if ((ic_id_table[i].match_flags & IC_MATCH_FL_HCIBUS) && 359 351 (ic_id_table[i].hci_bus != hci_bus)) ··· 672 662 { RTL_ROM_LMP_8851B, 36 }, /* 8851B */ 673 663 { RTL_ROM_LMP_8922A, 44 }, /* 8922A */ 674 664 { RTL_ROM_LMP_8852A, 47 }, /* 8852BT */ 665 + { RTL_ROM_LMP_8761A, 51 }, /* 8761C */ 675 666 }; 676 667 677 668 if (btrtl_dev->fw_len <= 8) ··· 1316 1305 case CHIP_ID_8851B: 1317 1306 case CHIP_ID_8922A: 1318 1307 case CHIP_ID_8852BT: 1308 + case CHIP_ID_8761C: 1319 1309 hci_set_quirk(hdev, HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED); 1320 1310 1321 1311 /* RTL8852C needs to transmit mSBC data continuously without ··· 1536 1524 MODULE_FIRMWARE("rtl_bt/rtl8761b_config.bin"); 1537 1525 MODULE_FIRMWARE("rtl_bt/rtl8761bu_fw.bin"); 1538 1526 MODULE_FIRMWARE("rtl_bt/rtl8761bu_config.bin"); 1527 + MODULE_FIRMWARE("rtl_bt/rtl8761cu_fw.bin"); 1528 + MODULE_FIRMWARE("rtl_bt/rtl8761cu_config.bin"); 1539 1529 MODULE_FIRMWARE("rtl_bt/rtl8821a_fw.bin"); 1540 1530 MODULE_FIRMWARE("rtl_bt/rtl8821a_config.bin"); 1541 1531 MODULE_FIRMWARE("rtl_bt/rtl8821c_fw.bin");