Index: uspace/drv/ohci/root_hub.c
===================================================================
--- uspace/drv/ohci/root_hub.c	(revision ccbcd895e1a6389190a7f195e2e8763c14de33df)
+++ uspace/drv/ohci/root_hub.c	(revision 6c399765066bb4c35f189205cab7bbd61db00d88)
@@ -244,5 +244,5 @@
 {
 	assert(instance);
-	instance->address = -1;
+	//instance->address = -1;
 	instance->registers = regs;
 	instance->device = dev;
@@ -278,4 +278,12 @@
 	request->transfered_size = 4;
 	uint32_buffer[0] = instance->registers->rh_port_status[port -1];
+#if 0
+	int i;
+	for(i=0;i<instance->port_count;++i){
+		usb_log_debug("port status %d,x%x\n",
+				instance->registers->rh_port_status[i],
+				instance->registers->rh_port_status[i]);
+	}
+#endif
 	return EOK;
 }
@@ -298,5 +306,4 @@
 	uint32_buffer[0] = mask & instance->registers->rh_status;
 	return EOK;
-
 }
 
@@ -339,5 +346,6 @@
  * Result contains bitmap where bit 0 indicates change on hub and
  * bit i indicates change on i`th port (i>0). For more info see
- * Hub and Port status bitmap specification in USB specification.
+ * Hub and Port status bitmap specification in USB specification
+ * (chapter 11.13.4)
  * @param instance root hub instance
  * @param@out buffer pointer to created interrupt mas
@@ -347,8 +355,10 @@
 		size_t * buffer_size){
 	int bit_count = instance->port_count + 1;
-	(*buffer_size) = (bit_count / 8) + (bit_count%8==0)?0:1;
+	(*buffer_size) = (bit_count / 8) + ((bit_count%8==0)?0:1);
+	
 	(*buffer) = malloc(*buffer_size);
 	uint8_t * bitmap = (uint8_t*)(*buffer);
-	uint32_t mask = (1<<16) + (1<<17);
+	uint32_t mask = (1<<(USB_HUB_FEATURE_C_HUB_LOCAL_POWER+16))
+			| (1<<(USB_HUB_FEATURE_C_HUB_OVER_CURRENT+16));
 	bzero(bitmap,(*buffer_size));
 	if(instance->registers->rh_status & mask){
@@ -358,9 +368,10 @@
 	mask = 0;
 	int i;
-	for(i=16;i<=20;++i)
+	for(i=16;i<=20;++i){
 		mask += 1<<i;
+	}
 	for(port = 1; port<=instance->port_count;++port){
 		if(mask & instance->registers->rh_port_status[port-1]){
-			bitmap[(port+1)/8] += 1<<(port%8);
+			bitmap[(port)/8] += 1<<(port%8);
 		}
 	}
@@ -436,6 +447,4 @@
 	request->transfered_size = size;
 	memcpy(request->transport_buffer,result_descriptor,size);
-	usb_log_debug("sent desctiptor: %s\n",
-			usb_debug_str_buffer((uint8_t*)request->transport_buffer,size,size));
 	if (del)
 		free(result_descriptor);
