Index: uspace/drv/uhci-hcd/main.c
===================================================================
--- uspace/drv/uhci-hcd/main.c	(revision b4875e6750644cba99e15d45a80dd657280635cf)
+++ uspace/drv/uhci-hcd/main.c	(revision f20f9e2f7f3aa078996245ec8c975143e99bbd74)
@@ -91,4 +91,5 @@
 	int ret =
 	    pci_get_my_registers(device, &io_reg_base, &io_reg_size, &irq);
+	io_reg_size = sizeof(regs_t);
 
 	CHECK_RET_RETURN(ret,
Index: uspace/drv/uhci-rhd/port.c
===================================================================
--- uspace/drv/uhci-rhd/port.c	(revision b4875e6750644cba99e15d45a80dd657280635cf)
+++ uspace/drv/uhci-rhd/port.c	(revision f20f9e2f7f3aa078996245ec8c975143e99bbd74)
@@ -91,4 +91,7 @@
 	assert(port_instance);
 
+	/* disable port, to avoid device confusion */
+	uhci_port_set_enabled(port, false);
+
 	while (1) {
 		/* read register value */
@@ -109,9 +112,12 @@
 			}
 
+			/* remove any old device */
+			if (port_instance->attached_device) {
+				uhci_port_remove_device(port_instance);
+			}
+
 			if (port_status & STATUS_CONNECTED) {
 				/* new device */
 				uhci_port_new_device(port_instance);
-			} else {
-				uhci_port_remove_device(port_instance);
 			}
 
