diff options
author | Anderson Lizardo <anderson.lizardo@indt.org.br> | 2008-09-17 11:34:35 -0400 |
---|---|---|
committer | David Vrabel <dv02@dv02pc01.europe.root.pri> | 2008-09-17 11:54:33 -0400 |
commit | e477a4982ff4e94d7de0bc522817b152f52e6bf9 (patch) | |
tree | c108014cb4edecf8d5db3f0b6005c34fa8d7b603 | |
parent | 9d53b1bebe23a6efe4f0a0ff75df2424e013fe07 (diff) |
uwb: disable command/event filtering for D-Link DUB-1210
The D-Link DUB-1210 HWA uses commands and events from the WHCI specification,
although reporting itself as WUSB compliant. Therefore, we disable WUSB
command/event filtering for it.
USB_DEVICE_AND_INTERFACE_INFO is used for matching only the RC interface.
Signed-off-by: Anderson Lizardo <anderson.lizardo@indt.org.br>
Signed-off-by: David Vrabel <david.vrabel@csr.com>
-rw-r--r-- | drivers/uwb/hwa-rc.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/uwb/hwa-rc.c b/drivers/uwb/hwa-rc.c index f822a1872e49..9b7e23d94824 100644 --- a/drivers/uwb/hwa-rc.c +++ b/drivers/uwb/hwa-rc.c | |||
@@ -62,6 +62,9 @@ | |||
62 | #define D_LOCAL 1 | 62 | #define D_LOCAL 1 |
63 | #include <linux/uwb/debug.h> | 63 | #include <linux/uwb/debug.h> |
64 | 64 | ||
65 | /* The device uses commands and events from the WHCI specification, although | ||
66 | * reporting itself as WUSB compliant. */ | ||
67 | #define WUSB_QUIRK_WHCI_CMD_EVT 0x01 | ||
65 | 68 | ||
66 | /** | 69 | /** |
67 | * Descriptor for an instance of the UWB Radio Control Driver that | 70 | * Descriptor for an instance of the UWB Radio Control Driver that |
@@ -835,8 +838,13 @@ static int hwarc_probe(struct usb_interface *iface, | |||
835 | uwb_rc->stop = hwarc_neep_release; | 838 | uwb_rc->stop = hwarc_neep_release; |
836 | uwb_rc->cmd = hwarc_cmd; | 839 | uwb_rc->cmd = hwarc_cmd; |
837 | uwb_rc->reset = hwarc_reset; | 840 | uwb_rc->reset = hwarc_reset; |
838 | uwb_rc->filter_cmd = hwarc_filter_cmd; | 841 | if (id->driver_info & WUSB_QUIRK_WHCI_CMD_EVT) { |
839 | uwb_rc->filter_event = hwarc_filter_event; | 842 | uwb_rc->filter_cmd = NULL; |
843 | uwb_rc->filter_event = NULL; | ||
844 | } else { | ||
845 | uwb_rc->filter_cmd = hwarc_filter_cmd; | ||
846 | uwb_rc->filter_event = hwarc_filter_event; | ||
847 | } | ||
840 | 848 | ||
841 | result = uwb_rc_add(uwb_rc, dev, hwarc); | 849 | result = uwb_rc_add(uwb_rc, dev, hwarc); |
842 | if (result < 0) | 850 | if (result < 0) |
@@ -876,6 +884,10 @@ static void hwarc_disconnect(struct usb_interface *iface) | |||
876 | 884 | ||
877 | /** USB device ID's that we handle */ | 885 | /** USB device ID's that we handle */ |
878 | static struct usb_device_id hwarc_id_table[] = { | 886 | static struct usb_device_id hwarc_id_table[] = { |
887 | /* D-Link DUB-1210 */ | ||
888 | { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3d02, 0xe0, 0x01, 0x02), | ||
889 | .driver_info = WUSB_QUIRK_WHCI_CMD_EVT }, | ||
890 | /* Generic match for the Radio Control interface */ | ||
879 | { USB_INTERFACE_INFO(0xe0, 0x01, 0x02), }, | 891 | { USB_INTERFACE_INFO(0xe0, 0x01, 0x02), }, |
880 | { }, | 892 | { }, |
881 | }; | 893 | }; |