aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/serio
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/serio')
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h28
-rw-r--r--drivers/input/serio/i8042.c6
2 files changed, 33 insertions, 1 deletions
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index ed7ad7416b24..a0730fdd31c4 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -333,6 +333,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
333 }, 333 },
334 }, 334 },
335 { 335 {
336 /* Sony Vaio VPCZ122GX */
337 .matches = {
338 DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
339 DMI_MATCH(DMI_PRODUCT_NAME, "VPCZ122GX"),
340 },
341 },
342 {
336 /* Sony Vaio FS-115b */ 343 /* Sony Vaio FS-115b */
337 .matches = { 344 .matches = {
338 DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), 345 DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
@@ -413,6 +420,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
413 DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), 420 DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
414 }, 421 },
415 }, 422 },
423 {
424 /* Dell Vostro V13 */
425 .matches = {
426 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
427 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
428 },
429 },
416 { } 430 { }
417}; 431};
418 432
@@ -534,6 +548,17 @@ static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
534}; 548};
535#endif 549#endif
536 550
551static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
552 {
553 /* Dell Vostro V13 */
554 .matches = {
555 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
556 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
557 },
558 },
559 { }
560};
561
537/* 562/*
538 * Some Wistron based laptops need us to explicitly enable the 'Dritek 563 * Some Wistron based laptops need us to explicitly enable the 'Dritek
539 * keyboard extension' to make their extra keys start generating scancodes. 564 * keyboard extension' to make their extra keys start generating scancodes.
@@ -886,6 +911,9 @@ static int __init i8042_platform_init(void)
886 if (dmi_check_system(i8042_dmi_nomux_table)) 911 if (dmi_check_system(i8042_dmi_nomux_table))
887 i8042_nomux = true; 912 i8042_nomux = true;
888 913
914 if (dmi_check_system(i8042_dmi_notimeout_table))
915 i8042_notimeout = true;
916
889 if (dmi_check_system(i8042_dmi_dritek_table)) 917 if (dmi_check_system(i8042_dmi_dritek_table))
890 i8042_dritek = true; 918 i8042_dritek = true;
891#endif /* CONFIG_X86 */ 919#endif /* CONFIG_X86 */
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index f58513160480..9e486502c03f 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -61,6 +61,10 @@ static bool i8042_noloop;
61module_param_named(noloop, i8042_noloop, bool, 0); 61module_param_named(noloop, i8042_noloop, bool, 0);
62MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port"); 62MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port");
63 63
64static bool i8042_notimeout;
65module_param_named(notimeout, i8042_notimeout, bool, 0);
66MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");
67
64#ifdef CONFIG_X86 68#ifdef CONFIG_X86
65static bool i8042_dritek; 69static bool i8042_dritek;
66module_param_named(dritek, i8042_dritek, bool, 0); 70module_param_named(dritek, i8042_dritek, bool, 0);
@@ -503,7 +507,7 @@ static irqreturn_t i8042_interrupt(int irq, void *dev_id)
503 } else { 507 } else {
504 508
505 dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) | 509 dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) |
506 ((str & I8042_STR_TIMEOUT) ? SERIO_TIMEOUT : 0); 510 ((str & I8042_STR_TIMEOUT && !i8042_notimeout) ? SERIO_TIMEOUT : 0);
507 511
508 port_no = (str & I8042_STR_AUXDATA) ? 512 port_no = (str & I8042_STR_AUXDATA) ?
509 I8042_AUX_PORT_NO : I8042_KBD_PORT_NO; 513 I8042_AUX_PORT_NO : I8042_KBD_PORT_NO;