Index: HelenOS.config
===================================================================
--- HelenOS.config	(revision 03976d60a9800a9adc3d5c6144b8811b161816c3)
+++ HelenOS.config	(revision 449d4ecc8ed0c2a118f9433897e4bc57e096211c)
@@ -332,8 +332,15 @@
 ! [PLATFORM=ia32|PLATFORM=arm32|PLATFORM=amd64|PLATFORM=mips32|PLATFORM=sparc64] CONFIG_HID_IN (choice)
 
+% Input device class
+@ "generic" Keyboard or serial line
+@ "keyboard" Keyboard
+@ "serial" Serial line
+@ "none" No input device
+! [PLATFORM=ia64&MACHINE=i460GX] CONFIG_HID_IN (choice)
+
 % Output device class
 @ "generic" Monitor or serial line
 @ "none" No output device
-! [PLATFORM=ia32|PLATFORM=amd64|PLATFORM=sparc64|(PLATFORM=mips32&MACHINE=msim)] CONFIG_HID_OUT (choice)
+! [PLATFORM=ia32|PLATFORM=amd64|PLATFORM=sparc64|(PLATFORM=ia64&MACHINE=i460GX)|(PLATFORM=mips32&MACHINE=msim)] CONFIG_HID_OUT (choice)
 
 % Output device class
@@ -354,4 +361,7 @@
 ! [CONFIG_HID_IN=generic&(PLATFORM=ia32|PLATFORM=amd64)] CONFIG_PC_KBD (y/n)
 
+% PC keyboard support
+! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=keyboard)&PLATFORM=ia64&MACHINE=i460GX] CONFIG_PC_KBD (y/n)
+
 % Support for msim/GXemul keyboard
 ! [CONFIG_HID_IN=generic&PLATFORM=mips32] CONFIG_MIPS_KBD (y/n)
@@ -369,4 +379,7 @@
 ! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=keyboard)&PLATFORM=sparc64&MACHINE=generic] CONFIG_NS16550 (y/n)
 
+% Support for NS16550 controller
+! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=serial)&PLATFORM=ia64&MACHINE=i460GX] CONFIG_NS16550 (y/n)
+
 % Support for Z8530 controller
 ! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=keyboardl)&PLATFORM=sparc64&MACHINE=generic] CONFIG_Z8530 (y/n)
@@ -388,20 +401,11 @@
 
 % Serial line input module
-! [CONFIG_DSRLNIN=y] CONFIG_SRLN (y)
-
-#% i8042 controller support
-#! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=keyboard)&MACHINE=i460GX] CONFIG_I8042 (y/n)
-
-#% Support for NS16550 controller
-#! [(CONFIG_HID_IN=keyboard&PLATFORM=sparc64)|(CONFIG_HID_IN=serial&PLATFORM=ia64)] CONFIG_NS16550 (y/n)
-
-#% PC keyboard support
-#! [(CONFIG_HID_IN=generic|CONFIG_HID_IN=keyboard)&MACHINE=i460GX] CONFIG_PC_KBD (y/n)
+! [CONFIG_DSRLNIN=y|(PLATFORM=ia64&MACHINE=i460GX&CONFIG_NS16550=y)|(PLATFORM=ia64&MACHINE=ski)] CONFIG_SRLN (y)
 
 % EGA support
 ! [CONFIG_HID_OUT=generic&(PLATFORM=ia32|PLATFORM=amd64)] CONFIG_EGA (y/n)
 
-#% EGA support
-#! [(CONFIG_HID_OUT=generic|CONFIG_HID_OUT=monitor)&MACHINE=i460GX] CONFIG_EGA (y/n)
+% EGA support
+! [CONFIG_HID_OUT=generic&PLATFORM=ia64&MACHINE=i460GX] CONFIG_EGA (y/n)
 
 % Framebuffer support
Index: defaults/ia64/Makefile.config
===================================================================
--- defaults/ia64/Makefile.config	(revision 03976d60a9800a9adc3d5c6144b8811b161816c3)
+++ defaults/ia64/Makefile.config	(revision 449d4ecc8ed0c2a118f9433897e4bc57e096211c)
@@ -35,4 +35,10 @@
 CONFIG_TEST = y
 
