diff mbox series

Bluetooth: btusb: Add support Mediatek MT7920

Message ID 20240304144844.2042-1-peter.tsao@mediatek.com
State Accepted
Commit 1cb63d80fff6c4f501469e28a0eb6379639e0711
Headers show
Series Bluetooth: btusb: Add support Mediatek MT7920 | expand

Commit Message

Peter Tsao March 4, 2024, 2:48 p.m. UTC
This patch is added support Mediatek MT7920
The firmware location of MT7920 will set to
/lib/firmware/mediatek/

The information in /sys/kernel/debug/usb/devices about MT7920U
Bluetooth device is listed as the below

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 12 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0e8d ProdID=7920 Rev= 1.00
S:  Manufacturer=MediaTek Inc.
S:  Product=Wireless_Device
S:  SerialNumber=000000000
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
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=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 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
I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us
E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us
I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us

Signed-off-by: Peter Tsao <peter.tsao@mediatek.com>
---
 drivers/bluetooth/btusb.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Mike Lothian April 1, 2024, 2:44 p.m. UTC | #1
Hi

I think this patch is cauisng issues with older firmware

Bus 003 Device 002: ID 13d3:3563 IMC Networks Wireless_Device

[    0.315064] Bluetooth: Core ver 2.22
[    0.315064] NET: Registered PF_BLUETOOTH protocol family
[    0.315064] Bluetooth: HCI device and connection manager initialized
[    0.315064] Bluetooth: HCI socket layer initialized
[    0.315064] Bluetooth: L2CAP socket layer initialized
[    0.315064] Bluetooth: SCO socket layer initialized
[    4.670811] Bluetooth: RFCOMM TTY layer initialized
[    4.671029] Bluetooth: RFCOMM socket layer initialized
[    4.671790] Bluetooth: RFCOMM ver 1.11
[    4.673416] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.673659] Bluetooth: BNEP filters: protocol multicast
[    4.673895] Bluetooth: BNEP socket layer initialized
[    4.674125] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    4.674360] Bluetooth: HIDP socket layer initialized
[    5.016365] bluetooth hci0: Direct firmware load for mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin failed with error -2
[    5.017163] Bluetooth: hci0: Failed to load firmware file (-2)
[    5.017557] Bluetooth: hci0: Failed to set up firmware (-2)
[    5.018129] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.

The correct name should be mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin

Reverting this patch fixes things

Cheers

Mike
Mike Lothian April 1, 2024, 3:20 p.m. UTC | #2
On Mon, 1 Apr 2024 at 15:44, Mike Lothian <mike@fireburn.co.uk> wrote:
>
> Hi
>
> I think this patch is causing issues with older firmware
>
> Bus 003 Device 002: ID 13d3:3563 IMC Networks Wireless_Device
>
> [    0.315064] Bluetooth: Core ver 2.22
> [    0.315064] NET: Registered PF_BLUETOOTH protocol family
> [    0.315064] Bluetooth: HCI device and connection manager initialized
> [    0.315064] Bluetooth: HCI socket layer initialized
> [    0.315064] Bluetooth: L2CAP socket layer initialized
> [    0.315064] Bluetooth: SCO socket layer initialized
> [    4.670811] Bluetooth: RFCOMM TTY layer initialized
> [    4.671029] Bluetooth: RFCOMM socket layer initialized
> [    4.671790] Bluetooth: RFCOMM ver 1.11
> [    4.673416] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
> [    4.673659] Bluetooth: BNEP filters: protocol multicast
> [    4.673895] Bluetooth: BNEP socket layer initialized
> [    4.674125] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
> [    4.674360] Bluetooth: HIDP socket layer initialized
> [    5.016365] bluetooth hci0: Direct firmware load for mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin failed with error -2
> [    5.017163] Bluetooth: hci0: Failed to load firmware file (-2)
> [    5.017557] Bluetooth: hci0: Failed to set up firmware (-2)
> [    5.018129] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
>
> The correct name should be mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
>
> Reverting this patch fixes things
>
> Cheers
>
> Mike

