]> rtime.felk.cvut.cz Git - linux-imx.git/commitdiff
Merge branches 'for-3.10/multitouch', 'for-3.10/roccat' and 'for-3.10/upstream' into...
authorJiri Kosina <jkosina@suse.cz>
Tue, 30 Apr 2013 08:19:07 +0000 (10:19 +0200)
committerJiri Kosina <jkosina@suse.cz>
Tue, 30 Apr 2013 08:19:07 +0000 (10:19 +0200)
Conflicts:
drivers/hid/Kconfig

1  2  3 
drivers/hid/Kconfig
drivers/hid/Makefile
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/hid-lenovo-tpkbd.c
drivers/hid/hid-picolcd.h
drivers/hid/hid-steelseries.c

diff --combined drivers/hid/Kconfig
index 15187b85895d408ad561d02e374cbc8070d9dc9c,5f07d85c4189fc4e0aa41ad5c3bf63e7d77b2ae8,edb15c8741d0283d50592bdb649fb0b07b88ffc0..fb52f3f6de80a377112ea0af5dfb8153772cc14e
@@@@ -92,14 -92,14 -92,14 +92,14 @@@@ menu "Special HID drivers
   
   config HID_A4TECH
        tristate "A4 tech mice" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for A4 tech X5 and WOP-35 / Trust 450L mice.
   
   config HID_ACRUX
        tristate "ACRUX game controller support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Say Y here if you want to enable support for ACRUX game controllers.
   
@@@@ -113,7 -113,7 -113,7 +113,7 @@@@ config HID_ACRUX_F
   
   config HID_APPLE
        tristate "Apple {i,Power,Mac}Books" if EXPERT
 --     depends on (USB_HID || BT_HIDP)
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for some Apple devices which less or more break
        Say Y here if you want support for keyboards of Apple iBooks, PowerBooks,
        MacBooks, MacBook Pros and Apple Aluminum.
   
 ++config HID_APPLEIR
 ++     tristate "Apple infrared receiver"
 ++     depends on (USB_HID)
 ++     ---help---
 ++     Support for Apple infrared remote control. All the Apple computers from
 ++       2005 onwards include such a port, except the unibody Macbook (2009),
 ++       and Mac Pros. This receiver is also used in the Apple TV set-top box
 ++       prior to the 2010 model.
 ++
 ++     Say Y here if you want support for Apple infrared remote control.
 ++
   config HID_AUREAL
        tristate "Aureal"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Aureal Cy se W-01RN Remote Controller and other Aureal derived remotes.
   
   config HID_BELKIN
        tristate "Belkin Flip KVM and Wireless keyboard" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Belkin Flip KVM and Wireless keyboard.
   
   config HID_CHERRY
        tristate "Cherry Cymotion keyboard" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Cherry Cymotion keyboard.
   
   config HID_CHICONY
        tristate "Chicony Tactical pad" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Chicony Tactical pad.
   
   config HID_PRODIKEYS
        tristate "Prodikeys PC-MIDI Keyboard support"
 --     depends on USB_HID && SND
 ++     depends on HID && SND
        select SND_RAWMIDI
        ---help---
        Support for Prodikeys PC-MIDI Keyboard device support.
   
   config HID_CYPRESS
        tristate "Cypress mouse and barcode readers" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for cypress mouse and barcode readers.
   
   config HID_DRAGONRISE
        tristate "DragonRise Inc. game controller"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Say Y here if you have DragonRise Inc. game controllers.
        These might be branded as:
@@@@ -203,7 -192,7 -192,7 +203,7 @@@@ config DRAGONRISE_F
   
   config HID_EMS_FF
        tristate "EMS Production Inc. force feedback support"
 --     depends on USB_HID
 ++     depends on HID
        select INPUT_FF_MEMLESS
        ---help---
        Say Y here if you want to enable force feedback support for devices by
   
   config HID_ELECOM
        tristate "ELECOM BM084 bluetooth mouse"
 --     depends on BT_HIDP
 ++     depends on HID
        ---help---
        Support for the ELECOM BM084 (bluetooth mouse).
   
   config HID_EZKEY
        tristate "Ezkey BTC 8193 keyboard" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Ezkey BTC 8193 keyboard.
