Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

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
This commit is contained in:
Linus Torvalds 2015-01-19 04:55:23 +12:00
commit 66893885bb
6 changed files with 58 additions and 3 deletions

View File

@ -1277,6 +1277,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
i8042.notimeout [HW] Ignore timeout condition signalled by controller i8042.notimeout [HW] Ignore timeout condition signalled by controller
i8042.reset [HW] Reset the controller during init and cleanup i8042.reset [HW] Reset the controller during init and cleanup
i8042.unlock [HW] Unlock (ignore) the keylock i8042.unlock [HW] Unlock (ignore) the keylock
i8042.kbdreset [HW] Reset device connected to KBD port
i810= [HW,DRM] i810= [HW,DRM]

View File

@ -4930,7 +4930,6 @@ F: include/uapi/linux/inotify.h
INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
M: Dmitry Torokhov <dmitry.torokhov@gmail.com> M: Dmitry Torokhov <dmitry.torokhov@gmail.com>
M: Dmitry Torokhov <dtor@mail.ru>
L: linux-input@vger.kernel.org L: linux-input@vger.kernel.org
Q: http://patchwork.kernel.org/project/linux-input/list/ Q: http://patchwork.kernel.org/project/linux-input/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git

View File

@ -1520,6 +1520,8 @@ static int elantech_set_properties(struct elantech_data *etd)
case 7: case 7:
case 8: case 8:
case 9: case 9:
case 10:
case 13:
etd->hw_version = 4; etd->hw_version = 4;
break; break;
default: default:

View File

@ -414,6 +414,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"), 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 */ /* Gericom Bellagio */
.matches = { .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 */ #endif /* CONFIG_X86 */
#ifdef CONFIG_PNP #ifdef CONFIG_PNP
@ -1040,6 +1076,9 @@ static int __init i8042_platform_init(void)
if (dmi_check_system(i8042_dmi_dritek_table)) if (dmi_check_system(i8042_dmi_dritek_table))
i8042_dritek = true; 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 * A20 was already enabled during early kernel init. But some buggy
* BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to

View File

@ -67,6 +67,10 @@ static bool i8042_notimeout;
module_param_named(notimeout, i8042_notimeout, bool, 0); module_param_named(notimeout, i8042_notimeout, bool, 0);
MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042"); 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 #ifdef CONFIG_X86
static bool i8042_dritek; static bool i8042_dritek;
module_param_named(dritek, i8042_dritek, bool, 0); module_param_named(dritek, i8042_dritek, bool, 0);
@ -789,6 +793,16 @@ static int __init i8042_check_aux(void)
if (i8042_toggle_aux(true)) if (i8042_toggle_aux(true))
return -1; 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 * Test AUX IRQ delivery to make sure BIOS did not grab the IRQ and
* used it for a PCI card or somethig else. * used it for a PCI card or somethig else.

View File

@ -82,7 +82,7 @@ struct uinput_ff_erase {
* The complete sysfs path is then /sys/devices/virtual/input/--NAME-- * The complete sysfs path is then /sys/devices/virtual/input/--NAME--
* Usually, it is in the form "inputN" * Usually, it is in the form "inputN"
*/ */
#define UI_GET_SYSNAME(len) _IOC(_IOC_READ, UINPUT_IOCTL_BASE, 300, len) #define UI_GET_SYSNAME(len) _IOC(_IOC_READ, UINPUT_IOCTL_BASE, 44, len)
/** /**
* UI_GET_VERSION - Return version of uinput protocol * UI_GET_VERSION - Return version of uinput protocol
@ -91,7 +91,7 @@ struct uinput_ff_erase {
* the integer pointed to by the ioctl argument. The protocol version * the integer pointed to by the ioctl argument. The protocol version
* is hard-coded in the kernel and is independent of the uinput device. * is hard-coded in the kernel and is independent of the uinput device.
*/ */
#define UI_GET_VERSION _IOR(UINPUT_IOCTL_BASE, 301, unsigned int) #define UI_GET_VERSION _IOR(UINPUT_IOCTL_BASE, 45, unsigned int)
/* /*
* To write a force-feedback-capable driver, the upload_effect * To write a force-feedback-capable driver, the upload_effect