Merge branches 'hidraw', 'magicmouse', 'multitouch', 'roccat', 'suspend-fixes' and...
authorJiri Kosina <jkosina@suse.cz>
Tue, 24 Jul 2012 11:39:00 +0000 (13:39 +0200)
committerJiri Kosina <jkosina@suse.cz>
Tue, 24 Jul 2012 11:39:00 +0000 (13:39 +0200)
1  2  3  4  5  6 
drivers/hid/Kconfig
drivers/hid/Makefile
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/hid-input.c
drivers/hid/hid-picolcd.c

diff --combined drivers/hid/Kconfig
      #
      # HID driver configuration
      #
  -  -menuconfig HID_SUPPORT
  -  -  bool "HID Devices"
  -  -  depends on INPUT
  -  -  default y
  -  -  ---help---
  -  -    Say Y here to get to see options for various computer-human interface
  -  -    device drivers. This option alone does not add any kernel code.
  -  -
  -  -    If you say N, all options in this submenu will be skipped and disabled.
  -  -
  -  -if HID_SUPPORT
  +  +menu "HID support"
  +  +     depends on INPUT
      
      config HID
  -  -  tristate "Generic HID support"
  +  +  tristate "HID bus support"
        depends on INPUT
        default y
        ---help---
          most commonly used to refer to the USB-HID specification, but other
          devices (such as, but not strictly limited to, Bluetooth) are
          designed using HID specification (this involves certain keyboards,
  -  -    mice, tablets, etc). This option compiles into kernel the generic
  -  -    HID layer code (parser, usages, etc.), which can then be used by
  -  -    transport-specific HID implementation (like USB or Bluetooth).
  +  +    mice, tablets, etc). This option adds the HID bus to the kernel,
  +  +    together with generic HID layer code. The HID devices are added and
  +  +    removed from the HID bus by the transport-layer drivers, such as
  +  +    usbhid (USB_HID) and hidp (BT_HIDP).
      
          For docs and specs, see http://www.usb.org/developers/hidpage/
      
          If unsure, say Y.
      
  +  +if HID
  +  +
      config HID_BATTERY_STRENGTH
        bool "Battery level reporting for HID devices"
        depends on HID && POWER_SUPPLY && HID = POWER_SUPPLY
@@@@@@@ -53,22 -53,22 -59,23 -53,22 -53,22 -59,23 +53,22 @@@@@@@ config HIDRA
      
        If unsure, say Y.
      
  -  -source "drivers/hid/usbhid/Kconfig"
  -  -
  -  -menu "Special HID drivers"
  -  -  depends on HID
  -  -
      config HID_GENERIC
        tristate "Generic HID driver"
        depends on HID
  -  -  default y
  +  +  default HID
        ---help---
  -  -  Support for generic HID devices.
  +  +  Support for generic devices on the HID bus. This includes most
  +  +  keyboards and mice, joysticks, tablets and digitizers.
      
        To compile this driver as a module, choose M here: the module
        will be called hid-generic.
      
        If unsure, say Y.
      
  +  +menu "Special HID drivers"
  +  +  depends on HID
  +  +
      config HID_A4TECH
        tristate "A4 tech mice" if EXPERT
        depends on USB_HID
@@@@@@@ -193,10 -193,10 -200,10 -193,10 -193,10 -200,12 +193,12 @@@@@@@ config HID_EZKE
        Support for Ezkey BTC 8193 keyboard.
      
      config HID_HOLTEK
-----   tristate "Holtek On Line Grip based game controller support"
+++++   tristate "Holtek HID devices"
        depends on USB_HID
        ---help---
-----     Say Y here if you have a Holtek On Line Grip based game controller.
+++++   Support for Holtek based devices:
+++++     - Holtek On Line Grip based game controller
+++++     - Trust GXT 18 Gaming Keyboard
      
      config HOLTEK_FF
        bool "Holtek On Line Grip force feedback support"
