]> git.baikalelectronics.ru Git - kernel.git/commit
Bluetooth: btusb: Make the CSR clone chip force-suspend workaround more generic
authorIsmael Ferreras Morezuelas <swyterzone@gmail.com>
Fri, 16 Jul 2021 23:21:43 +0000 (01:21 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 29 Jul 2021 19:54:42 +0000 (21:54 +0200)
commitaa2b8f6b7543e380240493e5c348da6b96467043
tree0f24e9f24bddc6ed8e1fe29a4714bb56abaafad7
parent1a5931f402ef6b5ef1fdd5522ad7cb8d82cd1323
Bluetooth: btusb: Make the CSR clone chip force-suspend workaround more generic

Turns out Hans de Goede completed the work I started last year trying to
improve Chinese-clone detection of CSR controller chips. Quirk after quirk
these Bluetooth dongles are more usable now.

Even after a few BlueZ regressions; these clones are so fickle that some
days they stop working altogether. Except on Windows, they work fine.

But this force-suspend initialization quirk seems to mostly do the trick,
after a lot of testing Bluetooth now seems to work *all* the time.

The only problem is that the solution ended up being masked under a very
stringent check; when there are probably hundreds of fake dongle
models out there that benefit from a good reset. Make it so.

Fixes: 09845f04be97a ("Bluetooth: Deal with USB devices that are faking CSR vendor")
Fixes: 593bab2698ffd ("Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers")
Fixes: 300db6f86f065 ("Bluetooth: btusb: Fix detection of some fake CSR controllers with a bcdDevice val of 0x0134")
Fixes: 16601f688b70d ("Bluetooth: btusb: Add workaround for remote-wakeup issues with Barrot 8041a02 fake CSR controllers")
Cc: stable@vger.kernel.org
Cc: Hans de Goede <hdegoede@redhat.com>
Tested-by: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
Signed-off-by: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btusb.c