If it helps, the device ID is 0x7961 and the fw_flavour is 24 or 0x18 in hex
Linux regression tracking (Thorsten Leemhuis) April 5, 2024, 8:34 a.m. UTC | #3
[CCing the regression list, as it should be in the loop for regressions:
https://docs.kernel.org/admin-guide/reporting-regressions.html]

On 01.04.24 17:20, Mike Lothian wrote:
> On Mon, 1 Apr 2024 at 15:44, Mike Lothian <mike@fireburn.co.uk> wrote:
>>
>> I think this patch is causing issues with older firmware
>>
>> Bus 003 Device 002: ID 13d3:3563 IMC Networks Wireless_Device
>>
>> [    0.315064] Bluetooth: Core ver 2.22
>> [    0.315064] NET: Registered PF_BLUETOOTH protocol family
>> [    0.315064] Bluetooth: HCI device and connection manager initialized
>> [    0.315064] Bluetooth: HCI socket layer initialized
>> [    0.315064] Bluetooth: L2CAP socket layer initialized
>> [    0.315064] Bluetooth: SCO socket layer initialized
>> [    4.670811] Bluetooth: RFCOMM TTY layer initialized
>> [    4.671029] Bluetooth: RFCOMM socket layer initialized
>> [    4.671790] Bluetooth: RFCOMM ver 1.11
>> [    4.673416] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
>> [    4.673659] Bluetooth: BNEP filters: protocol multicast
>> [    4.673895] Bluetooth: BNEP socket layer initialized
>> [    4.674125] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
>> [    4.674360] Bluetooth: HIDP socket layer initialized
>> [    5.016365] bluetooth hci0: Direct firmware load for mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin failed with error -2
>> [    5.017163] Bluetooth: hci0: Failed to load firmware file (-2)
>> [    5.017557] Bluetooth: hci0: Failed to set up firmware (-2)
>> [    5.018129] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
>>
>> The correct name should be mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
>>
>> Reverting this patch fixes things
> 
> If it helps, the device ID is 0x7961 and the fw_flavour is 24 or 0x18 in hex

Thanks for the report!

Peter, did you look into this?

Anyway: To be sure the issue doesn't fall through the cracks unnoticed,
I'm adding it to regzbot, the Linux kernel regression tracking bot:

#regzbot report:
https://lore.kernel.org/all/20240401144424.1714-1-mike@fireburn.co.uk/
#regzbot introduced: 1cb63d80fff6c4
#regzbot title: net: Bluetooth: firmware loading problems with older
firmware
#regzbot ignore-activity

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
That page also explains what to do if mails like this annoy you.
Deren Wu April 5, 2024, 9:15 a.m. UTC | #4
Hi Thorsten,

Thanks for the note. We are looking for solution for this issue. Peter
would post the new patch. :)

Regards,
Deren

