diff mbox series

[2/2] Bluetooth: btmtk: Remove resetting mt7922 before downloading the fw

Message ID Z8ybZZ38RvJqYC2+@m.b4.vu (mailing list archive)
State New
Headers show
Series [1/2] Revert "Bluetooth: btusb: mediatek: reset the controller before downloading the fw" | expand

Commit Message

Geoffrey D. Bennett March 8, 2025, 7:32 p.m. UTC
The MediaTek Bluetooth controller reset that was added in commit
ccfc8948d7e4 ("Bluetooth: btusb: mediatek: reset the controller before
downloading the fw") is causing Focusrite USB audio devices to fail to
initialise when connected during boot on kernels 6.11 and newer.

The issue was reported by three users, with Scarlett 2nd Gen 6i6 and
3rd Gen Solo and 4i4 audio interfaces. Two of the reporters confirmed
they have an MT7922.

The issue causes the interface to not work when connected at boot
time, with errors like this observed in dmesg:

  usb 3-4: parse_audio_format_rates_v2v3(): unable to find clock source (clock -110)
  usb 3-4: uac_clock_source_is_valid(): cannot get clock validity for id 41
  usb 3-4: clock source 41 is not valid, cannot use

The problem only occurs when both devices and kernel modules are
present and loaded during system boot, so it can be worked around by
connecting the audio interface after booting.

Fixes: ccfc8948d7e4 ("Bluetooth: btusb: mediatek: reset the controller before downloading the fw")
Closes: https://github.com/geoffreybennett/linux-fcp/issues/24
Bisected-by: Benedikt Ziemons <ben@rs485.network>
Tested-by: Benedikt Ziemons <ben@rs485.network>
Cc: stable@vger.kernel.org
Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
---
 drivers/bluetooth/btmtk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
2.45.0
diff mbox series

Patch

diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c
index 68846c5bd4f7..3b2d50fe3ec6 100644
--- a/drivers/bluetooth/btmtk.c
+++ b/drivers/bluetooth/btmtk.c
@@ -1328,7 +1328,6 @@  int btmtk_usb_setup(struct hci_dev *hdev)
 	case 0x7668:
 		fwname = FIRMWARE_MT7668;
 		break;
-	case 0x7922:
 	case 0x7925:
 		/* Reset the device to ensure it's in the initial state before
 		 * downloading the firmware to ensure.
@@ -1337,6 +1336,7 @@  int btmtk_usb_setup(struct hci_dev *hdev)
 		if (!test_bit(BTMTK_FIRMWARE_LOADED, &btmtk_data->flags))
 			btmtk_usb_subsys_reset(hdev, dev_id);
 		fallthrough;
+	case 0x7922:
 	case 0x7961:
 		btmtk_fw_get_filename(fw_bin_name, sizeof(fw_bin_name), dev_id,
 				      fw_version, fw_flavor);