Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d464c92b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull HID updates from Jiri Kosina:
 "It contains HID driver updates all over the place -- a lot of new
  hardware support especially in the multitouch area, including generic
  handling of all multitouch devices by the hid-multitiouch driver
  automatically."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (42 commits)
  HID: multitouch: add PID for Fructel product
  HID: wacom: Add reporting of wheel for Intuos4 WL
  HID: wacom: Replace __set_bit with input_set_capability
  HID: tivo: add support for BT-version (0x1200)
  HID: wacom: Reset stylus buttons - Intuos4 WL
  HID: multitouch: detect serial protocol
  HID: handle all multitouch devices through hid-multitouch
  HID: multitouch: fix handling of buggy reports descriptors for Dell ST2220T
  HID: make it possible to force hid-core claim the device
  HID: multitouch: add support for eGalax 0x722a
  HID: usbhid: add quirk no_get for quanta 3008 devices
  HID: multitouch: add more eGalax devices
  HID: multitouch: add new PID from Ideacom
  HID: multitouch: add support for Atmel maXTouch 03eb:2118
  HID: waltop: Add support for tablet with PID 0038
  HID: waltop: Replace original rdescs with links
  HID: uclogic: Replace original rdescs with links
  HID: wacom: Add pad buttons reporting on Intuos4 WL
  HID: wacom: report distance for Intuos4 WL
  HID: kye: Add support for 3 tablets
  ...
parents 3b59bf08 4a247a41
Loading
Loading
Loading
Loading
+26 −51
Original line number Diff line number Diff line
@@ -200,11 +200,14 @@ config HID_KEYTOUCH
		- Keytouch IEC 60945

config HID_KYE
	tristate "Kye/Genius Ergo Mouse" if EXPERT
	tristate "KYE/Genius devices"
	depends on USB_HID
	default !EXPERT
	---help---
	Support for Kye/Genius Ergo Mouse.
	Support for KYE/Genius devices not fully compliant with HID standard:
	- Ergo Mouse
	- EasyPen i405X tablet
	- MousePen i608X tablet
	- EasyPen M610X tablet

config HID_UCLOGIC
	tristate "UC-Logic"
@@ -257,7 +260,9 @@ config HID_LOGITECH_DJ
	---help---
	Say Y if you want support for Logitech Unifying receivers and devices.
	Unifying receivers are capable of pairing up to 6 Logitech compliant
	devices to the same receiver.
	devices to the same receiver. Without this driver it will be handled by
	generic USB_HID driver and all incomming events will be multiplexed
	into a single mouse and a single keyboard device.

config LOGITECH_FF
	bool "Logitech force feedback support"
@@ -354,7 +359,9 @@ config HID_MULTITOUCH
	  - LG Display panels (Dell ST2220Tc)
	  - Lumio CrystalTouch panels
	  - MosArt dual-touch panels
	  - Panasonic multitouch panels
	  - PenMount dual touch panels
	  - Perixx Peripad 701 touchpad
	  - PixArt optical touch screen
	  - Pixcir dual touch panels
	  - Quanta panels
@@ -476,59 +483,21 @@ config HID_PRIMAX
	HID standard.

config HID_ROCCAT
	tristate "Roccat special event support"
	depends on USB_HID
	select HID_ROCCAT_COMMON
	---help---
	Support for Roccat special events.
	Say Y here if you have a Roccat mouse or keyboard and want OSD or
	macro execution support.

config HID_ROCCAT_COMMON
	tristate
	depends on HID_ROCCAT

config HID_ROCCAT_ARVO
	tristate "Roccat Arvo keyboard support"
	depends on USB_HID
	depends on HID_ROCCAT
	---help---
	Support for Roccat Arvo keyboard.

config HID_ROCCAT_ISKU
	tristate "Roccat Isku keyboard support"
	depends on USB_HID
	depends on HID_ROCCAT
	---help---
	Support for Roccat Isku keyboard.

config HID_ROCCAT_KONE
	tristate "Roccat Kone Mouse support"
	tristate "Roccat device support"
	depends on USB_HID
	depends on HID_ROCCAT
	---help---
	Support for Roccat Kone mouse.
	Support for Roccat devices.
	Say Y here if you have a Roccat mouse or keyboard and want
	support for its special functionalities.

config HID_ROCCAT_KONEPLUS
	tristate "Roccat Kone[+] mouse support"
config HID_SAITEK
	tristate "Saitek non-fully HID-compliant devices"
	depends on USB_HID
	depends on HID_ROCCAT
	---help---
	Support for Roccat Kone[+] mouse.

config HID_ROCCAT_KOVAPLUS
	tristate "Roccat Kova[+] mouse support"
	depends on USB_HID
	depends on HID_ROCCAT
	---help---
	Support for Roccat Kova[+] mouse.
	Support for Saitek devices that are not fully compliant with the
	HID standard.