On Fri, 2024-04-05 at 10:34 +0200, Linux regression tracking (Thorsten
Leemhuis) wrote:
> [CCing the regression list, as it should be in the loop for
> regressions:
> 
https://urldefense.com/v3/__https://docs.kernel.org/admin-guide/reporting-regressions.html__;!!CTRNKA9wMg0ARbw!n9OQDQtfMiQdddzNLvMEOMLnnEHhw12KRY5W5YPscQJTiNQtuIVuJufNc2UYpy-rUlRtMUwZsL5NDERIf1CoGox8J2I$
>  ]
> 
> On 01.04.24 17:20, Mike Lothian wrote:
> > On Mon, 1 Apr 2024 at 15:44, Mike Lothian <mike@fireburn.co.uk>
> > wrote:
> > > 
> > > I think this patch is causing issues with older firmware
> > > 
> > > Bus 003 Device 002: ID 13d3:3563 IMC Networks Wireless_Device
> > > 
> > > [    0.315064] Bluetooth: Core ver 2.22
> > > [    0.315064] NET: Registered PF_BLUETOOTH protocol family
> > > [    0.315064] Bluetooth: HCI device and connection manager
> > > initialized
> > > [    0.315064] Bluetooth: HCI socket layer initialized
> > > [    0.315064] Bluetooth: L2CAP socket layer initialized
> > > [    0.315064] Bluetooth: SCO socket layer initialized
> > > [    4.670811] Bluetooth: RFCOMM TTY layer initialized
> > > [    4.671029] Bluetooth: RFCOMM socket layer initialized
> > > [    4.671790] Bluetooth: RFCOMM ver 1.11
> > > [    4.673416] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
> > > [    4.673659] Bluetooth: BNEP filters: protocol multicast
> > > [    4.673895] Bluetooth: BNEP socket layer initialized
> > > [    4.674125] Bluetooth: HIDP (Human Interface Emulation) ver
> > > 1.2
> > > [    4.674360] Bluetooth: HIDP socket layer initialized
> > > [    5.016365] bluetooth hci0: Direct firmware load for
> > > mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin failed with error -2
> > > [    5.017163] Bluetooth: hci0: Failed to load firmware file (-2)
> > > [    5.017557] Bluetooth: hci0: Failed to set up firmware (-2)
> > > [    5.018129] Bluetooth: hci0: HCI Enhanced Setup Synchronous
> > > Connection command is advertised, but not supported.
> > > 
> > > The correct name should be
> > > mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
> > > 
> > > Reverting this patch fixes things
> > 
> > If it helps, the device ID is 0x7961 and the fw_flavour is 24 or
> > 0x18 in hex
> 
> Thanks for the report!
> 
> Peter, did you look into this?
> 
> Anyway: To be sure the issue doesn't fall through the cracks
> unnoticed,
> I'm adding it to regzbot, the Linux kernel regression tracking bot:
> 
> #regzbot report:
> 
https://lore.kernel.org/all/20240401144424.1714-1-mike@fireburn.co.uk/
> #regzbot introduced: 1cb63d80fff6c4
> #regzbot title: net: Bluetooth: firmware loading problems with older
> firmware
> #regzbot ignore-activity
> 
> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker'
> hat)
> --
> Everything you wanna know about Linux kernel regression tracking:
> 
https://urldefense.com/v3/__https://linux-regtracking.leemhuis.info/about/*tldr__;Iw!!CTRNKA9wMg0ARbw!n9OQDQtfMiQdddzNLvMEOMLnnEHhw12KRY5W5YPscQJTiNQtuIVuJufNc2UYpy-rUlRtMUwZsL5NDERIf1CoQcaol0s$
>  
> That page also explains what to do if mails like this annoy you.
Linux regression tracking (Thorsten Leemhuis) April 15, 2024, 12:30 p.m. UTC | #5
On 05.04.24 11:15, Deren Wu (武德仁) wrote:
> 
> Thanks for the note. We are looking for solution for this issue. Peter
> would post the new patch. :)

Anyone still working on this, as that afaics did not happen -- or was
there progress and I just missed it?

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
If I did something stupid, please tell me, as explained on that page.

#regzbot poke