+# Input device class
+CONFIG_HID_IN = generic
+
+# Output device class
+CONFIG_HID_OUT = generic
+
 # Keyboard layout
 KBD_LAYOUT = us_qwerty
Index: defaults/ia64/i460GX/Makefile.config
===================================================================
--- defaults/ia64/i460GX/Makefile.config	(revision 03976d60a9800a9adc3d5c6144b8811b161816c3)
+++ defaults/ia64/i460GX/Makefile.config	(revision 449d4ecc8ed0c2a118f9433897e4bc57e096211c)
@@ -2,7 +2,2 @@
 MACHINE = i460GX
 
-# Input device class
-CONFIG_HID_IN = keyboard
-
-# Output device class
-CONFIG_HID_OUT = monitor
Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 03976d60a9800a9adc3d5c6144b8811b161816c3)
+++ kernel/arch/ia64/src/ia64.c	(revision 449d4ecc8ed0c2a118f9433897e4bc57e096211c)
@@ -69,5 +69,5 @@
 
 /* NS16550 as a COM 1 */
-#define NS16550_IRQ	(4 + LEGACY_INTERRUPT_BASE)
+#define NS16550_IRQ  (4 + LEGACY_INTERRUPT_BASE)
 
 bootinfo_t *bootinfo;
@@ -158,19 +158,18 @@
 #endif
 	
-#ifdef I460GX
 #ifdef CONFIG_EGA
 	ega_init(EGA_BASE, EGA_VIDEORAM);
 #endif
 	
-	devno_t devno = device_assign_devno();
-	inr_t inr;
-	
 #ifdef CONFIG_NS16550
-	inr = NS16550_IRQ;
-	
-	indev_t *kbrdin = ns16550_init((ns16550_t *) NS16550_BASE, devno, inr, NULL, NULL);
-	if (kbrdin)
-		srln_init(kbrdin);
-	
+	devno_t devno_ns16550 = device_assign_devno();
+	indev_t *kbrdin_ns16550
+	    = ns16550_init((ns16550_t *) NS16550_BASE, devno_ns16550, NS16550_IRQ, NULL, NULL);
+	if (kbrdin_ns16550)
+		srln_init(kbrdin_ns16550);
+	
+	sysinfo_set_item_val("kbd", NULL, true);
+	sysinfo_set_item_val("kbd.devno", NULL, devno_ns16550);
+	sysinfo_set_item_val("kbd.inr", NULL, NS16550_IRQ);
 	sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550);
 	sysinfo_set_item_val("kbd.address.physical", NULL,
@@ -178,16 +177,15 @@
 	sysinfo_set_item_val("kbd.address.kernel", NULL,
 	    (uintptr_t) NS16550_BASE);
-#else
-	inr = IRQ_KBD;
-	/*
-	 * Initialize the i8042 controller. Then initialize the keyboard
-	 * module and connect it to i8042. Enable keyboard interrupts.
-	 */
-	indev_t *kbrdin = i8042_init((i8042_t *) I8042_BASE, devno, irq);
-	if (kbrdin) {
-		kbrd_init(kbrdin);
-		trap_virtual_enable_irqs(1 << inr);
-	}
-	
+#endif
+	
+#ifdef CONFIG_I8042
+	devno_t devno_i8042 = device_assign_devno();
+	indev_t *kbrdin_i8042 = i8042_init((i8042_t *) I8042_BASE, devno_i8042, IRQ_KBD);
+	if (kbrdin_i8042)
+		kbrd_init(kbrdin_i8042);
+	
+	sysinfo_set_item_val("kbd", NULL, true);
+	sysinfo_set_item_val("kbd.devno", NULL, devno_i8042);
+	sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD);
 	sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY);
 	sysinfo_set_item_val("kbd.address.physical", NULL,
@@ -195,8 +193,4 @@
 	sysinfo_set_item_val("kbd.address.kernel", NULL,
 	    (uintptr_t) I8042_BASE);
-#endif
-	sysinfo_set_item_val("kbd", NULL, true);
-	sysinfo_set_item_val("kbd.devno", NULL, devno);
-	sysinfo_set_item_val("kbd.inr", NULL, inr);
 #endif
 	
