* [PATCH] Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT @ 2023-12-26 1:57 max.chou 2023-12-26 8:38 ` Paul Menzel 0 siblings, 1 reply; 3+ messages in thread From: max.chou @ 2023-12-26 1:57 UTC (permalink / raw) To: marcel Cc: johan.hedberg, luiz.dentz, linux-bluetooth, linux-kernel, alex_lu, hildawu, karenhsu, max.chou From: Max Chou <max.chou@realtek.com> Add the support for RTL8852BT/RTL8852BE-VT BT controller on USB interface. The necessary firmware will be submitted to linux-firmware project. The device info from /sys/kernel/debug/usb/devices as below. T: Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#= 8 Spd=12 MxCh= 0 D: Ver= 1.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=0bda ProdID=8520 Rev= 0.00 S: Manufacturer=Realtek S: Product=Bluetooth Radio S: SerialNumber=00e04c000001 C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=81(I) Atr=03(Int.) MxPS= 16 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=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms Signed-off-by: Max Chou <max.chou@realtek.com> --- drivers/bluetooth/btrtl.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c index 277d039ecbb4..cc50de69e8dc 100644 --- a/drivers/bluetooth/btrtl.c +++ b/drivers/bluetooth/btrtl.c @@ -69,6 +69,7 @@ enum btrtl_chip_id { CHIP_ID_8852B = 20, CHIP_ID_8852C = 25, CHIP_ID_8851B = 36, + CHIP_ID_8852BT = 47, }; struct id_table { @@ -307,6 +308,15 @@ static const struct id_table ic_id_table[] = { .fw_name = "rtl_bt/rtl8851bu_fw", .cfg_name = "rtl_bt/rtl8851bu_config", .hw_info = "rtl8851bu" }, + + /* 8852BT/8852BE-VT */ + { IC_INFO(RTL_ROM_LMP_8852A, 0x87, 0xc, HCI_USB), + .config_needed = false, + .has_rom_version = true, + .has_msft_ext = true, + .fw_name = "rtl_bt/rtl8852btu_fw", + .cfg_name = "rtl_bt/rtl8852btu_config", + .hw_info = "rtl8852btu" }, }; static const struct id_table *btrtl_match_ic(u16 lmp_subver, u16 hci_rev, @@ -645,6 +655,7 @@ static int rtlbt_parse_firmware(struct hci_dev *hdev, { RTL_ROM_LMP_8852A, 20 }, /* 8852B */ { RTL_ROM_LMP_8852A, 25 }, /* 8852C */ { RTL_ROM_LMP_8851B, 36 }, /* 8851B */ + { RTL_ROM_LMP_8852A, 47 }, /* 8852BT */ }; if (btrtl_dev->fw_len <= 8) @@ -1275,6 +1286,7 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev) case CHIP_ID_8852B: case CHIP_ID_8852C: case CHIP_ID_8851B: + case CHIP_ID_8852BT: set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks); set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks); @@ -1505,6 +1517,8 @@ MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin"); MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin"); MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin"); MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin"); +MODULE_FIRMWARE("rtl_bt/rtl8852btu_fw.bin"); +MODULE_FIRMWARE("rtl_bt/rtl8852btu_config.bin"); MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin"); MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw_v2.bin"); MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin"); -- 2.25.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT 2023-12-26 1:57 [PATCH] Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT max.chou @ 2023-12-26 8:38 ` Paul Menzel 2023-12-26 11:28 ` Max Chou 0 siblings, 1 reply; 3+ messages in thread From: Paul Menzel @ 2023-12-26 8:38 UTC (permalink / raw) To: Max Chou Cc: marcel, johan.hedberg, luiz.dentz, linux-bluetooth, linux-kernel, alex_lu, hildawu, karenhsu Dear Max, Thank you for your patch. Am 26.12.23 um 02:57 schrieb max.chou@realtek.com: > From: Max Chou <max.chou@realtek.com> > > Add the support for RTL8852BT/RTL8852BE-VT BT controller on USB interface. It’d be great if you stated, how it differs from the existing devices. Judging from your diff, only the ids need to be added. > The necessary firmware will be submitted to linux-firmware project. > > The device info from /sys/kernel/debug/usb/devices as below. > > T: Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#= 8 Spd=12 MxCh= 0 > D: Ver= 1.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 > P: Vendor=0bda ProdID=8520 Rev= 0.00 > S: Manufacturer=Realtek > S: Product=Bluetooth Radio > S: SerialNumber=00e04c000001 > C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA > I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=81(I) Atr=03(Int.) MxPS= 16 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=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms > > Signed-off-by: Max Chou <max.chou@realtek.com> > --- > drivers/bluetooth/btrtl.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c > index 277d039ecbb4..cc50de69e8dc 100644 > --- a/drivers/bluetooth/btrtl.c > +++ b/drivers/bluetooth/btrtl.c > @@ -69,6 +69,7 @@ enum btrtl_chip_id { > CHIP_ID_8852B = 20, > CHIP_ID_8852C = 25, > CHIP_ID_8851B = 36, > + CHIP_ID_8852BT = 47, > }; > > struct id_table { > @@ -307,6 +308,15 @@ static const struct id_table ic_id_table[] = { > .fw_name = "rtl_bt/rtl8851bu_fw", > .cfg_name = "rtl_bt/rtl8851bu_config", > .hw_info = "rtl8851bu" }, > + > + /* 8852BT/8852BE-VT */ > + { IC_INFO(RTL_ROM_LMP_8852A, 0x87, 0xc, HCI_USB), > + .config_needed = false, > + .has_rom_version = true, > + .has_msft_ext = true, > + .fw_name = "rtl_bt/rtl8852btu_fw", > + .cfg_name = "rtl_bt/rtl8852btu_config", > + .hw_info = "rtl8852btu" }, > }; > > static const struct id_table *btrtl_match_ic(u16 lmp_subver, u16 hci_rev, > @@ -645,6 +655,7 @@ static int rtlbt_parse_firmware(struct hci_dev *hdev, > { RTL_ROM_LMP_8852A, 20 }, /* 8852B */ > { RTL_ROM_LMP_8852A, 25 }, /* 8852C */ > { RTL_ROM_LMP_8851B, 36 }, /* 8851B */ > + { RTL_ROM_LMP_8852A, 47 }, /* 8852BT */ > }; > > if (btrtl_dev->fw_len <= 8) > @@ -1275,6 +1286,7 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev) > case CHIP_ID_8852B: > case CHIP_ID_8852C: > case CHIP_ID_8851B: > + case CHIP_ID_8852BT: > set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks); > set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks); > > @@ -1505,6 +1517,8 @@ MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin"); > +MODULE_FIRMWARE("rtl_bt/rtl8852btu_fw.bin"); > +MODULE_FIRMWARE("rtl_bt/rtl8852btu_config.bin"); Should btu be ordered before bu? > MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw_v2.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin"); Kind regards, Paul ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT 2023-12-26 8:38 ` Paul Menzel @ 2023-12-26 11:28 ` Max Chou 0 siblings, 0 replies; 3+ messages in thread From: Max Chou @ 2023-12-26 11:28 UTC (permalink / raw) To: Paul Menzel Cc: marcel@holtmann.org, johan.hedberg@gmail.com, luiz.dentz@gmail.com, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, alex_lu@realsil.com.cn, Hilda Wu, Karen Hsu Hi! Paul, If the USB VID is 0x0bda, it will be determined to Realtek device as below. /* Realtek Bluetooth devices */ { USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01), .driver_info = BTUSB_REALTEK }, In btrtl.c, btrtl_setup_realtek() will judge what the chip is and start the initialization for firmware download. Hence, PID is not necessary. However, I will send the v2 for the ID info. Thanks for the advice. BRs, Max -----Original Message----- From: Paul Menzel <pmenzel@molgen.mpg.de> Sent: Tuesday, December 26, 2023 4:39 PM To: Max Chou <max.chou@realtek.com> Cc: marcel@holtmann.org; johan.hedberg@gmail.com; luiz.dentz@gmail.com; linux-bluetooth@vger.kernel.org; linux-kernel@vger.kernel.org; alex_lu@realsil.com.cn; Hilda Wu <hildawu@realtek.com>; Karen Hsu <karenhsu@realtek.com> Subject: Re: [PATCH] Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT External mail. Dear Max, Thank you for your patch. Am 26.12.23 um 02:57 schrieb max.chou@realtek.com: > From: Max Chou <max.chou@realtek.com> > > Add the support for RTL8852BT/RTL8852BE-VT BT controller on USB interface. It’d be great if you stated, how it differs from the existing devices. Judging from your diff, only the ids need to be added. > The necessary firmware will be submitted to linux-firmware project. > > The device info from /sys/kernel/debug/usb/devices as below. > > T: Bus=02 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#= 8 Spd=12 MxCh= 0 > D: Ver= 1.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 > P: Vendor=0bda ProdID=8520 Rev= 0.00 > S: Manufacturer=Realtek > S: Product=Bluetooth Radio > S: SerialNumber=00e04c000001 > C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA > I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=81(I) Atr=03(Int.) MxPS= 16 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=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms > E: Ad=83(I) 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=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms > > Signed-off-by: Max Chou <max.chou@realtek.com> > --- > drivers/bluetooth/btrtl.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c > index 277d039ecbb4..cc50de69e8dc 100644 > --- a/drivers/bluetooth/btrtl.c > +++ b/drivers/bluetooth/btrtl.c > @@ -69,6 +69,7 @@ enum btrtl_chip_id { > CHIP_ID_8852B = 20, > CHIP_ID_8852C = 25, > CHIP_ID_8851B = 36, > + CHIP_ID_8852BT = 47, > }; > > struct id_table { > @@ -307,6 +308,15 @@ static const struct id_table ic_id_table[] = { > .fw_name = "rtl_bt/rtl8851bu_fw", > .cfg_name = "rtl_bt/rtl8851bu_config", > .hw_info = "rtl8851bu" }, > + > + /* 8852BT/8852BE-VT */ > + { IC_INFO(RTL_ROM_LMP_8852A, 0x87, 0xc, HCI_USB), > + .config_needed = false, > + .has_rom_version = true, > + .has_msft_ext = true, > + .fw_name = "rtl_bt/rtl8852btu_fw", > + .cfg_name = "rtl_bt/rtl8852btu_config", > + .hw_info = "rtl8852btu" }, > }; > > static const struct id_table *btrtl_match_ic(u16 lmp_subver, u16 > hci_rev, @@ -645,6 +655,7 @@ static int rtlbt_parse_firmware(struct hci_dev *hdev, > { RTL_ROM_LMP_8852A, 20 }, /* 8852B */ > { RTL_ROM_LMP_8852A, 25 }, /* 8852C */ > { RTL_ROM_LMP_8851B, 36 }, /* 8851B */ > + { RTL_ROM_LMP_8852A, 47 }, /* 8852BT */ > }; > > if (btrtl_dev->fw_len <= 8) > @@ -1275,6 +1286,7 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev) > case CHIP_ID_8852B: > case CHIP_ID_8852C: > case CHIP_ID_8851B: > + case CHIP_ID_8852BT: > set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks); > set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, > &hdev->quirks); > > @@ -1505,6 +1517,8 @@ MODULE_FIRMWARE("rtl_bt/rtl8852bs_fw.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852bs_config.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852bu_fw.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852bu_config.bin"); > +MODULE_FIRMWARE("rtl_bt/rtl8852btu_fw.bin"); > +MODULE_FIRMWARE("rtl_bt/rtl8852btu_config.bin"); Should btu be ordered before bu? > MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852cu_fw_v2.bin"); > MODULE_FIRMWARE("rtl_bt/rtl8852cu_config.bin"); Kind regards, Paul ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-12-26 11:29 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-26 1:57 [PATCH] Bluetooth: btrtl: Add the support for RTL8852BT/RTL8852BE-VT max.chou 2023-12-26 8:38 ` Paul Menzel 2023-12-26 11:28 ` Max Chou
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox