Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=defd208681b721dbf2b69347cca5302d60246405
Commit:     defd208681b721dbf2b69347cca5302d60246405
Parent:     cb1d93c98c49e268918e35e45e5c407fc4dc4e9f
Author:     Jiri Kosina <[EMAIL PROTECTED]>
AuthorDate: Sat May 19 16:28:04 2007 +0200
Committer:  Jiri Kosina <[EMAIL PROTECTED]>
CommitDate: Mon Jul 9 14:13:29 2007 +0200

    HID: force hid-input for Microsoft SideWinder GameVoice device
    
    Microsoft SideWinder GameVoice driver is a trivial device with a few buttons
    (0x09 HID usage) and an audio connector, which just forwards the audio input
    into oridinary sound card present in the computer.
    
    Despite this fact, the only interface of this device reports itself as a
    Telephony/Headset type of HID device. This is apparently incorrect - the 
device
    itself doesn't provide any audio/telephony functionality. This is achieved 
in
    userland application which only needs to receive the button events from the 
HID
    driver.
    
    This patch establishes a new quirk which forces hid-input to claim a device 
it
    will otherwise leave untouched.
    
    Reported-by: Tomas Carnecky <[EMAIL PROTECTED]>
    Signed-off-by: Jiri Kosina <[EMAIL PROTECTED]>
---
 drivers/hid/hid-input.c         |    2 +-
 drivers/hid/usbhid/hid-quirks.c |    4 ++++
 include/linux/hid.h             |    1 +
 3 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index ce6d764..70bf541 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -997,7 +997,7 @@ int hidinput_connect(struct hid_device *hid)
                        if (IS_INPUT_APPLICATION(hid->collection[i].usage))
                                break;
 
-       if (i == hid->maxcollection)
+       if (i == hid->maxcollection && (hid->quirks & HID_QUIRK_HIDINPUT) == 0)
                return -1;
 
        if (hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORTS)
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index f6c4145..62a7f1e 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -209,6 +209,9 @@
 #define USB_DEVICE_ID_MGE_UPS          0xffff
 #define USB_DEVICE_ID_MGE_UPS1         0x0001
 
+#define USB_VENDOR_ID_MICROSOFT                0x045e
+#define USB_DEVICE_ID_SIDEWINDER_GV    0x003b
+
 #define USB_VENDOR_ID_NEC              0x073e
 #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301
 
@@ -290,6 +293,7 @@ static const struct hid_blacklist {
        { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_EDGE, 
HID_QUIRK_DUPLICATE_USAGES },
 
        { USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM, HID_QUIRK_HIDDEV },
+       { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV, 
HID_QUIRK_HIDINPUT },
 
        { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },
        { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE },
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 827ee74..6e45d10 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -276,6 +276,7 @@ struct hid_item {
 #define HID_QUIRK_DUPLICATE_USAGES             0x00200000
 #define HID_QUIRK_RESET_LEDS                   0x00400000
 #define HID_QUIRK_SWAPPED_MIN_MAX              0x00800000
+#define HID_QUIRK_HIDINPUT                     0x01000000
 
 /*
  * This is the global environment of the parser. This information is
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to