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:
commit
66893885bb
|
@ -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]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -82,7 +82,7 @@ struct uinput_ff_erase {
|
|||
* The complete sysfs path is then /sys/devices/virtual/input/--NAME--
|
||||
* 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
|
||||
|
@ -91,7 +91,7 @@ struct uinput_ff_erase {
|
|||
* the integer pointed to by the ioctl argument. The protocol version
|
||||
* 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
|
||||
|
|
Loading…
Reference in New Issue