OSDN Git Service

pc_keyb: fix breakage on ia64/mips/mips64
authorWilly Tarreau <w@1wt.eu>
Sun, 7 Sep 2008 15:54:31 +0000 (17:54 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 22 Sep 2008 04:31:45 +0000 (06:31 +0200)
Commit f8db8c9c81afb4b04c146cae0e2a1fd311de1f22 fixed the keyboard
controller jammed issue on keyboard-less PCs, but introduced the
problem for other architectures (ia64/mips/mips64) which already
define their own keyboard probing method.

This patch gives precedence to these archs' probing method and only
defines the setup option if no arch-specific method was defined.

Signed-off-by: Willy Tarreau <w@1wt.eu>
drivers/char/pc_keyb.c

index d4e1611..b90e659 100644 (file)
@@ -61,6 +61,10 @@ unsigned char pckbd_sysrq_xlate[128] =
        "\r\000/";                                      /* 0x60 - 0x6f */
 #endif
 
+/* Warning: do not redefine kbd_controller_present on ia64, mips and mips64 */
+#ifndef kbd_controller_present
+#define kbd_controller_present() keyboard_controller_present
+
 int keyboard_controller_present __initdata = 1;
 static int __init removable_keyb(char *str)
 {
@@ -68,6 +72,7 @@ static int __init removable_keyb(char *str)
         return 0;
 }
 __setup("nokeyb", removable_keyb);
+#endif
 
 static void kbd_write_command_w(int data);
 static void kbd_write_output_w(int data);
@@ -77,8 +82,6 @@ static void __aux_write_ack(int val);
 static int aux_reconnect = 0;
 #endif
 
-#define kbd_controller_present() keyboard_controller_present
-
 static spinlock_t kbd_controller_lock = SPIN_LOCK_UNLOCKED;
 static unsigned char handle_kbd_event(void);
 
@@ -905,7 +908,7 @@ static char * __init initialize_kbd(void)
 
 void __init pckbd_init_hw(void)
 {
-       if (!keyboard_controller_present) {
+       if (!kbd_controller_present()) {
                kbd_exists = 0;
                return;
        }