config HID_ROCCAT_PYRA
	tristate "Roccat Pyra mouse support"
	depends on USB_HID
	depends on HID_ROCCAT
	---help---
	Support for Roccat Pyra mouse.
	Currently only supports the PS1000 controller.

config HID_SAMSUNG
	tristate "Samsung InfraRed remote control or keyboards"
@@ -594,6 +563,12 @@ config SMARTJOYPLUS_FF
	Say Y here if you have a SmartJoy PLUS PS2/USB adapter and want to
	enable force feedback support for it.

config HID_TIVO
	tristate "TiVo Slide Bluetooth remote control support"
	depends on (USB_HID || BT_HIDP)
	---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
+5 −8
Original line number Diff line number Diff line
@@ -64,14 +64,10 @@ obj-$(CONFIG_HID_PANTHERLORD) += hid-pl.o
obj-$(CONFIG_HID_PETALYNX)	+= hid-petalynx.o
obj-$(CONFIG_HID_PICOLCD)	+= hid-picolcd.o
obj-$(CONFIG_HID_PRIMAX)	+= hid-primax.o
obj-$(CONFIG_HID_ROCCAT)	+= hid-roccat.o
obj-$(CONFIG_HID_ROCCAT_COMMON)	+= hid-roccat-common.o
obj-$(CONFIG_HID_ROCCAT_ARVO)	+= hid-roccat-arvo.o
obj-$(CONFIG_HID_ROCCAT_ISKU)	+= hid-roccat-isku.o
obj-$(CONFIG_HID_ROCCAT_KONE)	+= hid-roccat-kone.o
obj-$(CONFIG_HID_ROCCAT_KONEPLUS)	+= hid-roccat-koneplus.o
obj-$(CONFIG_HID_ROCCAT_KOVAPLUS)	+= hid-roccat-kovaplus.o
obj-$(CONFIG_HID_ROCCAT_PYRA)	+= hid-roccat-pyra.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
obj-$(CONFIG_HID_SAITEK)	+= hid-saitek.o
obj-$(CONFIG_HID_SAMSUNG)	+= hid-samsung.o
obj-$(CONFIG_HID_SMARTJOYPLUS)	+= hid-sjoy.o
obj-$(CONFIG_HID_SONY)		+= hid-sony.o
@@ -79,6 +75,7 @@ obj-$(CONFIG_HID_SPEEDLINK) += hid-speedlink.o
obj-$(CONFIG_HID_SUNPLUS)	+= hid-sunplus.o
obj-$(CONFIG_HID_GREENASIA)	+= hid-gaff.o
obj-$(CONFIG_HID_THRUSTMASTER)	+= hid-tmff.o
obj-$(CONFIG_HID_TIVO)		+= hid-tivo.o
obj-$(CONFIG_HID_TOPSEED)	+= hid-topseed.o
obj-$(CONFIG_HID_TWINHAN)	+= hid-twinhan.o
obj-$(CONFIG_HID_UCLOGIC)	+= hid-uclogic.o
+7 −0
Original line number Diff line number Diff line
@@ -45,6 +45,12 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
	case 0xff09: ch_map_key_clear(BTN_9);	break;
	case 0xff0a: ch_map_key_clear(BTN_A);	break;
	case 0xff0b: ch_map_key_clear(BTN_B);	break;
	case 0x00f1: ch_map_key_clear(KEY_WLAN);	break;
	case 0x00f2: ch_map_key_clear(KEY_BRIGHTNESSDOWN);	break;
	case 0x00f3: ch_map_key_clear(KEY_BRIGHTNESSUP);	break;
	case 0x00f4: ch_map_key_clear(KEY_DISPLAY_OFF);	break;
	case 0x00f7: ch_map_key_clear(KEY_CAMERA);	break;
	case 0x00f8: ch_map_key_clear(KEY_PROG1);	break;
	default:
		return 0;
	}
@@ -53,6 +59,7 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,

static const struct hid_device_id ch_devices[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
	{ }
};
MODULE_DEVICE_TABLE(hid, ch_devices);
+32 −5
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
 *  Copyright (c) 1999 Andreas Gal
 *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
 *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
 *  Copyright (c) 2006-2010 Jiri Kosina
 *  Copyright (c) 2006-2012 Jiri Kosina
 */

/*
@@ -50,6 +50,10 @@ module_param_named(debug, hid_debug, int, 0600);
MODULE_PARM_DESC(debug, "toggle HID debugging messages");
EXPORT_SYMBOL_GPL(hid_debug);

static int hid_ignore_special_drivers = 0;
module_param_named(ignore_special_drivers, hid_ignore_special_drivers, int, 0600);
MODULE_PARM_DESC(debug, "Ignore any special drivers and handle all devices by generic driver");

/*
 * Register a new report for a device.
 */
