Index: uspace/drv/uhci-rhd/port.c
===================================================================
--- uspace/drv/uhci-rhd/port.c	(revision f20f9e2f7f3aa078996245ec8c975143e99bbd74)
+++ uspace/drv/uhci-rhd/port.c	(revision 4d37c4266355d60fb62052b334c70e8470a39d6e)
@@ -34,4 +34,5 @@
 #include <errno.h>
 #include <str_error.h>
+#include <fibril_synch.h>
 
 #include <usb/usb.h>    /* usb_address_t */
@@ -100,7 +101,10 @@
 
 		/* debug print */
+		static fibril_mutex_t dbg_mtx = FIBRIL_MUTEX_INITIALIZER(dbg_mtx);
+		fibril_mutex_lock(&dbg_mtx);
 		usb_log_debug("Port %d status at %p: 0x%04x.\n",
 		  port_instance->number, port_instance->address, port_status);
 		print_port_status(port_status);
+		fibril_mutex_unlock(&dbg_mtx);
 
 		if (port_status & STATUS_CONNECTED_CHANGED) {
@@ -120,4 +124,6 @@
 				/* new device */
 				uhci_port_new_device(port_instance);
+			} else {
+				port_status_write(port_instance->address, STATUS_CONNECTED_CHANGED);
 			}
 
Index: uspace/drv/uhci-rhd/port_status.c
===================================================================
--- uspace/drv/uhci-rhd/port_status.c	(revision f20f9e2f7f3aa078996245ec8c975143e99bbd74)
+++ uspace/drv/uhci-rhd/port_status.c	(revision 4d37c4266355d60fb62052b334c70e8470a39d6e)
@@ -41,5 +41,5 @@
 struct flag_name
 {
-	unsigned flag;
+	uint16_t flag;
 	const char *name;
 };
@@ -65,5 +65,5 @@
 	for (;i < sizeof(flags)/sizeof(struct flag_name); ++i) {
 		usb_log_debug2("\t%s status: %s.\n", flags[i].name,
-		  value & flags[i].flag ? "YES" : "NO");
+		  ((value & flags[i].flag) != 0) ? "YES" : "NO");
 	}
 }
Index: uspace/drv/uhci-rhd/port_status.h
===================================================================
--- uspace/drv/uhci-rhd/port_status.h	(revision f20f9e2f7f3aa078996245ec8c975143e99bbd74)
+++ uspace/drv/uhci-rhd/port_status.h	(revision 4d37c4266355d60fb62052b334c70e8470a39d6e)
@@ -41,18 +41,16 @@
 typedef uint16_t port_status_t;
 
-enum {
-	STATUS_CONNECTED         = 1 << 0,
-	STATUS_CONNECTED_CHANGED = 1 << 1,
-	STATUS_ENABLED           = 1 << 2,
-	STATUS_ENABLED_CHANGED   = 1 << 3,
-	STATUS_LINE_D_PLUS       = 1 << 4,
-	STATUS_LINE_D_MINUS      = 1 << 5,
-	STATUS_RESUME            = 1 << 6,
-	STATUS_ALWAYS_ONE        = 1 << 7,
+#define STATUS_CONNECTED         (1 << 0)
+#define STATUS_CONNECTED_CHANGED (1 << 1)
+#define STATUS_ENABLED           (1 << 2)
+#define STATUS_ENABLED_CHANGED   (1 << 3)
+#define STATUS_LINE_D_PLUS       (1 << 4)
+#define STATUS_LINE_D_MINUS      (1 << 5)
+#define STATUS_RESUME            (1 << 6)
+#define STATUS_ALWAYS_ONE        (1 << 7)
 
-	STATUS_LOW_SPEED = 1 <<  8,
-	STATUS_IN_RESET  = 1 <<  9,
-	STATUS_SUSPEND   = 1 << 12,
-};
+#define STATUS_LOW_SPEED (1 <<  8)
+#define STATUS_IN_RESET  (1 <<  9)
+#define STATUS_SUSPEND   (1 << 12)
 
 static inline port_status_t port_status_read(port_status_t * address)