@@@@ -242,7 -231,7 -231,7 +242,7 @@@@ config HOLTEK_F
   
   config HID_KEYTOUCH
        tristate "Keytouch HID devices"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Keytouch HID devices not fully compliant with
        the specification. Currently supported:
   
   config HID_KYE
        tristate "KYE/Genius devices"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for KYE/Genius devices not fully compliant with HID standard:
        - Ergo Mouse
   
   config HID_UCLOGIC
        tristate "UC-Logic"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for UC-Logic tablets.
   
   config HID_WALTOP
        tristate "Waltop"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Waltop tablets.
   
   config HID_GYRATION
        tristate "Gyration remote control"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Gyration remote control.
   
   config HID_ICADE
        tristate "ION iCade arcade controller"
 --     depends on BT_HIDP
 ++     depends on HID
        ---help---
        Support for the ION iCade arcade controller to work as a joystick.
   
   
   config HID_TWINHAN
        tristate "Twinhan IR remote control"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Twinhan IR remote control.
   
   config HID_KENSINGTON
        tristate "Kensington Slimblade Trackball" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Kensington Slimblade Trackball.
   
   config HID_LCPOWER
        tristate "LC-Power"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for LC-Power RC1000MCE RF remote control.
   
@@@@ -319,7 -308,7 -308,7 +319,7 @@@@ config HID_LENOVO_TPKB
   
   config HID_LOGITECH
        tristate "Logitech devices" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Logitech devices that are not fully compliant with HID standard.
@@@@ -384,31 -373,31 -373,31 +384,31 @@@@ config LOGIWHEELS_F
          - Logitech Formula Force EX
   
   config HID_MAGICMOUSE
--      tristate "Apple MagicMouse multi-touch support"
 -      depends on BT_HIDP
++      tristate "Apple Magic Mouse/Trackpad multi-touch support"
  -     depends on BT_HIDP
 ++     depends on HID
        ---help---
--      Support for the Apple Magic Mouse multi-touch.
++      Support for the Apple Magic Mouse/Trackpad multi-touch.
   
        Say Y here if you want support for the multi-touch features of the
--      Apple Wireless "Magic" Mouse.
++      Apple Wireless "Magic" Mouse and the Apple Wireless "Magic" Trackpad.
   
   config HID_MICROSOFT
        tristate "Microsoft non-fully HID-compliant devices" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Microsoft devices that are not fully compliant with HID standard.
   
   config HID_MONTEREY
        tristate "Monterey Genius KB29E keyboard" if EXPERT
 --     depends on USB_HID
 ++     depends on HID
        default !EXPERT
        ---help---
        Support for Monterey Genius KB29E.
   
   config HID_MULTITOUCH
        tristate "HID Multitouch panels"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
          Generic support for HID multitouch panels.
   
@@@@ -456,7 -445,7 -445,7 +456,7 @@@@ config HID_NTRI
   
   config HID_ORTEK
        tristate "Ortek PKB-1700/WKB-2000/Skycable wireless keyboard and mouse trackpad"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        There are certain devices which have LogicalMaximum wrong in the keyboard
        usage page of their report descriptor. The most prevailing ones so far
   
   config HID_PANTHERLORD
        tristate "Pantherlord/GreenAsia game controller"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
          Say Y here if you have a PantherLord/GreenAsia based game controller
          or adapter.
@@@@ -484,13 -473,13 -473,13 +484,13 @@@@ config PANTHERLORD_F
   
   config HID_PETALYNX
        tristate "Petalynx Maxter remote control"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Petalynx Maxter remote control.
   
   config HID_PICOLCD
        tristate "PicoLCD (graphic version)"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
          This provides support for Minibox PicoLCD devices, currently
          only the graphical ones are supported.
@@@@ -556,14 -545,14 -545,14 +556,14 @@@@ config HID_PICOLCD_CI
   
   config HID_PRIMAX
        tristate "Primax non-fully HID-compliant devices"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Primax devices that are not fully compliant with the
        HID standard.
   
   config HID_PS3REMOTE
        tristate "Sony PS3 BD Remote Control"
 --     depends on BT_HIDP
 ++     depends on HID
        ---help---
        Support for the Sony PS3 Blue-ray Disk Remote Control and Logitech
        Harmony Adapter for PS3, which connect over Bluetooth.
