aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/uwb/hwa-rc.c
diff options
context:
space:
mode:
authorAnderson Lizardo <anderson.lizardo@indt.org.br>2008-09-17 11:34:35 -0400
committerDavid Vrabel <dv02@dv02pc01.europe.root.pri>2008-09-17 11:54:33 -0400
commite477a4982ff4e94d7de0bc522817b152f52e6bf9 (patch)
treec108014cb4edecf8d5db3f0b6005c34fa8d7b603 /drivers/uwb/hwa-rc.c
parent9d53b1bebe23a6efe4f0a0ff75df2424e013fe07 (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>
Diffstat (limited to 'drivers/uwb/hwa-rc.c')
-rw-r--r--drivers/uwb/hwa-rc.c16
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 */
878static struct usb_device_id hwarc_id_table[] = { 886static 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};