diff options
-rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index 4fca1e7f2678..702a526cf45b 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
@@ -366,6 +366,7 @@ static void i8042_pnp_exit(void) | |||
366 | static int __init i8042_pnp_init(void) | 366 | static int __init i8042_pnp_init(void) |
367 | { | 367 | { |
368 | char kbd_irq_str[4] = { 0 }, aux_irq_str[4] = { 0 }; | 368 | char kbd_irq_str[4] = { 0 }, aux_irq_str[4] = { 0 }; |
369 | int pnp_data_busted = 0; | ||
369 | int err; | 370 | int err; |
370 | 371 | ||
371 | if (i8042_nopnp) { | 372 | if (i8042_nopnp) { |
@@ -413,27 +414,48 @@ static int __init i8042_pnp_init(void) | |||
413 | #endif | 414 | #endif |
414 | 415 | ||
415 | if (((i8042_pnp_data_reg & ~0xf) == (i8042_data_reg & ~0xf) && | 416 | if (((i8042_pnp_data_reg & ~0xf) == (i8042_data_reg & ~0xf) && |
416 | i8042_pnp_data_reg != i8042_data_reg) || !i8042_pnp_data_reg) { | 417 | i8042_pnp_data_reg != i8042_data_reg) || |
417 | printk(KERN_WARNING "PNP: PS/2 controller has invalid data port %#x; using default %#x\n", | 418 | !i8042_pnp_data_reg) { |
419 | printk(KERN_WARNING | ||
420 | "PNP: PS/2 controller has invalid data port %#x; " | ||
421 | "using default %#x\n", | ||
418 | i8042_pnp_data_reg, i8042_data_reg); | 422 | i8042_pnp_data_reg, i8042_data_reg); |
419 | i8042_pnp_data_reg = i8042_data_reg; | 423 | i8042_pnp_data_reg = i8042_data_reg; |
424 | pnp_data_busted = 1; | ||
420 | } | 425 | } |
421 | 426 | ||
422 | if (((i8042_pnp_command_reg & ~0xf) == (i8042_command_reg & ~0xf) && | 427 | if (((i8042_pnp_command_reg & ~0xf) == (i8042_command_reg & ~0xf) && |
423 | i8042_pnp_command_reg != i8042_command_reg) || !i8042_pnp_command_reg) { | 428 | i8042_pnp_command_reg != i8042_command_reg) || |
424 | printk(KERN_WARNING "PNP: PS/2 controller has invalid command port %#x; using default %#x\n", | 429 | !i8042_pnp_command_reg) { |
430 | printk(KERN_WARNING | ||
431 | "PNP: PS/2 controller has invalid command port %#x; " | ||
432 | "using default %#x\n", | ||
425 | i8042_pnp_command_reg, i8042_command_reg); | 433 | i8042_pnp_command_reg, i8042_command_reg); |
426 | i8042_pnp_command_reg = i8042_command_reg; | 434 | i8042_pnp_command_reg = i8042_command_reg; |
435 | pnp_data_busted = 1; | ||
427 | } | 436 | } |
428 | 437 | ||
429 | if (!i8042_nokbd && !i8042_pnp_kbd_irq) { | 438 | if (!i8042_nokbd && !i8042_pnp_kbd_irq) { |
430 | printk(KERN_WARNING "PNP: PS/2 controller doesn't have KBD irq; using default %d\n", i8042_kbd_irq); | 439 | printk(KERN_WARNING |
440 | "PNP: PS/2 controller doesn't have KBD irq; " | ||
441 | "using default %d\n", i8042_kbd_irq); | ||
431 | i8042_pnp_kbd_irq = i8042_kbd_irq; | 442 | i8042_pnp_kbd_irq = i8042_kbd_irq; |
443 | pnp_data_busted = 1; | ||
432 | } | 444 | } |
433 | 445 | ||
434 | if (!i8042_noaux && !i8042_pnp_aux_irq) { | 446 | if (!i8042_noaux && !i8042_pnp_aux_irq) { |
435 | printk(KERN_WARNING "PNP: PS/2 controller doesn't have AUX irq; using default %d\n", i8042_aux_irq); | 447 | if (!pnp_data_busted && i8042_pnp_kbd_irq) { |
436 | i8042_pnp_aux_irq = i8042_aux_irq; | 448 | printk(KERN_WARNING |
449 | "PNP: PS/2 appears to have AUX port disabled, " | ||
450 | "if this is incorrect please boot with " | ||
451 | "i8042.nopnp\n"); | ||
452 | i8042_noaux = 1; | ||
453 | } else { | ||
454 | printk(KERN_WARNING | ||
455 | "PNP: PS/2 controller doesn't have AUX irq; " | ||
456 | "using default %d\n", i8042_aux_irq); | ||
457 | i8042_pnp_aux_irq = i8042_aux_irq; | ||
458 | } | ||
437 | } | 459 | } |
438 | 460 | ||
439 | i8042_data_reg = i8042_pnp_data_reg; | 461 | i8042_data_reg = i8042_pnp_data_reg; |