@@@@ -580,7 -569,7 -569,7 +580,7 @@@@ config HID_ROCCA
   
   config HID_SAITEK
        tristate "Saitek non-fully HID-compliant devices"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Saitek devices that are not fully compliant with the
        HID standard.
   
   config HID_SAMSUNG
        tristate "Samsung InfraRed remote control or keyboards"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Samsung InfraRed remote control or keyboards.
   
@@@@ -603,25 -592,25 -592,25 +603,25 @@@@ config HID_SON
   
   config HID_SPEEDLINK
        tristate "Speedlink VAD Cezanne mouse support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Speedlink Vicious and Divine Cezanne mouse.
   
   config HID_STEELSERIES
        tristate "Steelseries SRW-S1 steering wheel support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Steelseries SRW-S1 steering wheel
   
   config HID_SUNPLUS
        tristate "Sunplus wireless desktop"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Sunplus wireless desktop.
   
   config HID_GREENASIA
        tristate "GreenAsia (Product ID 0x12) game controller support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
          Say Y here if you have a GreenAsia (Product ID 0x12) based game
          controller or adapter.
@@@@ -643,7 -632,7 -632,7 +643,7 @@@@ config HID_HYPERV_MOUS
   
   config HID_SMARTJOYPLUS
        tristate "SmartJoy PLUS PS2/USB adapter support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for SmartJoy PLUS PS2/USB adapter, Super Dual Box,
        Super Joy Box 3 Pro, Super Dual Box Pro, and Super Joy Box 5 Pro.
@@@@ -661,20 -650,20 -650,20 +661,20 @@@@ config SMARTJOYPLUS_F
   
   config HID_TIVO
        tristate "TiVo Slide Bluetooth remote control support"
 --     depends on (USB_HID || BT_HIDP)
 ++     depends on HID
        ---help---
        Say Y if you have a TiVo Slide Bluetooth remote control.
   
   config HID_TOPSEED
        tristate "TopSeed Cyberlink, BTC Emprex, Conceptronic remote control support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
        CLLRCMCE remote control.
   
   config HID_THINGM
        tristate "ThingM blink(1) USB RGB LED"
 --     depends on USB_HID
 ++     depends on HID
        depends on LEDS_CLASS
        ---help---
        Support for the ThingM blink(1) USB RGB LED. This driver registers a
   
   config HID_THRUSTMASTER
        tristate "ThrustMaster devices support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
          Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or
          a THRUSTMASTER Ferrari GT Rumble Wheel.
@@@@ -700,7 -689,7 -689,7 +700,7 @@@@ config THRUSTMASTER_F
   
   config HID_WACOM
        tristate "Wacom Bluetooth devices support"
 --     depends on BT_HIDP
 ++     depends on HID
        depends on LEDS_CLASS
        select POWER_SUPPLY
        ---help---
   
   config HID_WIIMOTE
        tristate "Nintendo Wii Remote support"
 --     depends on BT_HIDP
 ++     depends on HID
        depends on LEDS_CLASS
        select POWER_SUPPLY
        select INPUT_FF_MEMLESS
@@@@ -726,7 -715,7 -715,7 +726,7 @@@@ config HID_WIIMOTE_EX
   
   config HID_ZEROPLUS
        tristate "Zeroplus based game controller support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
          Say Y here if you have a Zeroplus based game controller.
   
@@@@ -740,16 -729,16 -729,16 +740,16 @@@@ config ZEROPLUS_F
   
   config HID_ZYDACRON
        tristate "Zydacron remote control support"
 --     depends on USB_HID
 ++     depends on HID
        ---help---
        Support for Zydacron remote control.
   
   config HID_SENSOR_HUB
        tristate "HID Sensors framework support"
 --     depends on USB_HID && GENERIC_HARDIRQS
 ++     depends on HID && GENERIC_HARDIRQS
        select MFD_CORE
        default n
