diff options
-rw-r--r-- | drivers/bluetooth/hci_usb.c | 19 | ||||
-rw-r--r-- | drivers/bluetooth/hci_usb.h | 5 |
2 files changed, 21 insertions, 3 deletions
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index 67d96b5cbb9..57c48bbf6fe 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c | |||
@@ -65,13 +65,15 @@ | |||
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | static int ignore = 0; | 67 | static int ignore = 0; |
68 | static int ignore_csr = 0; | ||
69 | static int ignore_sniffer = 0; | ||
68 | static int reset = 0; | 70 | static int reset = 0; |
69 | 71 | ||
70 | #ifdef CONFIG_BT_HCIUSB_SCO | 72 | #ifdef CONFIG_BT_HCIUSB_SCO |
71 | static int isoc = 2; | 73 | static int isoc = 2; |
72 | #endif | 74 | #endif |
73 | 75 | ||
74 | #define VERSION "2.8" | 76 | #define VERSION "2.9" |
75 | 77 | ||
76 | static struct usb_driver hci_usb_driver; | 78 | static struct usb_driver hci_usb_driver; |
77 | 79 | ||
@@ -98,6 +100,9 @@ static struct usb_device_id bluetooth_ids[] = { | |||
98 | MODULE_DEVICE_TABLE (usb, bluetooth_ids); | 100 | MODULE_DEVICE_TABLE (usb, bluetooth_ids); |
99 | 101 | ||
100 | static struct usb_device_id blacklist_ids[] = { | 102 | static struct usb_device_id blacklist_ids[] = { |
103 | /* CSR BlueCore devices */ | ||
104 | { USB_DEVICE(0x0a12, 0x0001), .driver_info = HCI_CSR }, | ||
105 | |||
101 | /* Broadcom BCM2033 without firmware */ | 106 | /* Broadcom BCM2033 without firmware */ |
102 | { USB_DEVICE(0x0a5c, 0x2033), .driver_info = HCI_IGNORE }, | 107 | { USB_DEVICE(0x0a5c, 0x2033), .driver_info = HCI_IGNORE }, |
103 | 108 | ||
@@ -836,6 +841,12 @@ static int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id | |||
836 | if (ignore || id->driver_info & HCI_IGNORE) | 841 | if (ignore || id->driver_info & HCI_IGNORE) |
837 | return -ENODEV; | 842 | return -ENODEV; |
838 | 843 | ||
844 | if (ignore_csr && id->driver_info & HCI_CSR) | ||
845 | return -ENODEV; | ||
846 | |||
847 | if (ignore_sniffer && id->driver_info & HCI_SNIFFER) | ||
848 | return -ENODEV; | ||
849 | |||
839 | if (intf->cur_altsetting->desc.bInterfaceNumber > 0) | 850 | if (intf->cur_altsetting->desc.bInterfaceNumber > 0) |
840 | return -ENODEV; | 851 | return -ENODEV; |
841 | 852 | ||
@@ -1061,6 +1072,12 @@ module_exit(hci_usb_exit); | |||
1061 | module_param(ignore, bool, 0644); | 1072 | module_param(ignore, bool, 0644); |
1062 | MODULE_PARM_DESC(ignore, "Ignore devices from the matching table"); | 1073 | MODULE_PARM_DESC(ignore, "Ignore devices from the matching table"); |
1063 | 1074 | ||
1075 | module_param(ignore_csr, bool, 0644); | ||
1076 | MODULE_PARM_DESC(ignore_csr, "Ignore devices with id 0a12:0001"); | ||
1077 | |||
1078 | module_param(ignore_sniffer, bool, 0644); | ||
1079 | MODULE_PARM_DESC(ignore_sniffer, "Ignore devices with id 0a12:0002"); | ||
1080 | |||
1064 | module_param(reset, bool, 0644); | 1081 | module_param(reset, bool, 0644); |
1065 | MODULE_PARM_DESC(reset, "Send HCI reset command on initialization"); | 1082 | MODULE_PARM_DESC(reset, "Send HCI reset command on initialization"); |
1066 | 1083 | ||
diff --git a/drivers/bluetooth/hci_usb.h b/drivers/bluetooth/hci_usb.h index 29936b43d4f..37100a6ea1a 100644 --- a/drivers/bluetooth/hci_usb.h +++ b/drivers/bluetooth/hci_usb.h | |||
@@ -31,9 +31,10 @@ | |||
31 | #define HCI_IGNORE 0x01 | 31 | #define HCI_IGNORE 0x01 |
32 | #define HCI_RESET 0x02 | 32 | #define HCI_RESET 0x02 |
33 | #define HCI_DIGIANSWER 0x04 | 33 | #define HCI_DIGIANSWER 0x04 |
34 | #define HCI_SNIFFER 0x08 | 34 | #define HCI_CSR 0x08 |
35 | #define HCI_BROKEN_ISOC 0x10 | 35 | #define HCI_SNIFFER 0x10 |
36 | #define HCI_BCM92035 0x20 | 36 | #define HCI_BCM92035 0x20 |
37 | #define HCI_BROKEN_ISOC 0x40 | ||
37 | 38 | ||
38 | #define HCI_MAX_IFACE_NUM 3 | 39 | #define HCI_MAX_IFACE_NUM 3 |
39 | 40 | ||