> On Fri, 2024-04-05 at 10:34 +0200, Linux regression tracking (Thorsten
> Leemhuis) wrote:
>> [CCing the regression list, as it should be in the loop for
>> regressions:
>>
> https://urldefense.com/v3/__https://docs.kernel.org/admin-guide/reporting-regressions.html__;!!CTRNKA9wMg0ARbw!n9OQDQtfMiQdddzNLvMEOMLnnEHhw12KRY5W5YPscQJTiNQtuIVuJufNc2UYpy-rUlRtMUwZsL5NDERIf1CoGox8J2I$
>>  ]
>>
>> On 01.04.24 17:20, Mike Lothian wrote:
>>> On Mon, 1 Apr 2024 at 15:44, Mike Lothian <mike@fireburn.co.uk>
>>> wrote:
>>>>
>>>> I think this patch is causing issues with older firmware
>>>>
>>>> Bus 003 Device 002: ID 13d3:3563 IMC Networks Wireless_Device
>>>>
>>>> [    0.315064] Bluetooth: Core ver 2.22
>>>> [    0.315064] NET: Registered PF_BLUETOOTH protocol family
>>>> [    0.315064] Bluetooth: HCI device and connection manager
>>>> initialized
>>>> [    0.315064] Bluetooth: HCI socket layer initialized
>>>> [    0.315064] Bluetooth: L2CAP socket layer initialized
>>>> [    0.315064] Bluetooth: SCO socket layer initialized
>>>> [    4.670811] Bluetooth: RFCOMM TTY layer initialized
>>>> [    4.671029] Bluetooth: RFCOMM socket layer initialized
>>>> [    4.671790] Bluetooth: RFCOMM ver 1.11
>>>> [    4.673416] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
>>>> [    4.673659] Bluetooth: BNEP filters: protocol multicast
>>>> [    4.673895] Bluetooth: BNEP socket layer initialized
>>>> [    4.674125] Bluetooth: HIDP (Human Interface Emulation) ver
>>>> 1.2
>>>> [    4.674360] Bluetooth: HIDP socket layer initialized
>>>> [    5.016365] bluetooth hci0: Direct firmware load for
>>>> mediatek/BT_RAM_CODE_MT7961_1a_2_hdr.bin failed with error -2
>>>> [    5.017163] Bluetooth: hci0: Failed to load firmware file (-2)
>>>> [    5.017557] Bluetooth: hci0: Failed to set up firmware (-2)
>>>> [    5.018129] Bluetooth: hci0: HCI Enhanced Setup Synchronous
>>>> Connection command is advertised, but not supported.
>>>>
>>>> The correct name should be
>>>> mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
>>>>
>>>> Reverting this patch fixes things
>>>
>>> If it helps, the device ID is 0x7961 and the fw_flavour is 24 or
>>> 0x18 in hex
>>
>> Thanks for the report!
>>
>> Peter, did you look into this?
>>
>> Anyway: To be sure the issue doesn't fall through the cracks
>> unnoticed,
>> I'm adding it to regzbot, the Linux kernel regression tracking bot:
>>
>> #regzbot report:
>>
> https://lore.kernel.org/all/20240401144424.1714-1-mike@fireburn.co.uk/
>> #regzbot introduced: 1cb63d80fff6c4
>> #regzbot title: net: Bluetooth: firmware loading problems with older
>> firmware
>> #regzbot ignore-activity
>>
>> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker'
>> hat)
>> --
>> Everything you wanna know about Linux kernel regression tracking:
>>
> https://urldefense.com/v3/__https://linux-regtracking.leemhuis.info/about/*tldr__;Iw!!CTRNKA9wMg0ARbw!n9OQDQtfMiQdddzNLvMEOMLnnEHhw12KRY5W5YPscQJTiNQtuIVuJufNc2UYpy-rUlRtMUwZsL5NDERIf1CoQcaol0s$
>>  
>> That page also explains what to do if mails like this annoy you.
diff mbox series

Patch

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index edfb49bbaa28..ba6ac853110b 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -3088,7 +3088,7 @@  static int btusb_mtk_setup(struct hci_dev *hdev)
 	int err, status;
 	u32 dev_id = 0;
 	char fw_bin_name[64];
-	u32 fw_version = 0;
+	u32 fw_version = 0, fw_flavor = 0;
 	u8 param;
 	struct btmediatek_data *mediatek;
 
@@ -3111,6 +3111,11 @@  static int btusb_mtk_setup(struct hci_dev *hdev)
 			bt_dev_err(hdev, "Failed to get fw version (%d)", err);
 			return err;
 		}
+		err = btusb_mtk_id_get(data, 0x70010020, &fw_flavor);
+		if (err < 0) {
+			bt_dev_err(hdev, "Failed to get fw flavor (%d)", err);
+			return err;
+		}
 	}
 
 	mediatek = hci_get_priv(hdev);
@@ -3135,6 +3140,10 @@  static int btusb_mtk_setup(struct hci_dev *hdev)
 			snprintf(fw_bin_name, sizeof(fw_bin_name),
 				 "mediatek/mt%04x/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
 				 dev_id & 0xffff, dev_id & 0xffff, (fw_version & 0xff) + 1);
+		else if (dev_id == 0x7961 && fw_flavor)
+			snprintf(fw_bin_name, sizeof(fw_bin_name),
+				 "mediatek/BT_RAM_CODE_MT%04x_1a_%x_hdr.bin",
+				 dev_id & 0xffff, (fw_version & 0xff) + 1);
 		else
 			snprintf(fw_bin_name, sizeof(fw_bin_name),
 				 "mediatek/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",