--      -- help---
++      ---help---
          Support for HID Sensor framework. This creates a MFD instance
          for a sensor hub and identifies all the sensors connected to it.
          Each sensor is registered as a MFD cell, so that sensor specific
diff --combined drivers/hid/Makefile
index cec36715a4572c6e3bb02feed99eed6df8418d86,273515197c37c46c14f04fb8eb9cf0eb9d58c851,72d1b0bc0a97398a9e0294c4f391553b979b9ffa..2065694f57abe482693371988781421404a2485e
@@@@ -39,7 -39,6 -39,6 +39,7 @@@@ endi
   obj-$(CONFIG_HID_A4TECH)     += hid-a4tech.o
   obj-$(CONFIG_HID_ACRUX)              += hid-axff.o
   obj-$(CONFIG_HID_APPLE)              += hid-apple.o
 ++obj-$(CONFIG_HID_APPLEIR)    += hid-appleir.o
   obj-$(CONFIG_HID_AUREAL)        += hid-aureal.o
   obj-$(CONFIG_HID_BELKIN)     += hid-belkin.o
   obj-$(CONFIG_HID_CHERRY)     += hid-cherry.o
@@@@ -95,8 -94,8 -94,8 +95,8 @@@@ obj-$(CONFIG_HID_PRIMAX)      += hid-primax.
   obj-$(CONFIG_HID_PS3REMOTE)  += hid-ps3remote.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-lua.o \
- -     hid-roccat-pyra.o hid-roccat-savu.o
+ +     hid-roccat-koneplus.o hid-roccat-konepure.o hid-roccat-kovaplus.o \
+ +     hid-roccat-lua.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
index 734b3d44dae5aa08dbc22f2ac9d7a664a3997922,733d7e05970858971258b7a4ba57781e588c76c7,f4e1c34ec11d84dbb4c38b1b95559184df09f525..98dd6ab9aa279cbed74f4a151bb94855eaa1a662
@@@@ -728,7 -728,8 -728,8 +728,7 @@@@ static int hid_scan_report(struct hid_d
                } else if (page == HID_UP_SENSOR &&
                        item.type == HID_ITEM_TYPE_MAIN &&
                        item.tag == HID_MAIN_ITEM_TAG_BEGIN_COLLECTION &&
 --                     (item_udata(&item) & 0xff) == HID_COLLECTION_PHYSICAL &&
 --                     (hid->bus == BUS_USB || hid->bus == BUS_I2C))
 ++                     (item_udata(&item) & 0xff) == HID_COLLECTION_PHYSICAL)
                        hid->group = HID_GROUP_SENSOR_HUB;
        }
   
@@@@ -1259,12 -1260,14 -1260,14 +1259,12 @@@@ int hid_input_report(struct hid_device 
        struct hid_report_enum *report_enum;
        struct hid_driver *hdrv;
        struct hid_report *report;
 --     char *buf;
 --     unsigned int i;
        int ret = 0;
   
        if (!hid)
                return -ENODEV;
   
 --     if (down_trylock(&hid->driver_lock))
 ++     if (down_trylock(&hid->driver_input_lock))
                return -EBUSY;
   
        if (!hid->driver) {
        }
   
        /* 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)
 --             goto nomem;
 --
 --     /* dump the report */
 --     snprintf(buf, HID_DEBUG_BUFSIZE - 1,
 --                     "\nreport (size %u) (%snumbered) = ", size, report_enum->numbered ? "" : "un");
 --     hid_debug_event(hid, buf);
 --
 --     for (i = 0; i < size; i++) {
 --             snprintf(buf, HID_DEBUG_BUFSIZE - 1,
 --                             " %02x", data[i]);
 --             hid_debug_event(hid, buf);
 --     }
 --     hid_debug_event(hid, "\n");
 --     kfree(buf);
 ++     if (!list_empty(&hid->debug_list))
 ++             hid_dump_report(hid, type, data, size);
   
 --nomem:
        report = hid_get_report(report_enum, data);
   
        if (!report) {
        ret = hid_report_raw_event(hid, type, data, size, interrupt);
   
   unlock:
 --     up(&hid->driver_lock);
 ++     up(&hid->driver_input_lock);
        return ret;
   }
   EXPORT_SYMBOL_GPL(hid_input_report);
@@@@ -1480,6 -1502,8 -1502,8 +1480,6 @@@@ static const struct hid_device_id hid_h
        { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
        { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_RP_649) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802) },
 --     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
 --     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS) },
 ++     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
 ++     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL2) },
 ++     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL3) },
 ++     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
 ++     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL5) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K) },
