Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 7 Apr 2011 16:42:13 +0000 (09:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 7 Apr 2011 16:42:13 +0000 (09:42 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
  HID: Add support for CH Pro Throttle
  HID: hid-magicmouse: Increase evdev buffer size
  HID: add FF support for Logitech G25/G27
  HID: roccat: Add support for wireless variant of Pyra
  HID: Fix typo Keyoutch -> Keytouch
  HID: add support for Skycable 0x3f07 wireless presenter

drivers/hid/Kconfig
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/hid-lgff.c
drivers/hid/hid-magicmouse.c
drivers/hid/hid-ortek.c
drivers/hid/hid-roccat-pyra.c
drivers/hid/usbhid/hid-quirks.c

index b7ec4057841d15971840d4c31bd1190d14ebf2bc..9de9e97149ec313a7cbffa4fd01f527e1cf7fe28 100644 (file)
@@ -185,7 +185,7 @@ config HID_EZKEY
        Support for Ezkey BTC 8193 keyboard.
 
 config HID_KEYTOUCH
-       tristate "Keyoutch HID devices"
+       tristate "Keytouch HID devices"
        depends on USB_HID
        ---help---
        Support for Keytouch HID devices not fully compliant with
@@ -340,10 +340,17 @@ config HID_NTRIG
        Support for N-Trig touch screen.
 
 config HID_ORTEK
-       tristate "Ortek PKB-1700/WKB-2000 wireless keyboard and mouse trackpad"
+       tristate "Ortek PKB-1700/WKB-2000/Skycable wireless keyboard and mouse trackpad"
        depends on USB_HID
        ---help---
-       Support for Ortek PKB-1700/WKB-2000 wireless keyboard + mouse trackpad.
+       There are certain devices which have LogicalMaximum wrong in the keyboard
+       usage page of their report descriptor. The most prevailing ones so far
+       are manufactured by Ortek, thus the name of the driver. Currently
+       supported devices by this driver are
+
+          - Ortek PKB-1700
+          - Ortek WKB-2000
+          - Skycable wireless presenter
 
 config HID_PANTHERLORD
        tristate "Pantherlord/GreenAsia game controller"
index e9687768a335d5461e1ed7785d0d8bd551af3724..c597836d861866b3da85f56e581d295c15a6a9d3 100644 (file)
@@ -1449,8 +1449,10 @@ static const struct hid_device_id hid_have_special_driver[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPLUS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KOVAPLUS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRED) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
index 65ac53d7aeccf86a9f3a0c1e7a6a9c00af0a470f..00a94b535d287cb6fc498dfef9a4a881fd323480 100644 (file)
 #define USB_DEVICE_ID_CANDO_MULTI_TOUCH_15_6 0x0f01
 
 #define USB_VENDOR_ID_CH               0x068e
+#define USB_DEVICE_ID_CH_PRO_THROTTLE  0x00f1
 #define USB_DEVICE_ID_CH_PRO_PEDALS    0x00f2
 #define USB_DEVICE_ID_CH_COMBATSTICK   0x00f4
 #define USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE       0x0051
 #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE        0x0001
 #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE       0x0600
 
+#define USB_VENDOR_ID_SKYCABLE                 0x1223
+#define        USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER       0x3F07
+
 #define USB_VENDOR_ID_SONY                     0x054c
 #define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE      0x024b
 #define USB_DEVICE_ID_SONY_PS3_CONTROLLER      0x0268
index 90d0ef2c92be9030664d348e6f59ad05af7c7dad..f099079ca6b9f8819210aca297bfe38fa8422e45 100644 (file)
@@ -73,6 +73,8 @@ static const struct dev_type devices[] = {
        { 0x046d, 0xc293, ff_joystick },
        { 0x046d, 0xc294, ff_wheel },
        { 0x046d, 0xc295, ff_joystick },
+       { 0x046d, 0xc298, ff_wheel },
+       { 0x046d, 0xc299, ff_wheel },
        { 0x046d, 0xca03, ff_wheel },
 };
 
index 318cc40df92d6c8ba4ab39535f9c3e9a793da315..418c399d3ef77421301fd471cb64a20516d7bf6e 100644 (file)
@@ -418,6 +418,8 @@ static void magicmouse_setup_input(struct input_dev *input, struct hid_device *h
                        input_set_abs_params(input, ABS_MT_POSITION_Y, -2456,
                                2565, 4, 0);
                }
+
+               input_set_events_per_packet(input, 60);
        }
 
        if (report_undeciphered) {
index f9b7dd4f607f9c7a4403cdead7f1cd40d28ea501..0ffa1d2d64f0b8fe0c8e9931b6afc86ddd866397 100644 (file)
@@ -1,8 +1,14 @@
 /*
- *  HID driver for Ortek PKB-1700/WKB-2000 (wireless keyboard + mouse trackpad).
- *  Fixes LogicalMaximum error in HID report description.
+ *  HID driver for various devices which are apparently based on the same chipset
+ *  from certain vendor which produces chips that contain wrong LogicalMaximum
+ *  value in their HID report descriptor. Currently supported devices are:
+ *
+ *    Ortek PKB-1700
+ *    Ortek WKB-2000
+ *    Skycable wireless presenter
  *
  *  Copyright (c) 2010 Johnathon Harris <jmharris@gmail.com>
+ *  Copyright (c) 2011 Jiri Kosina
  */
 
 /*
@@ -22,8 +28,11 @@ static __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                unsigned int *rsize)
 {
        if (*rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x01) {
-               hid_info(hdev, "Fixing up Ortek WKB-2000 report descriptor\n");
+               hid_info(hdev, "Fixing up logical minimum in report descriptor (Ortek)\n");
                rdesc[55] = 0x92;
+       } else if (*rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) {
+               hid_info(hdev, "Fixing up logical minimum in report descriptor (Skycable)\n");
+               rdesc[53] = 0x65;
        }
        return rdesc;
 }
@@ -31,6 +40,7 @@ static __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
 static const struct hid_device_id ortek_devices[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
        { }
 };
 MODULE_DEVICE_TABLE(hid, ortek_devices);
index 160f481344f6673e22be30bf4232b89feac278ac..38280c055a1929a319e32d8111908f580c420f86 100644 (file)
@@ -652,7 +652,8 @@ static int pyra_raw_event(struct hid_device *hdev, struct hid_report *report,
 static const struct hid_device_id pyra_devices[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT,
                        USB_DEVICE_ID_ROCCAT_PYRA_WIRED) },
-       /* TODO add USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS after testing */
+       { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT,
+                       USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS) },
        { }
 };
 
index 9a94b643ccde7e7b62423d8b1ea0f878f3366be1..a8426f15e9ab1780fd2837ec28267829de756d53 100644 (file)
@@ -59,6 +59,7 @@ static const struct hid_blacklist {
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_COMBATSTICK, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE, HID_QUIRK_NOGET },
+       { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK, HID_QUIRK_NOGET },
        { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET },