diff options
| -rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
| -rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 281 | ||||
| -rw-r--r-- | drivers/input/serio/i8042.c | 2 |
3 files changed, 275 insertions, 10 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 6b1054387023..10d51c2f10d7 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -1237,7 +1237,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 1237 | i8042.noloop [HW] Disable the AUX Loopback command while probing | 1237 | i8042.noloop [HW] Disable the AUX Loopback command while probing |
| 1238 | for the AUX port | 1238 | for the AUX port |
| 1239 | i8042.nomux [HW] Don't check presence of an active multiplexing | 1239 | i8042.nomux [HW] Don't check presence of an active multiplexing |
| 1240 | controller. Default: true. | 1240 | controller |
| 1241 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX | 1241 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX |
| 1242 | controllers | 1242 | controllers |
| 1243 | i8042.notimeout [HW] Ignore timeout condition signalled by controller | 1243 | i8042.notimeout [HW] Ignore timeout condition signalled by controller |
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index aa9b299f4e26..faeeb1372462 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
| @@ -207,17 +207,282 @@ static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = { | |||
| 207 | }; | 207 | }; |
| 208 | 208 | ||
| 209 | /* | 209 | /* |
| 210 | * Some laptops do implement active multiplexing mode correctly; | 210 | * Some Fujitsu notebooks are having trouble with touchpads if |
| 211 | * unfortunately they are in minority. | 211 | * active multiplexing mode is activated. Luckily they don't have |
| 212 | * external PS/2 ports so we can safely disable it. | ||
| 213 | * ... apparently some Toshibas don't like MUX mode either and | ||
| 214 | * die horrible death on reboot. | ||
| 212 | */ | 215 | */ |
| 213 | static const struct dmi_system_id __initconst i8042_dmi_mux_table[] = { | 216 | static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { |
| 217 | { | ||
| 218 | /* Fujitsu Lifebook P7010/P7010D */ | ||
| 219 | .matches = { | ||
| 220 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), | ||
| 221 | DMI_MATCH(DMI_PRODUCT_NAME, "P7010"), | ||
| 222 | }, | ||
| 223 | }, | ||
| 224 | { | ||
| 225 | /* Fujitsu Lifebook P7010 */ | ||
| 226 | .matches = { | ||
| 227 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
| 228 | DMI_MATCH(DMI_PRODUCT_NAME, "0000000000"), | ||
| 229 | }, | ||
| 230 | }, | ||
| 231 | { | ||
| 232 | /* Fujitsu Lifebook P5020D */ | ||
| 233 | .matches = { | ||
| 234 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), | ||
| 235 | DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook P Series"), | ||
| 236 | }, | ||
| 237 | }, | ||
| 238 | { | ||
| 239 | /* Fujitsu Lifebook S2000 */ | ||
| 240 | .matches = { | ||
| 241 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), | ||
| 242 | DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S Series"), | ||
| 243 | }, | ||
| 244 | }, | ||
| 245 | { | ||
| 246 | /* Fujitsu Lifebook S6230 */ | ||
| 247 | .matches = { | ||
| 248 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), | ||
| 249 | DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"), | ||
| 250 | }, | ||
| 251 | }, | ||
| 252 | { | ||
| 253 | /* Fujitsu T70H */ | ||
| 254 | .matches = { | ||
| 255 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), | ||
| 256 | DMI_MATCH(DMI_PRODUCT_NAME, "FMVLT70H"), | ||
| 257 | }, | ||
| 258 | }, | ||
| 259 | { | ||
| 260 | /* Fujitsu-Siemens Lifebook T3010 */ | ||
| 261 | .matches = { | ||
| 262 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
| 263 | DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T3010"), | ||
| 264 | }, | ||
| 265 | }, | ||
| 266 | { | ||
| 267 | /* Fujitsu-Siemens Lifebook E4010 */ | ||
| 268 | .matches = { | ||
| 269 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
| 270 | DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E4010"), | ||
| 271 | }, | ||
| 272 | }, | ||
| 273 | { | ||
| 274 | /* Fujitsu-Siemens Amilo Pro 2010 */ | ||
| 275 | .matches = { | ||
| 276 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
| 277 | DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pro V2010"), | ||
| 278 | }, | ||
| 279 | }, | ||
| 280 | { | ||
| 281 | /* Fujitsu-Siemens Amilo Pro 2030 */ | ||
| 282 | .matches = { | ||
| 283 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
| 284 | DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"), | ||
| 285 | }, | ||
| 286 | }, | ||
| 287 | { | ||
| 288 | /* | ||
| 289 | * No data is coming from the touchscreen unless KBC | ||
| 290 | * is in legacy mode. | ||
| 291 | */ | ||
| 292 | /* Panasonic CF-29 */ | ||
| 293 | .matches = { | ||
| 294 | DMI_MATCH(DMI_SYS_VENDOR, "Matsushita"), | ||
| 295 | DMI_MATCH(DMI_PRODUCT_NAME, "CF-29"), | ||
| 296 | }, | ||
| 297 | }, | ||
| 298 | { | ||
| 299 | /* | ||
| 300 | * HP Pavilion DV4017EA - | ||
| 301 | * errors on MUX ports are reported without raising AUXDATA | ||
| 302 | * causing "spurious NAK" messages. | ||
| 303 | */ | ||
| 304 | .matches = { | ||
| 305 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
| 306 | DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EA032EA#ABF)"), | ||
| 307 | }, | ||
| 308 | }, | ||
| 309 | { | ||
| 310 | /* | ||
| 311 | * HP Pavilion ZT1000 - | ||
| 312 | * like DV4017EA does not raise AUXERR for errors on MUX ports. | ||
| 313 | */ | ||
| 314 | .matches = { | ||
| 315 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
| 316 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"), | ||
| 317 | DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook ZT1000"), | ||
| 318 | }, | ||
| 319 | }, | ||
| 214 | { | 320 | { |
| 215 | /* | 321 | /* |
| 216 | * Panasonic CF-18 needs to be in MUX mode since the | 322 | * HP Pavilion DV4270ca - |
| 217 | * touchscreen is on serio3 and it also has touchpad. | 323 | * like DV4017EA does not raise AUXERR for errors on MUX ports. |
| 218 | */ | 324 | */ |
| 219 | .matches = { | 325 | .matches = { |
| 220 | DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"), | 326 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), |
| 327 | DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EH476UA#ABL)"), | ||
| 328 | }, | ||
| 329 | }, | ||
| 330 | { | ||
| 331 | .matches = { | ||
| 332 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
| 333 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"), | ||
| 334 | }, | ||
| 335 | }, | ||
| 336 | { | ||
| 337 | .matches = { | ||
| 338 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
| 339 | DMI_MATCH(DMI_PRODUCT_NAME, "EQUIUM A110"), | ||
| 340 | }, | ||
| 341 | }, | ||
| 342 | { | ||
| 343 | .matches = { | ||
| 344 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
| 345 | DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C850D"), | ||
| 346 | }, | ||
| 347 | }, | ||
| 348 | { | ||
| 349 | .matches = { | ||
| 350 | DMI_MATCH(DMI_SYS_VENDOR, "ALIENWARE"), | ||
| 351 | DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"), | ||
| 352 | }, | ||
| 353 | }, | ||
| 354 | { | ||
| 355 | /* Sharp Actius MM20 */ | ||
| 356 | .matches = { | ||
| 357 | DMI_MATCH(DMI_SYS_VENDOR, "SHARP"), | ||
| 358 | DMI_MATCH(DMI_PRODUCT_NAME, "PC-MM20 Series"), | ||
| 359 | }, | ||
| 360 | }, | ||
| 361 | { | ||
| 362 | /* Sony Vaio FS-115b */ | ||
| 363 | .matches = { | ||
| 364 | DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
| 365 | DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FS115B"), | ||
| 366 | }, | ||
| 367 | }, | ||
| 368 | { | ||
| 369 | /* | ||
| 370 | * Sony Vaio FZ-240E - | ||
| 371 | * reset and GET ID commands issued via KBD port are | ||
| 372 | * sometimes being delivered to AUX3. | ||
| 373 | */ | ||
| 374 | .matches = { | ||
| 375 | DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
| 376 | DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ240E"), | ||
| 377 | }, | ||
| 378 | }, | ||
| 379 | { | ||
| 380 | /* | ||
| 381 | * Most (all?) VAIOs do not have external PS/2 ports nor | ||
| 382 | * they implement active multiplexing properly, and | ||
| 383 | * MUX discovery usually messes up keyboard/touchpad. | ||
| 384 | */ | ||
| 385 | .matches = { | ||
| 386 | DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | ||
| 387 | DMI_MATCH(DMI_BOARD_NAME, "VAIO"), | ||
| 388 | }, | ||
| 389 | }, | ||
| 390 | { | ||
| 391 | /* Amoi M636/A737 */ | ||
| 392 | .matches = { | ||
| 393 | DMI_MATCH(DMI_SYS_VENDOR, "Amoi Electronics CO.,LTD."), | ||
| 394 | DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"), | ||
| 395 | }, | ||
| 396 | }, | ||
| 397 | { | ||
| 398 | /* Lenovo 3000 n100 */ | ||
| 399 | .matches = { | ||
| 400 | DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), | ||
| 401 | DMI_MATCH(DMI_PRODUCT_NAME, "076804U"), | ||
| 402 | }, | ||
| 403 | }, | ||
| 404 | { | ||
| 405 | .matches = { | ||
| 406 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 407 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1360"), | ||
| 408 | }, | ||
| 409 | }, | ||
| 410 | { | ||
| 411 | /* Acer Aspire 5710 */ | ||
| 412 | .matches = { | ||
| 413 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 414 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"), | ||
| 415 | }, | ||
| 416 | }, | ||
| 417 | { | ||
| 418 | /* Gericom Bellagio */ | ||
| 419 | .matches = { | ||
| 420 | DMI_MATCH(DMI_SYS_VENDOR, "Gericom"), | ||
| 421 | DMI_MATCH(DMI_PRODUCT_NAME, "N34AS6"), | ||
| 422 | }, | ||
| 423 | }, | ||
| 424 | { | ||
| 425 | /* IBM 2656 */ | ||
| 426 | .matches = { | ||
| 427 | DMI_MATCH(DMI_SYS_VENDOR, "IBM"), | ||
| 428 | DMI_MATCH(DMI_PRODUCT_NAME, "2656"), | ||
| 429 | }, | ||
| 430 | }, | ||
| 431 | { | ||
| 432 | /* Dell XPS M1530 */ | ||
| 433 | .matches = { | ||
| 434 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
| 435 | DMI_MATCH(DMI_PRODUCT_NAME, "XPS M1530"), | ||
| 436 | }, | ||
| 437 | }, | ||
| 438 | { | ||
| 439 | /* Compal HEL80I */ | ||
| 440 | .matches = { | ||
| 441 | DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"), | ||
| 442 | DMI_MATCH(DMI_PRODUCT_NAME, "HEL80I"), | ||
| 443 | }, | ||
| 444 | }, | ||
| 445 | { | ||
| 446 | /* Dell Vostro 1510 */ | ||
| 447 | .matches = { | ||
| 448 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
| 449 | DMI_MATCH(DMI_PRODUCT_NAME, "Vostro1510"), | ||
| 450 | }, | ||
| 451 | }, | ||
| 452 | { | ||
| 453 | /* Acer Aspire 5536 */ | ||
| 454 | .matches = { | ||
| 455 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 456 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5536"), | ||
| 457 | DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), | ||
| 458 | }, | ||
| 459 | }, | ||
| 460 | { | ||
| 461 | /* Dell Vostro V13 */ | ||
| 462 | .matches = { | ||
| 463 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
| 464 | DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"), | ||
| 465 | }, | ||
| 466 | }, | ||
| 467 | { | ||
| 468 | /* Newer HP Pavilion dv4 models */ | ||
| 469 | .matches = { | ||
| 470 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
| 471 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"), | ||
| 472 | }, | ||
| 473 | }, | ||
| 474 | { | ||
| 475 | /* Asus X450LCP */ | ||
| 476 | .matches = { | ||
| 477 | DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), | ||
| 478 | DMI_MATCH(DMI_PRODUCT_NAME, "X450LCP"), | ||
| 479 | }, | ||
| 480 | }, | ||
| 481 | { | ||
| 482 | /* Avatar AVIU-145A6 */ | ||
| 483 | .matches = { | ||
| 484 | DMI_MATCH(DMI_SYS_VENDOR, "Intel"), | ||
| 485 | DMI_MATCH(DMI_PRODUCT_NAME, "IC4I"), | ||
| 221 | }, | 486 | }, |
| 222 | }, | 487 | }, |
| 223 | { } | 488 | { } |
| @@ -756,8 +1021,8 @@ static int __init i8042_platform_init(void) | |||
| 756 | if (dmi_check_system(i8042_dmi_noloop_table)) | 1021 | if (dmi_check_system(i8042_dmi_noloop_table)) |
| 757 | i8042_noloop = true; | 1022 | i8042_noloop = true; |
| 758 | 1023 | ||
| 759 | if (dmi_check_system(i8042_dmi_mux_table)) | 1024 | if (dmi_check_system(i8042_dmi_nomux_table)) |
| 760 | i8042_nomux = false; | 1025 | i8042_nomux = true; |
| 761 | 1026 | ||
| 762 | if (dmi_check_system(i8042_dmi_notimeout_table)) | 1027 | if (dmi_check_system(i8042_dmi_notimeout_table)) |
| 763 | i8042_notimeout = true; | 1028 | i8042_notimeout = true; |
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 9a97c2b10926..f5a98af3b325 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c | |||
| @@ -39,7 +39,7 @@ static bool i8042_noaux; | |||
| 39 | module_param_named(noaux, i8042_noaux, bool, 0); | 39 | module_param_named(noaux, i8042_noaux, bool, 0); |
| 40 | MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port."); | 40 | MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port."); |
| 41 | 41 | ||
| 42 | static bool i8042_nomux = true; | 42 | static bool i8042_nomux; |
| 43 | module_param_named(nomux, i8042_nomux, bool, 0); | 43 | module_param_named(nomux, i8042_nomux, bool, 0); |
| 44 | MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing controller is present."); | 44 | MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing controller is present."); |
| 45 | 45 | ||
