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

Commit ba33fef0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull HID fixes from Jiri Kosina:
 - fix compat ioctl leak in uhid, by David Herrmann
 - fix scheduling in atomic context (causing actual lockups in real
   world) in hid-sony driver, by Sven Eckelmann
 - revert patch introducing VID/PID conflict, by Jiri Kosina
 - support from various new device IDs by Benjamin Tissoires and
   KaiChung Cheng

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
  HID: uhid: fix leak for 64/32 UHID_CREATE
  HID: kye: fix unresponsive keyboard
  HID: kye: Add report fixup for Genius Manticore Keyboard
  HID: multicouh: add PID VID to support 1 new Wistron optical touch device
  HID: appleir: force input to be set
  Revert "HID: wiimote: add LEGO-wiimote VID"
  HID: sony: Send FF commands in non-atomic context
parents b7fe6bf7 80897aa7
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -460,6 +460,7 @@ config HID_MULTITOUCH
	  - Stantum multitouch panels
	  - Stantum multitouch panels
	  - Touch International Panels
	  - Touch International Panels
	  - Unitec Panels
	  - Unitec Panels
	  - Wistron optical touch panels
	  - XAT optical touch panels
	  - XAT optical touch panels
	  - Xiroku optical touch panels
	  - Xiroku optical touch panels
	  - Zytronic touch panels
	  - Zytronic touch panels
+3 −0
Original line number Original line Diff line number Diff line
@@ -297,6 +297,9 @@ static int appleir_probe(struct hid_device *hid, const struct hid_device_id *id)


	appleir->hid = hid;
	appleir->hid = hid;


	/* force input as some remotes bypass the input registration */
	hid->quirks |= HID_QUIRK_HIDINPUT_FORCE;

	spin_lock_init(&appleir->lock);
	spin_lock_init(&appleir->lock);
	setup_timer(&appleir->key_up_timer,
	setup_timer(&appleir->key_up_timer,
		    key_up_tick, (unsigned long) appleir);
		    key_up_tick, (unsigned long) appleir);
+1 −1
Original line number Original line Diff line number Diff line
@@ -1723,6 +1723,7 @@ 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_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KEYTOUCH, USB_DEVICE_ID_KEYTOUCH_IEC) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_MANTICORE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GX_IMPERATOR) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_GENIUS_GX_IMPERATOR) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) },
	{ 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_EASYPEN_I405X) },
@@ -1879,7 +1880,6 @@ static const struct hid_device_id hid_have_special_driver[] = {


	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO2, USB_DEVICE_ID_NINTENDO_WIIMOTE) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE2) },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE2) },
	{ }
	{ }
};
};
+4 −1
Original line number Original line Diff line number Diff line
@@ -489,6 +489,7 @@
#define USB_VENDOR_ID_KYE		0x0458
#define USB_VENDOR_ID_KYE		0x0458
#define USB_DEVICE_ID_KYE_ERGO_525V	0x0087
#define USB_DEVICE_ID_KYE_ERGO_525V	0x0087
#define USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE	0x0138
#define USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE	0x0138
#define USB_DEVICE_ID_GENIUS_MANTICORE	0x0153
#define USB_DEVICE_ID_GENIUS_GX_IMPERATOR	0x4018
#define USB_DEVICE_ID_GENIUS_GX_IMPERATOR	0x4018
#define USB_DEVICE_ID_KYE_GPEN_560	0x5003
#define USB_DEVICE_ID_KYE_GPEN_560	0x5003
#define USB_DEVICE_ID_KYE_EASYPEN_I405X	0x5010
#define USB_DEVICE_ID_KYE_EASYPEN_I405X	0x5010
@@ -640,7 +641,6 @@
#define USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN	0x0003
#define USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN	0x0003


#define USB_VENDOR_ID_NINTENDO		0x057e
#define USB_VENDOR_ID_NINTENDO		0x057e
#define USB_VENDOR_ID_NINTENDO2		0x054c
#define USB_DEVICE_ID_NINTENDO_WIIMOTE	0x0306
#define USB_DEVICE_ID_NINTENDO_WIIMOTE	0x0306
#define USB_DEVICE_ID_NINTENDO_WIIMOTE2	0x0330
#define USB_DEVICE_ID_NINTENDO_WIIMOTE2	0x0330


@@ -902,6 +902,9 @@
#define USB_DEVICE_ID_SUPER_DUAL_BOX_PRO 0x8802
#define USB_DEVICE_ID_SUPER_DUAL_BOX_PRO 0x8802
#define USB_DEVICE_ID_SUPER_JOY_BOX_5_PRO 0x8804
#define USB_DEVICE_ID_SUPER_JOY_BOX_5_PRO 0x8804


#define USB_VENDOR_ID_WISTRON		0x0fb8
#define USB_DEVICE_ID_WISTRON_OPTICAL_TOUCH		0x1109

#define USB_VENDOR_ID_X_TENSIONS               0x1ae7
#define USB_VENDOR_ID_X_TENSIONS               0x1ae7
#define USB_DEVICE_ID_SPEEDLINK_VAD_CEZANNE    0x9001
#define USB_DEVICE_ID_SPEEDLINK_VAD_CEZANNE    0x9001


+13 −0
Original line number Original line Diff line number Diff line
@@ -341,6 +341,9 @@ static __u8 *kye_report_fixup(struct hid_device *hdev, __u8 *rdesc,
	case USB_DEVICE_ID_GENIUS_GX_IMPERATOR:
	case USB_DEVICE_ID_GENIUS_GX_IMPERATOR:
		rdesc = kye_consumer_control_fixup(hdev, rdesc, rsize, 83,
		rdesc = kye_consumer_control_fixup(hdev, rdesc, rsize, 83,
					"Genius Gx Imperator Keyboard");
					"Genius Gx Imperator Keyboard");
	case USB_DEVICE_ID_GENIUS_MANTICORE:
		rdesc = kye_consumer_control_fixup(hdev, rdesc, rsize, 104,
					"Genius Manticore Keyboard");
		break;
		break;
	}
	}
	return rdesc;
	return rdesc;
@@ -418,6 +421,14 @@ static int kye_probe(struct hid_device *hdev, const struct hid_device_id *id)
			goto enabling_err;
			goto enabling_err;
		}
		}
		break;
		break;
	case USB_DEVICE_ID_GENIUS_MANTICORE:
		/*
		 * The manticore keyboard needs to have all the interfaces
		 * opened at least once to be fully functional.
		 */
		if (hid_hw_open(hdev))
			hid_hw_close(hdev);
		break;
	}
	}


	return 0;
	return 0;
@@ -439,6 +450,8 @@ static const struct hid_device_id kye_devices[] = {
				USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
				USB_DEVICE_ID_GENIUS_GILA_GAMING_MOUSE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE,
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE,
				USB_DEVICE_ID_GENIUS_GX_IMPERATOR) },
				USB_DEVICE_ID_GENIUS_GX_IMPERATOR) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE,
				USB_DEVICE_ID_GENIUS_MANTICORE) },
	{ }
	{ }
};
};
MODULE_DEVICE_TABLE(hid, kye_devices);
MODULE_DEVICE_TABLE(hid, kye_devices);
Loading