@@@@@@@ -261,6 -261,6 -268,6 -261,6 -261,6 -270,19 +263,19 @@@@@@@ config HID_LCPOWE
        ---help---
        Support for LC-Power RC1000MCE RF remote control.
      
+++++ config HID_LENOVO_TPKBD
+++++   tristate "Lenovo ThinkPad USB Keyboard with TrackPoint"
+++++   depends on USB_HID
+++++   select NEW_LEDS
+++++   select LEDS_CLASS
+++++   ---help---
+++++   Support for the Lenovo ThinkPad USB Keyboard with TrackPoint.
+++++ 
+++++   Say Y here if you have a Lenovo ThinkPad USB Keyboard with TrackPoint
+++++   and would like to use device-specific features like changing the
+++++   sensitivity of the trackpoint, using the microphone mute button or
+++++   controlling the mute and microphone mute LEDs.
+++++ 
      config HID_LOGITECH
        tristate "Logitech devices" if EXPERT
        depends on USB_HID
@@@@@@@ -386,7 -386,6 -393,7 -386,6 -386,7 -408,6 +401,7 @@@@@@@ config HID_MULTITOUC
          - Unitec Panels
          - XAT optical touch panels
          - Xiroku optical touch panels
 + + +    - Zytronic touch panels
      
          If unsure, say N.
      
@@@@@@@ -464,7 -463,7 -471,7 -463,7 -464,7 -485,7 +479,7 @@@@@@@ config HID_PICOLCD_F
        select FB_SYS_FOPS
        ---help---
          Provide access to PicoLCD's 256x64 monochrome display via a
  -  -    frambuffer device.
  +  +    framebuffer device.
      
      config HID_PICOLCD_BACKLIGHT
        bool "Backlight control" if EXPERT
@@@@@@@ -656,8 -655,8 -663,4 -655,8 -656,8 -677,4 +671,8 @@@@@@@ config HID_ZYDACRO
      
      endmenu
      
  -  -endif # HID_SUPPORT
  +  +endif # HID
  +  +
  +  +source "drivers/hid/usbhid/Kconfig"
  +  +
  +  +endmenu
diff --combined drivers/hid/Makefile
@@@@@@@ -48,12 -48,12 -48,12 -48,12 -48,12 -48,14 +48,14 @@@@@@@ obj-$(CONFIG_HID_EMS_FF)       += hid-emsff.
      obj-$(CONFIG_HID_ELECOM)  += hid-elecom.o
      obj-$(CONFIG_HID_EZKEY)           += hid-ezkey.o
      obj-$(CONFIG_HID_GYRATION)        += hid-gyration.o
+++++ obj-$(CONFIG_HID_HOLTEK)  += hid-holtek-kbd.o
      obj-$(CONFIG_HID_HOLTEK)  += hid-holtekff.o
      obj-$(CONFIG_HID_HYPERV_MOUSE)    += hid-hyperv.o
      obj-$(CONFIG_HID_KENSINGTON)      += hid-kensington.o
      obj-$(CONFIG_HID_KEYTOUCH)        += hid-keytouch.o
      obj-$(CONFIG_HID_KYE)             += hid-kye.o
      obj-$(CONFIG_HID_LCPOWER)       += hid-lcpower.o
+++++ obj-$(CONFIG_HID_LENOVO_TPKBD)    += hid-lenovo-tpkbd.o
      obj-$(CONFIG_HID_LOGITECH)        += hid-logitech.o
      obj-$(CONFIG_HID_LOGITECH_DJ)     += hid-logitech-dj.o
      obj-$(CONFIG_HID_MAGICMOUSE)    += hid-magicmouse.o
@@@@@@@ -69,7 -69,7 -69,7 -69,8 -69,7 -71,7 +71,8 @@@@@@@ obj-$(CONFIG_HID_PICOLCD)     += hid-picolc
      obj-$(CONFIG_HID_PRIMAX)  += hid-primax.o
      obj-$(CONFIG_HID_ROCCAT)  += hid-roccat.o hid-roccat-common.o \
        hid-roccat-arvo.o hid-roccat-isku.o hid-roccat-kone.o \
