Index: uspace/drv/char/i8042/i8042.c
===================================================================
--- uspace/drv/char/i8042/i8042.c	(revision 882bc4ba2157550e314d5120fd5f0cb3fad2d63e)
+++ uspace/drv/char/i8042/i8042.c	(revision ca4730a5f031f5c6b1d4293f8bf58697a8ef2dba)
@@ -63,36 +63,4 @@
 #define i8042_AUX_DISABLE    0x20
 #define i8042_KBD_TRANSLATE  0x40  /* Use this to switch to XT scancodes */
-
-#define CHECK_RET_DESTROY(ret, msg...) \
-	do { \
-		if (ret != EOK) { \
-			ddf_msg(LVL_ERROR, msg); \
-			if (dev->kbd_fun) { \
-				dev->kbd_fun->driver_data = NULL; \
-				ddf_fun_destroy(dev->kbd_fun); \
-			} \
-			if (dev->aux_fun) { \
-				dev->aux_fun->driver_data = NULL; \
-				ddf_fun_destroy(dev->aux_fun); \
-			} \
-		} \
-	} while (0)
-
-#define CHECK_RET_UNBIND_DESTROY(ret, msg...) \
-	do { \
-		if (ret != EOK) { \
-			ddf_msg(LVL_ERROR, msg); \
-			if (dev->kbd_fun) { \
-				ddf_fun_unbind(dev->kbd_fun); \
-				dev->kbd_fun->driver_data = NULL; \
-				ddf_fun_destroy(dev->kbd_fun); \
-			} \
-			if (dev->aux_fun) { \
-				ddf_fun_unbind(dev->aux_fun); \
-				dev->aux_fun->driver_data = NULL; \
-				ddf_fun_destroy(dev->aux_fun); \
-			} \
-		} \
-	} while (0)
 
 void default_handler(ddf_fun_t *, ipc_callid_t, ipc_call_t *);
Index: uspace/drv/char/i8042/main.c
===================================================================
--- uspace/drv/char/i8042/main.c	(revision 882bc4ba2157550e314d5120fd5f0cb3fad2d63e)
+++ uspace/drv/char/i8042/main.c	(revision ca4730a5f031f5c6b1d4293f8bf58697a8ef2dba)
@@ -45,12 +45,4 @@
 #include <async.h>
 #include "i8042.h"
-
-#define CHECK_RET_RETURN(ret, message...) \
-	do { \
-		if (ret != EOK) { \
-			ddf_msg(LVL_ERROR, message); \
-			return ret; \
-		} \
-	} while (0)
 
 /** Get address of I/O registers.
@@ -112,25 +104,35 @@
 static int i8042_dev_add(ddf_dev_t *device)
 {
-	if (!device)
-		return EINVAL;
-	
 	uintptr_t io_regs = 0;
 	size_t io_size = 0;
 	int kbd = 0;
 	int mouse = 0;
+	int rc;
 	
-	int ret = get_my_registers(device, &io_regs, &io_size, &kbd, &mouse);
-	CHECK_RET_RETURN(ret, "Failed to get registers: %s.",
-	    str_error(ret));
+	if (!device)
+		return EINVAL;
+	
+	rc = get_my_registers(device, &io_regs, &io_size, &kbd, &mouse);
+	if (rc != EOK) {
+		ddf_msg(LVL_ERROR, "Failed to get registers: %s.",
+		    str_error(rc));
+		return rc;
+	}
+	
 	ddf_msg(LVL_DEBUG, "I/O regs at %p (size %zuB), IRQ kbd %d, IRQ mouse %d.",
 	    (void *) io_regs, io_size, kbd, mouse);
 	
 	i8042_t *i8042 = ddf_dev_data_alloc(device, sizeof(i8042_t));
-	ret = (i8042 == NULL) ? ENOMEM : EOK;
-	CHECK_RET_RETURN(ret, "Failed to allocate i8042 driver instance.");
+	if (i8042 == NULL) {
+		ddf_msg(LVL_ERROR, "Out of memory.");
+		return ENOMEM;
+	}
 	
-	ret = i8042_init(i8042, (void *) io_regs, io_size, kbd, mouse, device);
-	CHECK_RET_RETURN(ret, "Failed to initialize i8042 driver: %s.",
-	    str_error(ret));
+	rc = i8042_init(i8042, (void *) io_regs, io_size, kbd, mouse, device);
+	if (rc != EOK) {
+		ddf_msg(LVL_ERROR, "Failed to initialize i8042 driver: %s.",
+		    str_error(rc));
+		return rc;
+	}
 	
 	ddf_msg(LVL_NOTE, "Controlling '%s' (%" PRIun ").",