@@ -1232,7 +1236,6 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
		hdev->claimed |= HID_CLAIMED_INPUT;
	if (hdev->quirks & HID_QUIRK_MULTITOUCH) {
		/* this device should be handled by hid-multitouch, skip it */
		hdev->quirks &= ~HID_QUIRK_MULTITOUCH;
		return -ENODEV;
	}

@@ -1396,6 +1399,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR) },
	{ 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_CHUNGHWAT, USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_CVTOUCH, USB_DEVICE_ID_CVTOUCH_SCREEN) },
@@ -1409,6 +1413,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_725E) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302) },
@@ -1417,6 +1423,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2515) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_FRUCTEL, USB_DEVICE_ID_GAMETEL_MT_MODE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, USB_DEVICE_ID_GENERAL_TOUCH_WIN7_TWOFINGERS) },
@@ -1435,6 +1442,9 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ 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_I405X) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X) },
	{ 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_LG, USB_DEVICE_ID_LG_MULTITOUCH) },
@@ -1462,8 +1472,10 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DFGT_WHEEL) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G27_WHEEL) },
#if IS_ENABLED(CONFIG_HID_LOGITECH_DJ)
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER_2) },
#endif
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WII_WHEEL) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_SPACETRAVELLER) },
@@ -1501,6 +1513,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
	{ 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_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT780) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT880) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