--- --  hid-roccat-koneplus.o hid-roccat-kovaplus.o hid-roccat-pyra.o
+++ ++  hid-roccat-koneplus.o hid-roccat-kovaplus.o hid-roccat-pyra.o \
+++ ++  hid-roccat-savu.o
      obj-$(CONFIG_HID_SAITEK)  += hid-saitek.o
      obj-$(CONFIG_HID_SAMSUNG) += hid-samsung.o
      obj-$(CONFIG_HID_SMARTJOYPLUS)    += hid-sjoy.o
diff --combined drivers/hid/hid-core.c
@@@@@@@ -1194,10 -1194,8 -1194,8 -1194,8 -1194,8 -1194,8 +1194,10 @@@@@@@ int hid_report_raw_event(struct hid_dev
                        goto out;
        }
      
 -----  for (a = 0; a < report->maxfield; a++)
 -----          hid_input_field(hid, report->field[a], cdata, interrupt);
 +++++  if (hid->claimed != HID_CLAIMED_HIDRAW) {
 +++++          for (a = 0; a < report->maxfield; a++)
 +++++                  hid_input_field(hid, report->field[a], cdata, interrupt);
 +++++  }
      
        if (hid->claimed & HID_CLAIMED_INPUT)
                hidinput_report_event(hid, report);
@@@@@@@ -1245,10 -1243,6 -1243,6 -1243,6 -1243,6 -1243,6 +1245,10 @@@@@@@ int hid_input_report(struct hid_device 
                goto unlock;
        }
      
 +++++  /* Avoid unnecessary overhead if debugfs is disabled */
 +++++  if (list_empty(&hid->debug_list))
 +++++          goto nomem;
 +++++
        buf = kmalloc(sizeof(char) * HID_DEBUG_BUFSIZE, GFP_ATOMIC);
      
        if (!buf)
@@@@@@@ -1379,8 -1373,8 -1373,8 -1373,8 -1373,8 -1373,10 +1379,10 @@@@@@@ int hid_connect(struct hid_device *hdev
        if ((connect_mask & HID_CONNECT_HIDRAW) && !hidraw_connect(hdev))
                hdev->claimed |= HID_CLAIMED_HIDRAW;
      
-----   if (!hdev->claimed) {
-----           hid_err(hdev, "claimed by neither input, hiddev nor hidraw\n");
+++++   /* Drivers with the ->raw_event callback set are not required to connect
+++++    * to any other listener. */
+++++   if (!hdev->claimed && !hdev->driver->raw_event) {
+++++           hid_err(hdev, "device has no listeners, quitting\n");
                return -ENODEV;
        }
      
@@@@@@@ -1509,9 -1503,6 -1503,6 -1503,6 -1503,9 -1505,6 +1511,9 @@@@@@@ static const struct hid_device_id hid_h
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
+++++   { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_3) },
+++++   { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_4) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) },
        { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0011) },
        { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) },
        { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_3) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK, USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP) },
+++++   { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) },
        { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M610X) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LCPOWER, USB_DEVICE_ID_LCPOWER_LC1000 ) },
+++++   { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPKBD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2) },
        { 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_ROCCAT, USB_DEVICE_ID_ROCCAT_SAVU) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
        { 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) },
@@@@@@@ -1889,7 -1880,7 -1880,6 -1881,7 -1883,7 -1886,6 +1896,7 @@@@@@@ static const struct hid_device_id hid_i
        { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM)},
        { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM2)},
        { HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) },
  +  +  { HID_USB_DEVICE(USB_VENDOR_ID_AXENTIA, USB_DEVICE_ID_AXENTIA_FM_RADIO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) },
        { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MCT) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) },
        { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) },
