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; |