++      { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K_JP) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_LK6K) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB) },
        { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKU) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPLUS) },
+ +     { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONEPURE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KOVAPLUS) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_LUA) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_PYRA_WIRED) },
@@@@ -1826,11 -1846,6 -1846,6 +1828,11 @@@@ static int hid_device_probe(struct devi
   
        if (down_interruptible(&hdev->driver_lock))
                return -EINTR;
 ++     if (down_interruptible(&hdev->driver_input_lock)) {
 ++             ret = -EINTR;
 ++             goto unlock_driver_lock;
 ++     }
 ++     hdev->io_started = false;
   
        if (!hdev->driver) {
                id = hid_match_device(hdev, hdrv);
                }
        }
   unlock:
 ++     if (!hdev->io_started)
 ++             up(&hdev->driver_input_lock);
 ++unlock_driver_lock:
        up(&hdev->driver_lock);
        return ret;
   }
@@@@ -1864,15 -1876,9 -1876,9 +1866,15 @@@@ static int hid_device_remove(struct dev
   {
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
        struct hid_driver *hdrv;
 ++     int ret = 0;
   
        if (down_interruptible(&hdev->driver_lock))
                return -EINTR;
 ++     if (down_interruptible(&hdev->driver_input_lock)) {
 ++             ret = -EINTR;
 ++             goto unlock_driver_lock;
 ++     }
 ++     hdev->io_started = false;
   
        hdrv = hdev->driver;
        if (hdrv) {
                hdev->driver = NULL;
        }
   
 ++     if (!hdev->io_started)
 ++             up(&hdev->driver_input_lock);
 ++unlock_driver_lock:
        up(&hdev->driver_lock);
 --     return 0;
 ++     return ret;
   }
   
   static ssize_t modalias_show(struct device *dev, struct device_attribute *a,
@@@@ -2075,6 -2078,7 -2078,6 +2077,6 @@@@ static const struct hid_device_id hid_i
        { 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_MASTERKIT, USB_DEVICE_ID_MASTERKIT_MA901RADIO) },
        { 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) },