@@@@@@@ -2099,9 -2089,6 -2088,6 -2090,6 -2093,9 -2094,6 +2106,9 @@@@@@@ static const struct hid_device_id hid_m
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
 +++ +  { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
        { }
diff --combined drivers/hid/hid-ids.h
      #define USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI      0x024c
      #define USB_DEVICE_ID_APPLE_WELLSPRING6_ISO       0x024d
      #define USB_DEVICE_ID_APPLE_WELLSPRING6_JIS       0x024e
 +++ +#define USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI      0x0262
 +++ +#define USB_DEVICE_ID_APPLE_WELLSPRING7_ISO       0x0263
 +++ +#define USB_DEVICE_ID_APPLE_WELLSPRING7_JIS       0x0264
      #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI  0x0239
      #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO   0x023a
      #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS   0x023b
      #define USB_VENDOR_ID_AVERMEDIA           0x07ca
      #define USB_DEVICE_ID_AVER_FM_MR800       0xb800
      
  +  +#define USB_VENDOR_ID_AXENTIA             0x12cf
  +  +#define USB_DEVICE_ID_AXENTIA_FM_RADIO    0x7111
  +  +
      #define USB_VENDOR_ID_BAANTO              0x2453
      #define USB_DEVICE_ID_BAANTO_MT_190W2     0x0100
      
      #define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d
      #define USB_DEVICE_ID_CHICONY_WIRELESS    0x0618
      #define USB_DEVICE_ID_CHICONY_WIRELESS2   0x1123
+++++ #define USB_DEVICE_ID_CHICONY_AK1D        0x1125
      
      #define USB_VENDOR_ID_CHUNGHWAT           0x2247
      #define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH        0x0001
      #define USB_DEVICE_ID_CYPRESS_BARCODE_1   0xde61
      #define USB_DEVICE_ID_CYPRESS_BARCODE_2   0xde64
      #define USB_DEVICE_ID_CYPRESS_BARCODE_3   0xbca1
+++++ #define USB_DEVICE_ID_CYPRESS_BARCODE_4   0xed81
      #define USB_DEVICE_ID_CYPRESS_TRUETOUCH   0xc001
      
      #define USB_VENDOR_ID_DEALEXTREAME        0x10c5
      #define USB_VENDOR_ID_HOLTEK              0x1241
      #define USB_DEVICE_ID_HOLTEK_ON_LINE_GRIP 0x5015
      
+++++ #define USB_VENDOR_ID_HOLTEK_ALT          0x04d9
+++++ #define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD 0xa055
+++++ 
      #define USB_VENDOR_ID_IMATION             0x0718
      #define USB_DEVICE_ID_DISC_STAKKA 0xd000
      
      #define USB_DEVICE_ID_LD_HYBRID           0x2090
      #define USB_DEVICE_ID_LD_HEATCONTROL      0x20A0
      
+++++ #define USB_VENDOR_ID_LENOVO              0x17ef
+++++ #define USB_DEVICE_ID_LENOVO_TPKBD        0x6009
+++++ 
      #define USB_VENDOR_ID_LG          0x1fd2
      #define USB_DEVICE_ID_LG_MULTITOUCH       0x0064
      
      #define USB_DEVICE_ID_CRYSTALTOUCH        0x0006
      #define USB_DEVICE_ID_CRYSTALTOUCH_DUAL   0x0007
      
 +++ +#define USB_VENDOR_ID_MADCATZ             0x0738
 +++ +#define USB_DEVICE_ID_MADCATZ_BEATPAD     0x4540
 +++ +
      #define USB_VENDOR_ID_MCC         0x09db
      #define USB_DEVICE_ID_MCC_PMD1024LS       0x0076
      #define USB_DEVICE_ID_MCC_PMD1208LS       0x007a
      #define USB_VENDOR_ID_NINTENDO            0x057e
      #define USB_DEVICE_ID_NINTENDO_WIIMOTE    0x0306
      
++ +++#define USB_VENDOR_ID_NOVATEK             0x0603
++ +++#define USB_DEVICE_ID_NOVATEK_PCT 0x0600
++ +++
      #define USB_VENDOR_ID_NTRIG               0x1b96
      #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN   0x0001
      #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1   0x0003
      #define USB_DEVICE_ID_ROCCAT_KOVAPLUS     0x2d50
      #define USB_DEVICE_ID_ROCCAT_PYRA_WIRED   0x2c24
      #define USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS        0x2cf6
+++ ++#define USB_DEVICE_ID_ROCCAT_SAVU 0x2d5a
      
      #define USB_VENDOR_ID_SAITEK              0x06a3
      #define USB_DEVICE_ID_SAITEK_RUMBLEPAD    0xff17
      #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE   0x0001
      #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE  0x0600
      
 +++ +#define USB_VENDOR_ID_SENNHEISER  0x1395
 +++ +#define USB_DEVICE_ID_SENNHEISER_BTD500USB        0x002c
 +++ +
      #define USB_VENDOR_ID_SIGMA_MICRO 0x1c4f
      #define USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD        0x0002
      
      #define USB_VENDOR_ID_ZYDACRON    0x13EC
      #define USB_DEVICE_ID_ZYDACRON_REMOTE_CONTROL     0x0006
      
 + + +#define USB_VENDOR_ID_ZYTRONIC            0x14c8
 + + +#define USB_DEVICE_ID_ZYTRONIC_ZXY100     0x0005
 + + +
      #define USB_VENDOR_ID_PRIMAX      0x0461
      #define USB_DEVICE_ID_PRIMAX_KEYBOARD     0x4e05
      
diff --combined drivers/hid/hid-input.c
@@@@@@@ -301,9 -301,6 -301,6 -301,6 -301,9 -301,6 +301,9 @@@@@@@ static const struct hid_device_id hid_b
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE,
                               USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI),
          HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE },
 +++ +  { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE,
 +++ +          USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI),
 +++ +    HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE },
        {}
      };
      
