Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=628edcde87592a7ac6e72b555bb03ea265bcfbd2
Commit:     628edcde87592a7ac6e72b555bb03ea265bcfbd2
Parent:     9a15c99714ca229dd0b894e200fd96daf14f32fb
Author:     Jiri Kosina <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 26 13:26:33 2007 +0100
Committer:  Jiri Kosina <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 14:51:21 2008 +0100

    HID: proper handling of MS 4k and 6k devices
    
    This removes ugly macros IS_* to distinguish devices that
    need special handling in hid-input, and establish proper
    quirks for them.
    
    Signed-off-by: Jiri Kosina <[EMAIL PROTECTED]>
---
 drivers/hid/hid-input-quirks.c  |    6 ++----
 drivers/hid/usbhid/hid-quirks.c |    5 +++++
 include/linux/hid.h             |    1 +
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/hid/hid-input-quirks.c b/drivers/hid/hid-input-quirks.c
index 7018be3..fbe8b6d 100644
--- a/drivers/hid/hid-input-quirks.c
+++ b/drivers/hid/hid-input-quirks.c
@@ -349,9 +349,6 @@ int hidinput_mapping_quirks(struct hid_usage *usage,
        return 0;
 }
 
-#define IS_BTC8193(x) (x->vendor == 0x0518 && x->product == 0x0002)
-#define IS_MS_KB(x) (x->vendor == 0x045e && (x->product == 0x00db || 
x->product == 0x00f9))
-
 void hidinput_event_quirks(struct hid_device *hid, struct hid_field *field, 
struct hid_usage *usage, __s32 value)
 {
        struct input_dev *input;
@@ -392,7 +389,8 @@ void hidinput_event_quirks(struct hid_device *hid, struct 
hid_field *field, stru
                return;
 
        /* Handling MS keyboards special buttons */
-       if (IS_MS_KB(hid) && usage->hid == (HID_UP_MSVENDOR | 0xff05)) {
+       if (hid->quirks & HID_QUIRK_MICROSOFT_KEYS && 
+                       usage->hid == (HID_UP_MSVENDOR | 0xff05)) {
                int key = 0;
                static int last_key = 0;
                switch (value) {
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index aa470f8..dcb102d 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -305,6 +305,8 @@
 #define USB_VENDOR_ID_MICROSOFT                0x045e
 #define USB_DEVICE_ID_SIDEWINDER_GV    0x003b
 #define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d
+#define USB_DEVICE_ID_MS_NE4K          0x00db
+#define USB_DEVICE_ID_MS_LK6K          0x00f9
 
 #define USB_VENDOR_ID_MONTEREY         0x0566
 #define USB_DEVICE_ID_GENIUS_KB29E     0x3004
@@ -534,6 +536,9 @@ static const struct hid_blacklist {
        { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, 
HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
        { USB_VENDOR_ID_LOGITECH, 
USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, 
HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
 
+       { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K, 
HID_QUIRK_MICROSOFT_KEYS },
+       { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_LK6K, 
HID_QUIRK_MICROSOFT_KEYS },
+
        { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, 
HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },
 
        { USB_VENDOR_ID_PANTHERLORD, 
USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | 
HID_QUIRK_SKIP_OUTPUT_REPORTS },
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 33ec333..24f04cd 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -283,6 +283,7 @@ struct hid_item {
 #define HID_QUIRK_IGNORE_HIDINPUT              0x01000000
 #define HID_QUIRK_2WHEEL_MOUSE_HACK_B8         0x02000000
 #define HID_QUIRK_HWHEEL_WHEEL_INVERT          0x04000000
+#define HID_QUIRK_MICROSOFT_KEYS               0x08000000
 
 /*
  * Separate quirks for runtime report descriptor fixup
-
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