aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/generic/backport-5.10/883-v5.11-Bluetooth-btrtl-Refine-the-ic_id_table-for-clearer-a.patch183
-rw-r--r--target/linux/generic/backport-5.10/884-v5.14-Bluetooth-btrtl-rename-USB-fw-for-RTL8761.patch39
2 files changed, 222 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.10/883-v5.11-Bluetooth-btrtl-Refine-the-ic_id_table-for-clearer-a.patch b/target/linux/generic/backport-5.10/883-v5.11-Bluetooth-btrtl-Refine-the-ic_id_table-for-clearer-a.patch
new file mode 100644
index 0000000000..0975033d83
--- /dev/null
+++ b/target/linux/generic/backport-5.10/883-v5.11-Bluetooth-btrtl-Refine-the-ic_id_table-for-clearer-a.patch
@@ -0,0 +1,183 @@
+From 6f9ff24645f55ffae12ef717b4f221c3e7dfe115 Mon Sep 17 00:00:00 2001
+From: Max Chou <max.chou@realtek.com>
+Date: Wed, 4 Nov 2020 20:04:14 +0800
+Subject: [PATCH] Bluetooth: btrtl: Refine the ic_id_table for clearer and more
+ regular
+
+Enhance the ic_id_table that it's able to maintain regularly.
+To judge which chip should be initialized by LMP subversion, HCI revision,
+ HCI version and HCI bus which were given in the ic_id_table.
+Also, refine the incorrect LMP subversion of ROM for RTL8723D and
+RTL8723A.
+
+Suggested-by: Alex Lu <alex_lu@realsil.com.cn>
+Signed-off-by: Max Chou <max.chou@realtek.com>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+---
+ drivers/bluetooth/btrtl.c | 65 ++++++++++++---------------------------
+ 1 file changed, 19 insertions(+), 46 deletions(-)
+
+--- a/drivers/bluetooth/btrtl.c
++++ b/drivers/bluetooth/btrtl.c
+@@ -18,10 +18,8 @@
+ #define VERSION "0.1"
+
+ #define RTL_EPATCH_SIGNATURE "Realtech"
+-#define RTL_ROM_LMP_3499 0x3499
+ #define RTL_ROM_LMP_8723A 0x1200
+ #define RTL_ROM_LMP_8723B 0x8723
+-#define RTL_ROM_LMP_8723D 0x8873
+ #define RTL_ROM_LMP_8821A 0x8821
+ #define RTL_ROM_LMP_8761A 0x8761
+ #define RTL_ROM_LMP_8822B 0x8822
+@@ -31,10 +29,13 @@
+ #define IC_MATCH_FL_HCIREV (1 << 1)
+ #define IC_MATCH_FL_HCIVER (1 << 2)
+ #define IC_MATCH_FL_HCIBUS (1 << 3)
+-#define IC_INFO(lmps, hcir) \
+- .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV, \
++#define IC_INFO(lmps, hcir, hciv, bus) \
++ .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV | \
++ IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS, \
+ .lmp_subver = (lmps), \
+- .hci_rev = (hcir)
++ .hci_rev = (hcir), \
++ .hci_ver = (hciv), \
++ .hci_bus = (bus)
+
+ struct id_table {
+ __u16 match_flags;
+@@ -58,112 +59,85 @@ struct btrtl_device_info {
+ };
+
+ static const struct id_table ic_id_table[] = {
+- { IC_MATCH_FL_LMPSUBV, RTL_ROM_LMP_8723A, 0x0,
+- .config_needed = false,
+- .has_rom_version = false,
+- .fw_name = "rtl_bt/rtl8723a_fw.bin",
+- .cfg_name = NULL },
+-
+- { IC_MATCH_FL_LMPSUBV, RTL_ROM_LMP_3499, 0x0,
++ /* 8723A */
++ { IC_INFO(RTL_ROM_LMP_8723A, 0xb, 0x6, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = false,
+ .fw_name = "rtl_bt/rtl8723a_fw.bin",
+ .cfg_name = NULL },
+
+ /* 8723BS */
+- { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV |
+- IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS,
+- .lmp_subver = RTL_ROM_LMP_8723B,
+- .hci_rev = 0xb,
+- .hci_ver = 6,
+- .hci_bus = HCI_UART,
++ { IC_INFO(RTL_ROM_LMP_8723B, 0xb, 0x6, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8723bs_fw.bin",
+ .cfg_name = "rtl_bt/rtl8723bs_config" },
+
+ /* 8723B */
+- { IC_INFO(RTL_ROM_LMP_8723B, 0xb),
++ { IC_INFO(RTL_ROM_LMP_8723B, 0xb, 0x6, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8723b_fw.bin",
+ .cfg_name = "rtl_bt/rtl8723b_config" },
+
+ /* 8723D */
+- { IC_INFO(RTL_ROM_LMP_8723B, 0xd),
++ { IC_INFO(RTL_ROM_LMP_8723B, 0xd, 0x8, HCI_USB),
+ .config_needed = true,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8723d_fw.bin",
+ .cfg_name = "rtl_bt/rtl8723d_config" },
+
+ /* 8723DS */
+- { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV |
+- IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS,
+- .lmp_subver = RTL_ROM_LMP_8723B,
+- .hci_rev = 0xd,
+- .hci_ver = 8,
+- .hci_bus = HCI_UART,
++ { IC_INFO(RTL_ROM_LMP_8723B, 0xd, 0x8, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8723ds_fw.bin",
+ .cfg_name = "rtl_bt/rtl8723ds_config" },
+
+- /* 8723DU */
+- { IC_INFO(RTL_ROM_LMP_8723D, 0x826C),
+- .config_needed = true,
+- .has_rom_version = true,
+- .fw_name = "rtl_bt/rtl8723d_fw.bin",
+- .cfg_name = "rtl_bt/rtl8723d_config" },
+-
+ /* 8821A */
+- { IC_INFO(RTL_ROM_LMP_8821A, 0xa),
++ { IC_INFO(RTL_ROM_LMP_8821A, 0xa, 0x6, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8821a_fw.bin",
+ .cfg_name = "rtl_bt/rtl8821a_config" },
+
+ /* 8821C */
+- { IC_INFO(RTL_ROM_LMP_8821A, 0xc),
++ { IC_INFO(RTL_ROM_LMP_8821A, 0xc, 0x8, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8821c_fw.bin",
+ .cfg_name = "rtl_bt/rtl8821c_config" },
+
+ /* 8761A */
+- { IC_INFO(RTL_ROM_LMP_8761A, 0xa),
++ { IC_INFO(RTL_ROM_LMP_8761A, 0xa, 0x6, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8761a_fw.bin",
+ .cfg_name = "rtl_bt/rtl8761a_config" },
+
+ /* 8761B */
+- { IC_INFO(RTL_ROM_LMP_8761A, 0xb),
++ { IC_INFO(RTL_ROM_LMP_8761A, 0xb, 0xa, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8761b_fw.bin",
+ .cfg_name = "rtl_bt/rtl8761b_config" },
+
+ /* 8822C with UART interface */
+- { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV |
+- IC_MATCH_FL_HCIBUS,
+- .lmp_subver = RTL_ROM_LMP_8822B,
+- .hci_rev = 0x000c,
+- .hci_ver = 0x0a,
+- .hci_bus = HCI_UART,
++ { IC_INFO(RTL_ROM_LMP_8822B, 0xc, 0xa, HCI_UART),
+ .config_needed = true,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8822cs_fw.bin",
+ .cfg_name = "rtl_bt/rtl8822cs_config" },
+
+ /* 8822C with USB interface */
+- { IC_INFO(RTL_ROM_LMP_8822B, 0xc),
++ { IC_INFO(RTL_ROM_LMP_8822B, 0xc, 0xa, HCI_USB),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8822cu_fw.bin",
+ .cfg_name = "rtl_bt/rtl8822cu_config" },
+
+ /* 8822B */
+- { IC_INFO(RTL_ROM_LMP_8822B, 0xb),
++ { IC_INFO(RTL_ROM_LMP_8822B, 0xb, 0x7, HCI_USB),
+ .config_needed = true,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8822b_fw.bin",
+@@ -654,7 +628,6 @@ int btrtl_download_firmware(struct hci_d
+
+ switch (btrtl_dev->ic_info->lmp_subver) {
+ case RTL_ROM_LMP_8723A:
+- case RTL_ROM_LMP_3499:
+ return btrtl_setup_rtl8723a(hdev, btrtl_dev);
+ case RTL_ROM_LMP_8723B:
+ case RTL_ROM_LMP_8821A:
diff --git a/target/linux/generic/backport-5.10/884-v5.14-Bluetooth-btrtl-rename-USB-fw-for-RTL8761.patch b/target/linux/generic/backport-5.10/884-v5.14-Bluetooth-btrtl-rename-USB-fw-for-RTL8761.patch
new file mode 100644
index 0000000000..5372ce874a
--- /dev/null
+++ b/target/linux/generic/backport-5.10/884-v5.14-Bluetooth-btrtl-rename-USB-fw-for-RTL8761.patch
@@ -0,0 +1,39 @@
+From 9fd2e2949b43dea869f7fce0f8f51df44f635d59 Mon Sep 17 00:00:00 2001
+From: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
+Date: Fri, 28 May 2021 17:26:44 +0200
+Subject: [PATCH] Bluetooth: btrtl: rename USB fw for RTL8761
+
+According Realteks own BT drivers firmware RTL8761B is for UART
+and RTL8761BU is for USB.
+
+Change existing 8761B to UART and add an 8761BU entry for USB
+
+Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+---
+ drivers/bluetooth/btrtl.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/bluetooth/btrtl.c
++++ b/drivers/bluetooth/btrtl.c
+@@ -116,12 +116,19 @@ static const struct id_table ic_id_table
+ .cfg_name = "rtl_bt/rtl8761a_config" },
+
+ /* 8761B */
+- { IC_INFO(RTL_ROM_LMP_8761A, 0xb, 0xa, HCI_USB),
++ { IC_INFO(RTL_ROM_LMP_8761A, 0xb, 0xa, HCI_UART),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8761b_fw.bin",
+ .cfg_name = "rtl_bt/rtl8761b_config" },
+
++ /* 8761BU */
++ { IC_INFO(RTL_ROM_LMP_8761A, 0xb, 0xa, HCI_USB),
++ .config_needed = false,
++ .has_rom_version = true,
++ .fw_name = "rtl_bt/rtl8761bu_fw.bin",
++ .cfg_name = "rtl_bt/rtl8761bu_config" },
++
+ /* 8822C with UART interface */
+ { IC_INFO(RTL_ROM_LMP_8822B, 0xc, 0xa, HCI_UART),
+ .config_needed = true,