@@@@@@@ -833,6 -830,6 -830,6 -830,6 -833,6 -830,15 +833,15 @@@@@@@ static void hidinput_configure_usage(st
                case 0x084: map_key_clear(KEY_FINANCE);         break;
                case 0x085: map_key_clear(KEY_SPORT);           break;
                case 0x086: map_key_clear(KEY_SHOP);            break;
+++++           default:    goto ignore;
+++++           }
+++++           break;
+++++ 
+++++   case HID_UP_HPVENDOR2:
+++++           set_bit(EV_REP, input->evbit);
+++++           switch (usage->hid & HID_USAGE) {
+++++           case 0x003: map_key_clear(KEY_BRIGHTNESSDOWN);  break;
+++++           case 0x004: map_key_clear(KEY_BRIGHTNESSUP);    break;
                default:    goto ignore;
                }
                break;
@@@@@@@ -1846,7 -1846,7 -1846,7 -1846,7 -1846,7 -1846,7 +1846,7 @@@@@@@ static void picolcd_debug_out_report(st
      #define BUFF_SZ 256
      
        /* Avoid unnecessary overhead if debugfs is disabled */
 -----  if (!hdev->debug_events)
 +++++  if (list_empty(&hdev->debug_list))
                return;
      
        buff = kmalloc(BUFF_SZ, GFP_ATOMIC);
@@@@@@@ -2613,11 -2613,11 -2613,11 -2613,11 -2613,11 -2613,7 +2613,7 @@@@@@@ static int picolcd_probe(struct hid_dev
                goto err_cleanup_data;
        }
      
-----   /* We don't use hidinput but hid_hw_start() fails if nothing is
-----    * claimed. So spoof claimed input. */
-----   hdev->claimed = HID_CLAIMED_INPUT;
        error = hid_hw_start(hdev, 0);
-----   hdev->claimed = 0;
        if (error) {
                hid_err(hdev, "hardware start failed\n");
                goto err_cleanup_data;