I found that "kbd_controller_present" macro was introduced in 2.4.20 pc_keyb.c. How about this patch? kbd-no.c is not needed anymore. diff -ur linux-mips-cvs/arch/mips/kernel/setup.c linux.new/arch/mips/kernel/setup.c --- linux-mips-cvs/arch/mips/kernel/setup.c Fri Feb 14 09:41:21 2003 +++ linux.new/arch/mips/kernel/setup.c Mon Mar 10 12:04:34 2003 @@ -70,7 +70,6 @@ struct rtc_ops *rtc_ops; #ifdef CONFIG_PC_KEYB -extern struct kbd_ops no_kbd_ops; struct kbd_ops *kbd_ops; #endif @@ -505,10 +504,6 @@ ide_ops = &no_ide_ops; #endif -#ifdef CONFIG_PC_KEYB - kbd_ops = &no_kbd_ops; -#endif - rtc_ops = &no_rtc_ops; switch(mips_machgroup) diff -ur linux-mips-cvs/arch/mips/lib/Makefile linux.new/arch/mips/lib/Makefile --- linux-mips-cvs/arch/mips/lib/Makefile Fri Feb 14 09:41:21 2003 +++ linux.new/arch/mips/lib/Makefile Mon Mar 10 12:03:26 2003 @@ -19,6 +19,6 @@ obj-$(CONFIG_BLK_DEV_FD) += floppy-no.o floppy-std.o obj-$(subst m,y,$(CONFIG_IDE)) += ide-std.o ide-no.o # needed for ide module -obj-$(CONFIG_PC_KEYB) += kbd-std.o kbd-no.o +obj-$(CONFIG_PC_KEYB) += kbd-std.o include $(TOPDIR)/Rules.make diff -ur linux-mips-cvs/include/asm-mips/keyboard.h linux.new/include/asm-mips/keyboard.h --- linux-mips-cvs/include/asm-mips/keyboard.h Fri Jan 4 07:54:52 2002 +++ linux.new/include/asm-mips/keyboard.h Mon Mar 10 12:03:44 2003 @@ -62,6 +62,7 @@ }; extern struct kbd_ops *kbd_ops; +#define kbd_controller_present() (kbd_ops != 0) /* Do the actual calls via kbd_ops vector */ #define kbd_request_region() kbd_ops->kbd_request_region() --- There are another good side effects. With this patch, following error messages (and some delay in boot sequence) go away. > initialize_kbd: Keyboard failed self test > keyboard: Timeout - AT keyboard not present?(ed) > keyboard: Timeout - AT keyboard not present?(f4) Currently these messages are displayed when CONFIG_PC_KEYB is enabled and kbd_ops is no_kbd_ops. --- Atsushi Nemoto The old PGP key (ID B6D728B1) has been revoked. New key ID is 2874D52F.