Re: [patch 09/12] pegasus: add blacklist support to fix Belkin bluetooth dongle.
From: Jeff Garzik <hidden>
Date: 2008-08-07 06:24:14
akpm@linux-foundation.org wrote:
quoted hunk ↗ jump to hunk
From: Ben Collins <redacted> Reference: https://launchpad.net/bugs/140511 The Belkin bluetooth dongle unfortunately shares the vendor and device id with the network adapter which causes lockups whenever the bluetooth dongle is inserted. Signed-off-by: Stefan Bader <redacted> Signed-off-by: Ben Collins <redacted> Cc: Jeff Garzik <redacted> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: David Brownell <redacted> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- drivers/net/usb/pegasus.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff -puN drivers/net/usb/pegasus.c~pegasus-add-blacklist-support-to-fix-belkin-bluetooth-dongle drivers/net/usb/pegasus.c--- a/drivers/net/usb/pegasus.c~pegasus-add-blacklist-support-to-fix-belkin-bluetooth-dongle +++ a/drivers/net/usb/pegasus.c@@ -1285,6 +1285,21 @@ static void check_carrier(struct work_st } } +static int pegasus_blacklisted(struct usb_device *udev) +{ + struct usb_device_descriptor *udd = &udev->descriptor; + + /* Special quirk to keep the driver from handling the Belkin Bluetooth + * dongle which happens to have the same ID. + */ + if ((udd->idVendor == VENDOR_BELKIN && udd->idProduct == 0x0121) && + (udd->bDeviceClass == USB_CLASS_WIRELESS_CONTROLLER) && + (udd->bDeviceProtocol == 1)) + return 1; + + return 0; +} + static int pegasus_probe(struct usb_interface *intf, const struct usb_device_id *id) {@@ -1296,6 +1311,12 @@ static int pegasus_probe(struct usb_inte DECLARE_MAC_BUF(mac); usb_get_dev(dev); + + if (pegasus_blacklisted(dev)) { + res = -ENODEV; + goto out; + } +
applied