diff options
Diffstat (limited to 'drivers/input/serio')
-rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 28 | ||||
-rw-r--r-- | drivers/input/serio/i8042.c | 6 |
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 | ||
551 | static 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; | |||
61 | module_param_named(noloop, i8042_noloop, bool, 0); | 61 | module_param_named(noloop, i8042_noloop, bool, 0); |
62 | MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port"); | 62 | MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port"); |
63 | 63 | ||
64 | static bool i8042_notimeout; | ||
65 | module_param_named(notimeout, i8042_notimeout, bool, 0); | ||
66 | MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042"); | ||
67 | |||
64 | #ifdef CONFIG_X86 | 68 | #ifdef CONFIG_X86 |
65 | static bool i8042_dritek; | 69 | static bool i8042_dritek; |
66 | module_param_named(dritek, i8042_dritek, bool, 0); | 70 | module_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; |