1818#define VERSION "0.1"
1919
2020#define RTL_EPATCH_SIGNATURE "Realtech"
21- #define RTL_ROM_LMP_3499 0x3499
2221#define RTL_ROM_LMP_8723A 0x1200
2322#define RTL_ROM_LMP_8723B 0x8723
24- #define RTL_ROM_LMP_8723D 0x8873
2523#define RTL_ROM_LMP_8821A 0x8821
2624#define RTL_ROM_LMP_8761A 0x8761
2725#define RTL_ROM_LMP_8822B 0x8822
3129#define IC_MATCH_FL_HCIREV (1 << 1)
3230#define IC_MATCH_FL_HCIVER (1 << 2)
3331#define IC_MATCH_FL_HCIBUS (1 << 3)
34- #define IC_INFO (lmps , hcir ) \
35- .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV, \
32+ #define IC_INFO (lmps , hcir , hciv , bus ) \
33+ .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV | \
34+ IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS, \
3635 .lmp_subver = (lmps), \
37- .hci_rev = (hcir)
36+ .hci_rev = (hcir), \
37+ .hci_ver = (hciv), \
38+ .hci_bus = (bus)
3839
3940struct id_table {
4041 __u16 match_flags ;
@@ -58,112 +59,85 @@ struct btrtl_device_info {
5859};
5960
6061static const struct id_table ic_id_table [] = {
61- { IC_MATCH_FL_LMPSUBV , RTL_ROM_LMP_8723A , 0x0 ,
62- .config_needed = false,
63- .has_rom_version = false,
64- .fw_name = "rtl_bt/rtl8723a_fw.bin" ,
65- .cfg_name = NULL },
66-
67- { IC_MATCH_FL_LMPSUBV , RTL_ROM_LMP_3499 , 0x0 ,
62+ /* 8723A */
63+ { IC_INFO (RTL_ROM_LMP_8723A , 0xb , 0x6 , HCI_USB ),
6864 .config_needed = false,
6965 .has_rom_version = false,
7066 .fw_name = "rtl_bt/rtl8723a_fw.bin" ,
7167 .cfg_name = NULL },
7268
7369 /* 8723BS */
74- { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV |
75- IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS ,
76- .lmp_subver = RTL_ROM_LMP_8723B ,
77- .hci_rev = 0xb ,
78- .hci_ver = 6 ,
79- .hci_bus = HCI_UART ,
70+ { IC_INFO (RTL_ROM_LMP_8723B , 0xb , 0x6 , HCI_UART ),
8071 .config_needed = true,
8172 .has_rom_version = true,
8273 .fw_name = "rtl_bt/rtl8723bs_fw.bin" ,
8374 .cfg_name = "rtl_bt/rtl8723bs_config" },
8475
8576 /* 8723B */
86- { IC_INFO (RTL_ROM_LMP_8723B , 0xb ),
77+ { IC_INFO (RTL_ROM_LMP_8723B , 0xb , 0x6 , HCI_USB ),
8778 .config_needed = false,
8879 .has_rom_version = true,
8980 .fw_name = "rtl_bt/rtl8723b_fw.bin" ,
9081 .cfg_name = "rtl_bt/rtl8723b_config" },
9182
9283 /* 8723D */
93- { IC_INFO (RTL_ROM_LMP_8723B , 0xd ),
84+ { IC_INFO (RTL_ROM_LMP_8723B , 0xd , 0x8 , HCI_USB ),
9485 .config_needed = true,
9586 .has_rom_version = true,
9687 .fw_name = "rtl_bt/rtl8723d_fw.bin" ,
9788 .cfg_name = "rtl_bt/rtl8723d_config" },
9889
9990 /* 8723DS */
100- { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV |
101- IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS ,
102- .lmp_subver = RTL_ROM_LMP_8723B ,
103- .hci_rev = 0xd ,
104- .hci_ver = 8 ,
105- .hci_bus = HCI_UART ,
91+ { IC_INFO (RTL_ROM_LMP_8723B , 0xd , 0x8 , HCI_UART ),
10692 .config_needed = true,
10793 .has_rom_version = true,
10894 .fw_name = "rtl_bt/rtl8723ds_fw.bin" ,
10995 .cfg_name = "rtl_bt/rtl8723ds_config" },
11096
111- /* 8723DU */
112- { IC_INFO (RTL_ROM_LMP_8723D , 0x826C ),
113- .config_needed = true,
114- .has_rom_version = true,
115- .fw_name = "rtl_bt/rtl8723d_fw.bin" ,
116- .cfg_name = "rtl_bt/rtl8723d_config" },
117-
11897 /* 8821A */
119- { IC_INFO (RTL_ROM_LMP_8821A , 0xa ),
98+ { IC_INFO (RTL_ROM_LMP_8821A , 0xa , 0x6 , HCI_USB ),
12099 .config_needed = false,
121100 .has_rom_version = true,
122101 .fw_name = "rtl_bt/rtl8821a_fw.bin" ,
123102 .cfg_name = "rtl_bt/rtl8821a_config" },
124103
125104 /* 8821C */
126- { IC_INFO (RTL_ROM_LMP_8821A , 0xc ),
105+ { IC_INFO (RTL_ROM_LMP_8821A , 0xc , 0x8 , HCI_USB ),
127106 .config_needed = false,
128107 .has_rom_version = true,
129108 .fw_name = "rtl_bt/rtl8821c_fw.bin" ,
130109 .cfg_name = "rtl_bt/rtl8821c_config" },
131110
132111 /* 8761A */
133- { IC_INFO (RTL_ROM_LMP_8761A , 0xa ),
112+ { IC_INFO (RTL_ROM_LMP_8761A , 0xa , 0x6 , HCI_USB ),
134113 .config_needed = false,
135114 .has_rom_version = true,
136115 .fw_name = "rtl_bt/rtl8761a_fw.bin" ,
137116 .cfg_name = "rtl_bt/rtl8761a_config" },
138117
139118 /* 8761B */
140- { IC_INFO (RTL_ROM_LMP_8761A , 0xb ),
119+ { IC_INFO (RTL_ROM_LMP_8761A , 0xb , 0xa , HCI_USB ),
141120 .config_needed = false,
142121 .has_rom_version = true,
143122 .fw_name = "rtl_bt/rtl8761b_fw.bin" ,
144123 .cfg_name = "rtl_bt/rtl8761b_config" },
145124
146125 /* 8822C with UART interface */
147- { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV |
148- IC_MATCH_FL_HCIBUS ,
149- .lmp_subver = RTL_ROM_LMP_8822B ,
150- .hci_rev = 0x000c ,
151- .hci_ver = 0x0a ,
152- .hci_bus = HCI_UART ,
126+ { IC_INFO (RTL_ROM_LMP_8822B , 0xc , 0xa , HCI_UART ),
153127 .config_needed = true,
154128 .has_rom_version = true,
155129 .fw_name = "rtl_bt/rtl8822cs_fw.bin" ,
156130 .cfg_name = "rtl_bt/rtl8822cs_config" },
157131
158132 /* 8822C with USB interface */
159- { IC_INFO (RTL_ROM_LMP_8822B , 0xc ),
133+ { IC_INFO (RTL_ROM_LMP_8822B , 0xc , 0xa , HCI_USB ),
160134 .config_needed = false,
161135 .has_rom_version = true,
162136 .fw_name = "rtl_bt/rtl8822cu_fw.bin" ,
163137 .cfg_name = "rtl_bt/rtl8822cu_config" },
164138
165139 /* 8822B */
166- { IC_INFO (RTL_ROM_LMP_8822B , 0xb ),
140+ { IC_INFO (RTL_ROM_LMP_8822B , 0xb , 0x7 , HCI_USB ),
167141 .config_needed = true,
168142 .has_rom_version = true,
169143 .fw_name = "rtl_bt/rtl8822b_fw.bin" ,
@@ -654,7 +628,6 @@ int btrtl_download_firmware(struct hci_dev *hdev,
654628
655629 switch (btrtl_dev -> ic_info -> lmp_subver ) {
656630 case RTL_ROM_LMP_8723A :
657- case RTL_ROM_LMP_3499 :
658631 return btrtl_setup_rtl8723a (hdev , btrtl_dev );
659632 case RTL_ROM_LMP_8723B :
660633 case RTL_ROM_LMP_8821A :
0 commit comments