Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision cce322885f9fa736b3285a8752bc143105ef9d9c)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -208,11 +208,4 @@
 {
 	assert(reg_size >= sizeof(uhci_regs_t));
-	int ret;
-
-#define CHECK_RET_RETURN(ret, message...) \
-	if (ret != EOK) { \
-		usb_log_error(message); \
-		return ret; \
-	} else (void) 0
 
 	instance->hw_interrupts = interrupts;
@@ -221,17 +214,22 @@
 	/* allow access to hc control registers */
 	uhci_regs_t *io;
-	ret = pio_enable(regs, reg_size, (void **)&io);
-	CHECK_RET_RETURN(ret, "Failed to gain access to registers at %p: %s.\n",
-	    io, str_error(ret));
+	int ret = pio_enable(regs, reg_size, (void **)&io);
+	if (ret != EOK) {
+		usb_log_error("Failed to gain access to registers at %p: %s.\n",
+	            io, str_error(ret));
+		return ret;
+	}
 	instance->registers = io;
+
 	usb_log_debug(
 	    "Device registers at %p (%zuB) accessible.\n", io, reg_size);
 
 	ret = hc_init_mem_structures(instance);
-	CHECK_RET_RETURN(ret,
-	    "Failed to initialize UHCI memory structures: %s.\n",
-	    str_error(ret));
-
-#undef CHECK_RET_RETURN
+	if (ret != EOK) {
+		usb_log_error("Failed to init UHCI memory structures: %s.\n",
+		    str_error(ret));
+		// TODO: we should disable pio here
+		return ret;
+	}
 
 	hc_init_hw(instance);
@@ -391,5 +389,4 @@
 
 	return EOK;
-#undef CHECK_RET_CLEAR_RETURN
 }
 
Index: uspace/drv/bus/usb/uhci/res.c
===================================================================
--- uspace/drv/bus/usb/uhci/res.c	(revision cce322885f9fa736b3285a8752bc143105ef9d9c)
+++ uspace/drv/bus/usb/uhci/res.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -64,5 +64,5 @@
 	hw_res_list_parsed_t hw_res;
 	hw_res_list_parsed_init(&hw_res);
-	const int ret =  hw_res_get_list_parsed(parent_sess, &hw_res, 0);
+	const int ret = hw_res_get_list_parsed(parent_sess, &hw_res, 0);
 	async_hangup(parent_sess);
 	if (ret != EOK) {
Index: uspace/drv/bus/usb/uhci/uhci.c
===================================================================
--- uspace/drv/bus/usb/uhci/uhci.c	(revision cce322885f9fa736b3285a8752bc143105ef9d9c)
+++ uspace/drv/bus/usb/uhci/uhci.c	(revision e0d8b7404a8f8e19b5c91d6e9d75d8cd07c00b37)
@@ -149,18 +149,18 @@
 	hcd_set_implementation(dev_to_hcd(device), hc, hc_schedule, NULL, NULL);
 
-// TODO: Undo hcd_setup_device
-#define CHECK_RET_FINI_RETURN(ret, message...) \
-if (ret != EOK) { \
-	hc_fini(hc); \
-	CHECK_RET_RETURN(ret, message); \
-	return ret; \
-} else (void)0
-
+	/*
+	 * Creating root hub registers a new USB device so all HC
+	 * functionality needs to be ready at this time.
+	 */
 	ret = hcd_ddf_setup_root_hub(device, USB_SPEED_FULL);
-	CHECK_RET_FINI_RETURN(ret,
-	    "Failed to setup UHCI root hub: %s.\n", str_error(ret));
+	if (ret != EOK) {
+		// TODO: Undo hcd_setup_device
+		hc_fini(hc);
+		CHECK_RET_RETURN(ret, "Failed to setup UHCI root hub: %s.\n",
+		    str_error(ret));
+		return ret;
+	}
 
 	return EOK;
-#undef CHECK_RET_FINI_RETURN
 }
 /**
