Index: uspace/srv/hid/input/port/ns16550.c
===================================================================
--- uspace/srv/hid/input/port/ns16550.c	(revision a996ae31af28626eb224d0fc0318932c1f196c19)
+++ uspace/srv/hid/input/port/ns16550.c	(revision a31aad1de032df3487df160244932e93f86d2cab)
@@ -70,4 +70,11 @@
 #define LSR_DATA_READY  0x01
 
+static irq_pio_range_t ns16550_ranges[] = {
+	{
+		.base = 0,
+		.size = 8
+	}
+};
+
 static irq_cmd_t ns16550_cmds[] = {
 	{
@@ -98,6 +105,6 @@
 
 irq_code_t ns16550_kbd = {
-	0,
-	NULL,
+	sizeof(ns16550_ranges) / sizeof(irq_pio_range_t),
+	ns16550_ranges,
 	sizeof(ns16550_cmds) / sizeof(irq_cmd_t),
 	ns16550_cmds
@@ -107,5 +114,4 @@
 
 static uintptr_t ns16550_physical;
-static uintptr_t ns16550_kernel;
 
 static kbd_dev_t *kbd_dev;
@@ -126,13 +132,11 @@
 		return -1;
 	
-	if (sysinfo_get_value("kbd.address.kernel", &ns16550_kernel) != EOK)
-		return -1;
-	
 	sysarg_t inr;
 	if (sysinfo_get_value("kbd.inr", &inr) != EOK)
 		return -1;
 	
-	ns16550_kbd.cmds[0].addr = (void *) (ns16550_kernel + LSR_REG);
-	ns16550_kbd.cmds[3].addr = (void *) (ns16550_kernel + RBR_REG);
+	ns16550_kbd.ranges[0].base = ns16550_physical;
+	ns16550_kbd.cmds[0].addr = (void *) (ns16550_physical + LSR_REG);
+	ns16550_kbd.cmds[3].addr = (void *) (ns16550_physical + RBR_REG);
 	
 	async_set_interrupt_received(ns16550_irq_handler);
