OSDN Git Service

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)
commitf4292e2faf522f899b642d2040a2edbcbd455b9f
tree0f24e9f24bddc6ed8e1fe29a4714bb56abaafad7
parentf283f4765b65fde8a1b9927702b107e9fbd06d6a
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: 81cac64ba258a ("Bluetooth: Deal with USB devices that are faking CSR vendor")
Fixes: cde1a8a992875 ("Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers")
Fixes: d74e0ae7e0303 ("Bluetooth: btusb: Fix detection of some fake CSR controllers with a bcdDevice val of 0x0134")
Fixes: 0671c0662383e ("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