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

Commit 66893885 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull input subsystem fixes from Dmitry Torokhov.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: uinput - fix ioctl nr overflow for UI_GET_SYSNAME/VERSION
  Input: I8042 - add Acer Aspire 7738 to the nomux list
  Input: elantech - support new ICs types for version 4
  Input: i8042 - reset keyboard to fix Elantech touchpad detection
  MAINTAINERS: remove Dmitry Torokhov's alternate address
parents ec6f34e5 029b1836
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1277,6 +1277,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
	i8042.notimeout	[HW] Ignore timeout condition signalled by controller
	i8042.reset	[HW] Reset the controller during init and cleanup
	i8042.unlock	[HW] Unlock (ignore) the keylock
	i8042.kbdreset  [HW] Reset device connected to KBD port

	i810=		[HW,DRM]

+0 −1
Original line number Diff line number Diff line
@@ -4930,7 +4930,6 @@ F: include/uapi/linux/inotify.h

INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
M:	Dmitry Torokhov <dmitry.torokhov@gmail.com>
M:	Dmitry Torokhov <dtor@mail.ru>
L:	linux-input@vger.kernel.org
Q:	http://patchwork.kernel.org/project/linux-input/list/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
+2 −0
Original line number Diff line number Diff line
@@ -1520,6 +1520,8 @@ static int elantech_set_properties(struct elantech_data *etd)
		case 7:
		case 8:
		case 9:
		case 10:
		case 13:
			etd->hw_version = 4;
			break;
		default:
+39 −0
Original line number Diff line number Diff line
@@ -414,6 +414,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"),
		},
	},
	{
		/* Acer Aspire 7738 */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7738"),
		},
	},
	{
		/* Gericom Bellagio */
		.matches = {
@@ -745,6 +752,35 @@ static const struct dmi_system_id __initconst i8042_dmi_dritek_table[] = {
	{ }
};

/*
 * Some laptops need keyboard reset before probing for the trackpad to get
 * it detected, initialised & finally work.
 */
static const struct dmi_system_id __initconst i8042_dmi_kbdreset_table[] = {
	{
		/* Gigabyte P35 v2 - Elantech touchpad */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
			DMI_MATCH(DMI_PRODUCT_NAME, "P35V2"),
		},
	},
		{
		/* Aorus branded Gigabyte X3 Plus - Elantech touchpad */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
			DMI_MATCH(DMI_PRODUCT_NAME, "X3"),
		},
	},
	{
		/* Gigabyte P34 - Elantech touchpad */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
			DMI_MATCH(DMI_PRODUCT_NAME, "P34"),
		},
	},
	{ }
};

#endif /* CONFIG_X86 */

#ifdef CONFIG_PNP
@@ -1040,6 +1076,9 @@ static int __init i8042_platform_init(void)
	if (dmi_check_system(i8042_dmi_dritek_table))
		i8042_dritek = true;

	if (dmi_check_system(i8042_dmi_kbdreset_table))
		i8042_kbdreset = true;

	/*
	 * A20 was already enabled during early kernel init. But some buggy
	 * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to
+14 −0
Original line number Diff line number Diff line
@@ -67,6 +67,10 @@ static bool i8042_notimeout;
module_param_named(notimeout, i8042_notimeout, bool, 0);
MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");

static bool i8042_kbdreset;
module_param_named(kbdreset, i8042_kbdreset, bool, 0);
MODULE_PARM_DESC(kbdreset, "Reset device connected to KBD port");

#ifdef CONFIG_X86
static bool i8042_dritek;
module_param_named(dritek, i8042_dritek, bool, 0);
@@ -789,6 +793,16 @@ static int __init i8042_check_aux(void)
	if (i8042_toggle_aux(true))
		return -1;

/*
 * Reset keyboard (needed on some laptops to successfully detect
 * touchpad, e.g., some Gigabyte laptop models with Elantech
 * touchpads).
 */
	if (i8042_kbdreset) {
		pr_warn("Attempting to reset device connected to KBD port\n");
		i8042_kbd_write(NULL, (unsigned char) 0xff);
	}

/*
 * Test AUX IRQ delivery to make sure BIOS did not grab the IRQ and
 * used it for a PCI card or somethig else.
Loading