Index: uspace/drv/char/i8042/i8042.c
===================================================================
--- uspace/drv/char/i8042/i8042.c	(revision ec527526a4e0798cdc0203a96d7b8ca06b441364)
+++ uspace/drv/char/i8042/i8042.c	(revision 2507d1fc493328f2b57cdb67cdef06a1db482a5e)
@@ -75,4 +75,11 @@
 #define i8042_KBD_TRANSLATE	0x40 /* Use this to switch to XT scancodes */
 
+static const irq_pio_range_t i8042_ranges[] = {
+	{
+		.base = 0,
+		.size = sizeof(i8042_regs_t)
+	}
+};
+
 /** i8042 Interrupt pseudo-code. */
 static const irq_cmd_t i8042_cmds[] = {
@@ -228,11 +235,21 @@
 } else (void)0
 
+	const size_t range_count = sizeof(i8042_ranges) /
+	    sizeof(irq_pio_range_t);
 	const size_t cmd_count = sizeof(i8042_cmds) / sizeof(irq_cmd_t);
+	irq_pio_range_t ranges[range_count];
 	irq_cmd_t cmds[cmd_count];
+	memcpy(ranges, i8042_ranges, sizeof(i8042_ranges));
+	ranges[0].base = (uintptr_t) regs;
 	memcpy(cmds, i8042_cmds, sizeof(i8042_cmds));
 	cmds[0].addr = (void *) &dev->regs->status;
 	cmds[3].addr = (void *) &dev->regs->data;
 
-	irq_code_t irq_code = { .cmdcount = cmd_count, .cmds = cmds };
+	irq_code_t irq_code = {
+		.rangecount = range_count,
+		.ranges = ranges,
+		.cmdcount = cmd_count,
+		.cmds = cmds
+	};
 	ret = register_interrupt_handler(ddf_dev, irq_kbd, i8042_irq_handler,
 	    &irq_code);