@@ -1516,6 +1530,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ 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_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) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
@@ -1535,6 +1550,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb653) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb65a) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_TIVO, USB_DEVICE_ID_TIVO_SLIDE_BT) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_TIVO, USB_DEVICE_ID_TIVO_SLIDE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED, USB_DEVICE_ID_TOPSEED_CYBERLINK) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED2, USB_DEVICE_ID_TOPSEED2_RF_COMBO) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_TOUCH_INTL, USB_DEVICE_ID_TOUCH_INTL_MULTI_TOUCH) },
@@ -1548,6 +1565,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_UNITEC, USB_DEVICE_ID_UNITEC_USB_TOUCH_0709) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_UNITEC, USB_DEVICE_ID_UNITEC_USB_TOUCH_0A19) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_SMARTJOY_PLUS) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_SUPER_JOY_BOX_3) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_JOY_BOX_3_PRO) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SUPER_DUAL_BOX_PRO) },
@@ -1556,6 +1574,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SLIM_TABLET_12_1_INCH) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_Q_PAD) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_PID_0038) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_XAT, USB_DEVICE_ID_XAT_CSR) },
@@ -1659,11 +1679,15 @@ static int hid_bus_match(struct device *dev, struct device_driver *drv)
	struct hid_driver *hdrv = container_of(drv, struct hid_driver, driver);
	struct hid_device *hdev = container_of(dev, struct hid_device, dev);

	if ((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
		!strncmp(hdrv->name, "hid-multitouch", 14))
		return 1;

	if (!hid_match_device(hdev, hdrv))
		return 0;

	/* generic wants all that don't have specialized driver */
	if (!strncmp(hdrv->name, "generic-", 8))
	if (!strncmp(hdrv->name, "generic-", 8) && !hid_ignore_special_drivers)
		return !hid_match_id(hdev, hid_have_special_driver);

	return 1;
@@ -1683,9 +1707,12 @@ static int hid_device_probe(struct device *dev)
	if (!hdev->driver) {
		id = hid_match_device(hdev, hdrv);
		if (id == NULL) {
			if (!((hdev->quirks & HID_QUIRK_MULTITOUCH) &&
				!strncmp(hdrv->name, "hid-multitouch", 14))) {
				ret = -ENODEV;
				goto unlock;
			}
		}

		hdev->driver = hdrv;
		if (hdrv->probe) {
+31 −1
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@

#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_AVERMEDIA		0x07ca
#define USB_DEVICE_ID_AVER_FM_MR800	0xb800
@@ -176,6 +177,7 @@
#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_FIGHTERSTICK	0x00f3
#define USB_DEVICE_ID_CH_COMBATSTICK	0x00f4
#define USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE       0x0051
#define USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE	0x00ff
@@ -193,6 +195,7 @@
#define USB_DEVICE_ID_CHICONY_TACTICAL_PAD	0x0418
#define USB_DEVICE_ID_CHICONY_MULTI_TOUCH	0xb19d
#define USB_DEVICE_ID_CHICONY_WIRELESS	0x0618
#define USB_DEVICE_ID_CHICONY_WIRELESS2	0x1123

#define USB_VENDOR_ID_CHUNGHWAT		0x2247
#define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH	0x0001
@@ -240,11 +243,18 @@
#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER	0x0001
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480D	0x480d
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_480E	0x480e
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7207	0x7207
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_720C	0x720c
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7224	0x7224
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_722A	0x722A
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_725E	0x725e
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7262	0x7262
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_726B	0x726b
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72AA	0x72aa
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72A1	0x72a1
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_72FA	0x72fa
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7302	0x7302
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7349	0x7349
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001	0xa001

#define USB_VENDOR_ID_ELECOM		0x056e
@@ -272,6 +282,9 @@
#define USB_VENDOR_ID_EZKEY		0x0518
#define USB_DEVICE_ID_BTC_8193		0x0002

#define USB_VENDOR_ID_FRUCTEL	0x25B6
#define USB_DEVICE_ID_GAMETEL_MT_MODE	0x0002

#define USB_VENDOR_ID_GAMERON		0x0810
#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR	0x0001
#define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR	0x0002
@@ -377,6 +390,7 @@

#define USB_VENDOR_ID_IDEACOM		0x1cb6
#define USB_DEVICE_ID_IDEACOM_IDC6650	0x6650
#define USB_DEVICE_ID_IDEACOM_IDC6651	0x6651

#define USB_VENDOR_ID_ILITEK		0x222a
#define USB_DEVICE_ID_ILITEK_MULTITOUCH	0x0001
@@ -408,6 +422,9 @@
#define USB_VENDOR_ID_KYE		0x0458
#define USB_DEVICE_ID_KYE_ERGO_525V	0x0087
#define USB_DEVICE_ID_KYE_GPEN_560	0x5003
#define USB_DEVICE_ID_KYE_EASYPEN_I405X	0x5010
#define USB_DEVICE_ID_KYE_MOUSEPEN_I608X	0x5011
#define USB_DEVICE_ID_KYE_EASYPEN_M610X	0x5013

#define USB_VENDOR_ID_LABTEC		0x1020
#define USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD	0x0006
@@ -568,6 +585,10 @@
#define USB_DEVICE_ID_ORTEK_PKB1700	0x1700
#define USB_DEVICE_ID_ORTEK_WKB2000	0x2000

#define USB_VENDOR_ID_PANASONIC		0x04da
#define USB_DEVICE_ID_PANABOARD_UBT780	0x1044
#define USB_DEVICE_ID_PANABOARD_UBT880	0x104d

#define USB_VENDOR_ID_PANJIT		0x134c

#define USB_VENDOR_ID_PANTHERLORD	0x0810
@@ -616,6 +637,7 @@

#define USB_VENDOR_ID_SAITEK		0x06a3
#define USB_DEVICE_ID_SAITEK_RUMBLEPAD	0xff17
#define USB_DEVICE_ID_SAITEK_PS1000	0x0621

#define USB_VENDOR_ID_SAMSUNG		0x0419
#define USB_DEVICE_ID_SAMSUNG_IR_REMOTE	0x0001
@@ -657,11 +679,16 @@

#define USB_VENDOR_ID_THRUSTMASTER	0x044f

#define USB_VENDOR_ID_TIVO		0x150a
#define USB_DEVICE_ID_TIVO_SLIDE_BT	0x1200
#define USB_DEVICE_ID_TIVO_SLIDE	0x1201

#define USB_VENDOR_ID_TOPSEED		0x0766
#define USB_DEVICE_ID_TOPSEED_CYBERLINK	0x0204

#define USB_VENDOR_ID_TOPSEED2		0x1784
#define USB_DEVICE_ID_TOPSEED2_RF_COMBO	0x0004
#define USB_DEVICE_ID_TOPSEED2_PERIPAD_701	0x0016

#define USB_VENDOR_ID_TOPMAX		0x0663
#define USB_DEVICE_ID_TOPMAX_COBRAPAD	0x0103
@@ -706,6 +733,8 @@
#define USB_VENDOR_ID_WALTOP				0x172f
#define USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH	0x0032
#define USB_DEVICE_ID_WALTOP_SLIM_TABLET_12_1_INCH	0x0034
#define USB_DEVICE_ID_WALTOP_Q_PAD			0x0037
#define USB_DEVICE_ID_WALTOP_PID_0038			0x0038
#define USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH	0x0501
#define USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH	0x0500

@@ -714,6 +743,7 @@
#define USB_DEVICE_ID_1_PHIDGETSERVO_20	0x8101
#define USB_DEVICE_ID_4_PHIDGETSERVO_20	0x8104
#define USB_DEVICE_ID_8_8_4_IF_KIT	0x8201
#define USB_DEVICE_ID_SUPER_JOY_BOX_3	0x8888
#define USB_DEVICE_ID_QUAD_USB_JOYPAD	0x8800
#define USB_DEVICE_ID_DUAL_USB_JOYPAD	0x8866

Loading