@@@@ -2241,18 -2245,6 -2244,6 +2243,18 @@@@ bool hid_ignore(struct hid_device *hdev
                     hdev->product <= USB_DEVICE_ID_VELLEMAN_K8061_LAST))
                        return true;
                break;
 ++     case USB_VENDOR_ID_ATMEL_V_USB:
 ++             /* Masterkit MA901 usb radio based on Atmel tiny85 chip and
 ++              * it has the same USB ID as many Atmel V-USB devices. This
 ++              * usb radio is handled by radio-ma901.c driver so we want
 ++              * ignore the hid. Check the name, bus, product and ignore
 ++              * if we have MA901 usb radio.
 ++              */
 ++             if (hdev->product == USB_DEVICE_ID_ATMEL_V_USB &&
 ++                     hdev->bus == BUS_USB &&
 ++                     strncmp(hdev->name, "www.masterkit.ru MA901", 22) == 0)
 ++                     return true;
 ++             break;
        }
   
        if (hdev->type == HID_TYPE_USBMOUSE &&
@@@@ -2338,9 -2330,7 -2329,7 +2340,9 @@@@ struct hid_device *hid_allocate_device(
   
        init_waitqueue_head(&hdev->debug_wait);
        INIT_LIST_HEAD(&hdev->debug_list);
 ++     mutex_init(&hdev->debug_list_lock);
        sema_init(&hdev->driver_lock, 1);
 ++     sema_init(&hdev->driver_input_lock, 1);
   
        return hdev;
   }
diff --combined drivers/hid/hid-ids.h
index 68a73740ac99d9fb33b85d1c8506cc787c119ed3,a2e767b3d5d2bf66c5495ed454c57b9c289b046b,89ef50c52da5b563c38c07f920dc551bdcec4b45..61bea32b6ab5c49117e8ced2e91d1ff00521795e
   #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO   0x0256
   #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
   #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY  0x030b
 --#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL    0x8241
 ++#define USB_DEVICE_ID_APPLE_IRCONTROL        0x8240
 ++#define USB_DEVICE_ID_APPLE_IRCONTROL2       0x1440
 ++#define USB_DEVICE_ID_APPLE_IRCONTROL3       0x8241
   #define USB_DEVICE_ID_APPLE_IRCONTROL4       0x8242
 ++#define USB_DEVICE_ID_APPLE_IRCONTROL5       0x8243
   
   #define USB_VENDOR_ID_ASUS           0x0486
   #define USB_DEVICE_ID_ASUS_T91MT     0x0185
   #define USB_VENDOR_ID_ATMEL          0x03eb
   #define USB_DEVICE_ID_ATMEL_MULTITOUCH       0x211c
   #define USB_DEVICE_ID_ATMEL_MXT_DIGITIZER    0x2118
 ++#define USB_VENDOR_ID_ATMEL_V_USB    0x16c0
 ++#define USB_DEVICE_ID_ATMEL_V_USB    0x05df
   
   #define USB_VENDOR_ID_AUREAL         0x0755
   #define USB_DEVICE_ID_AUREAL_W01RN   0x2626
   #define USB_VENDOR_ID_MADCATZ                0x0738
   #define USB_DEVICE_ID_MADCATZ_BEATPAD        0x4540
   
 - #define USB_VENDOR_ID_MASTERKIT                      0x16c0
 - #define USB_DEVICE_ID_MASTERKIT_MA901RADIO   0x05df
 - 
   #define USB_VENDOR_ID_MCC            0x09db
   #define USB_DEVICE_ID_MCC_PMD1024LS  0x0076
   #define USB_DEVICE_ID_MCC_PMD1208LS  0x007a
   #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_NE4K_JP     0x00dc
   #define USB_DEVICE_ID_MS_LK6K                0x00f9
   #define USB_DEVICE_ID_MS_PRESENTER_8K_BT     0x0701
   #define USB_DEVICE_ID_MS_PRESENTER_8K_USB    0x0713
   #define USB_VENDOR_ID_MONTEREY               0x0566
   #define USB_DEVICE_ID_GENIUS_KB29E   0x3004
   
 ++#define USB_VENDOR_ID_MSI            0x1770
 ++#define USB_DEVICE_ID_MSI_GX680R_LED_PANEL   0xff00
 ++
   #define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400
   #define USB_DEVICE_ID_N_S_HARMONY    0xc359
   
   #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001              0x3001
   #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008              0x3008
   
 ++#define USB_VENDOR_ID_REALTEK                0x0bda
 ++#define USB_DEVICE_ID_REALTEK_READER 0x0152
 ++
   #define USB_VENDOR_ID_ROCCAT         0x1e7d
   #define USB_DEVICE_ID_ROCCAT_ARVO    0x30d4
   #define USB_DEVICE_ID_ROCCAT_ISKU    0x319c
+ +#define USB_DEVICE_ID_ROCCAT_ISKUFX  0x3264
   #define USB_DEVICE_ID_ROCCAT_KONE    0x2ced
   #define USB_DEVICE_ID_ROCCAT_KONEPLUS        0x2d51
+ +#define USB_DEVICE_ID_ROCCAT_KONEPURE        0x2dbe
   #define USB_DEVICE_ID_ROCCAT_KONEXTD 0x2e22
   #define USB_DEVICE_ID_ROCCAT_KOVAPLUS        0x2d50
   #define USB_DEVICE_ID_ROCCAT_LUA     0x2c2e
index a0535fd7a7987409e830bb120fe8f70df4a6fbcf,956c3b135f64fe61e4a4636e2e81e911ad3ee141,c842ece2be378cbd38a94486c130b3b091ccd89d..07837f5a4eb88adaae7ba8c20f4517a15754b440
@@@@ -68,7 -68,7 -68,7 +68,7 @@@@ static int tpkbd_features_set(struct hi
        report->field[2]->value[0] = data_pointer->sensitivity;
        report->field[3]->value[0] = data_pointer->press_speed;
   
 --     usbhid_submit_report(hdev, report, USB_DIR_OUT);
 ++     hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
        return 0;
   }
   
@@@@ -228,8 -228,8 -228,6 +228,6 @@@@ static ssize_t pointer_press_speed_show
        struct hid_device *hdev = container_of(dev, struct hid_device, dev);
        struct tpkbd_data_pointer *data_pointer = hid_get_drvdata(hdev);
   
--      data_pointer = hid_get_drvdata(hdev);
-- 
        return snprintf(buf, PAGE_SIZE, "%u\n",
                data_pointer->press_speed);
   }
