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.
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:
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.
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.
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.
- 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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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
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
} 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;
}
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);
{ 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) },
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;
}
{
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,
{ 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) },
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 &&
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;
}
#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
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;
}
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);
}
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)
#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,
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,
#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)
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 */
}
.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");