@@@@ -332,7 -332,7 -330,7 +330,7 @@@@ static void tpkbd_led_brightness_set(st
        report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3];
        report->field[0]->value[0] = (data_pointer->led_state >> 0) & 1;
        report->field[0]->value[1] = (data_pointer->led_state >> 1) & 1;
 --     usbhid_submit_report(hdev, report, USB_DIR_OUT);
 ++     hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
   }
   
   static int tpkbd_probe_tp(struct hid_device *hdev)
index 2941891ecac2747616258beabbb932acad31f793,020cef69f6a13e07df8d8f9911b4c060b0773461,88c7c934c6030419c5e61a81d245aa4d007c4f01..e56d847b2ef1996dfee6c5f60c39401db35dcf15
@@@@ -142,10 -142,10 -142,10 +142,10 @@@@ struct hid_report *picolcd_report(int i
   #ifdef CONFIG_DEBUG_FS
   void picolcd_debug_out_report(struct picolcd_data *data,
                struct hid_device *hdev, struct hid_report *report);
 --#define usbhid_submit_report(a, b, c) \
 ++#define hid_hw_request(a, b, c) \
        do { \
                picolcd_debug_out_report(hid_get_drvdata(a), a, b); \
 --             usbhid_submit_report(a, b, c); \
 ++             hid_hw_request(a, b, c); \
        } while (0)
   
   void picolcd_debug_raw_event(struct picolcd_data *data,
@@@@ -302,7 -302,7 -302,7 +302,7 @@@@ static inline int picolcd_init_cir(stru
   static inline void picolcd_exit_cir(struct picolcd_data *data)
   {
   }
-- #endif /* CONFIG_HID_PICOLCD_LIRC */
++ #endif /* CONFIG_HID_PICOLCD_CIR */
   
   int picolcd_reset(struct hid_device *hdev);
   struct picolcd_pending *picolcd_send_and_wait(struct hid_device *hdev,
index 98e66ac718426cda87ae78cc2facaa97ca8543b8,2ed995cda44a8763a11c4c5aba0e69277dfb1069,136d156d0a4402f4b9fc046d93f8bb585ea50380..9b0efb0083feaf4a1f258226aad0426c7b961721
   #include <linux/hid.h>
   #include <linux/module.h>
   
 --#include "usbhid/usbhid.h"
   #include "hid-ids.h"
   
   #if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
@@@@ -131,7 -132,7 -132,7 +131,7 @@@@ static void steelseries_srws1_set_leds(
        value[14] = 0x00;
        value[15] = 0x00;
   
 --     usbhid_submit_report(hdev, report, USB_DIR_OUT);
 ++     hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
   
        /* Note: LED change does not show on device until the device is read/polled */
   }
@@@@ -377,16 -378,16 -378,5 +377,5 @@@@ static struct hid_driver steelseries_sr
        .report_fixup = steelseries_srws1_report_fixup
   };
   
-- static int __init steelseries_srws1_init(void)
-- {
--      return hid_register_driver(&steelseries_srws1_driver);
-- }
-- 
-- static void __exit steelseries_srws1_exit(void)
-- {
--      hid_unregister_driver(&steelseries_srws1_driver);
-- }
-- 
-- module_init(steelseries_srws1_init);
-- module_exit(steelseries_srws1_exit);
++ module_hid_driver(steelseries_srws1_driver);
   MODULE_LICENSE("GPL");