Index: uspace/drv/uhci-hcd/main.c
===================================================================
--- uspace/drv/uhci-hcd/main.c	(revision 2d33eb54c27914c803bff6fd654a15c5b185b47e)
+++ uspace/drv/uhci-hcd/main.c	(revision cabda7fa84338525e6aef7099f419d2e4e636e1c)
@@ -61,5 +61,4 @@
 };
 /*----------------------------------------------------------------------------*/
-#ifdef USE_INTERRUPTS
 static void irq_handler(ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call)
 {
@@ -70,5 +69,4 @@
 	uhci_interrupt(hc, status);
 }
-#endif
 /*----------------------------------------------------------------------------*/
 #define CHECK_RET_RETURN(ret, message...) \
@@ -85,11 +83,10 @@
 
 
-	uintptr_t io_reg_base;
-	size_t io_reg_size;
-	int irq;
+	uintptr_t io_reg_base = 0;
+	size_t io_reg_size = 0;
+	int irq = 0;
 
 	int ret =
 	    pci_get_my_registers(device, &io_reg_base, &io_reg_size, &irq);
-	io_reg_size = sizeof(regs_t);
 
 	CHECK_RET_RETURN(ret,
@@ -97,9 +94,8 @@
 	usb_log_info("I/O regs at 0x%X (size %zu), IRQ %d.\n",
 	    io_reg_base, io_reg_size, irq);
+	io_reg_size = 32;
 
-#ifdef USE_INTERRUPTS
-	ret = pci_enable_interrupts(device);
-	CHECK_RET_RETURN(ret, "Failed(%d) to get enable interrupts:\n", ret);
-#endif
+//	ret = pci_enable_interrupts(device);
+//	CHECK_RET_RETURN(ret, "Failed(%d) to get enable interrupts:\n", ret);
 
 	uhci_t *uhci_hc = malloc(sizeof(uhci_t));
@@ -119,5 +115,4 @@
 	 */
 	device->driver_data = uhci_hc;
-#ifdef USE_INTERRUPTS
 	ret = register_interrupt_handler(device, irq, irq_handler,
 	    &uhci_hc->interrupt_code);
@@ -128,5 +123,4 @@
 		return ret;
 	}
-#endif
 
 	ddf_fun_t *rh;
@@ -155,5 +149,5 @@
 {
 	sleep(3);
-	usb_log_enable(USB_LOG_LEVEL_INFO, NAME);
+	usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME);
 
 	return ddf_driver_main(&uhci_driver);
Index: uspace/drv/uhci-hcd/uhci.c
===================================================================
--- uspace/drv/uhci-hcd/uhci.c	(revision 2d33eb54c27914c803bff6fd654a15c5b185b47e)
+++ uspace/drv/uhci-hcd/uhci.c	(revision cabda7fa84338525e6aef7099f419d2e4e636e1c)
@@ -141,7 +141,5 @@
 
 	instance->cleaner = fibril_create(uhci_interrupt_emulator, instance);
-#ifndef USE_INTERRUTPS
 	fibril_add_ready(instance->cleaner);
-#endif
 
 	instance->debug_checker = fibril_create(uhci_debug_checker, instance);
@@ -153,4 +151,8 @@
 void uhci_init_hw(uhci_t *instance)
 {
+	/* reset hc, who knows what touched it before us */
+	pio_write_16(&instance->registers->usbcmd, UHCI_CMD_GLOBAL_RESET);
+	async_usleep(10000); /* 10ms according to USB spec */
+	pio_write_16(&instance->registers->usbcmd, 0);
 
 	/* set framelist pointer */
@@ -159,6 +161,6 @@
 
 	/* enable all interrupts, but resume interrupt */
-	pio_write_16(&instance->registers->usbintr,
-		  UHCI_INTR_CRC | UHCI_INTR_COMPLETE | UHCI_INTR_SHORT_PACKET);
+//	pio_write_16(&instance->registers->usbintr,
+//		  UHCI_INTR_CRC | UHCI_INTR_COMPLETE | UHCI_INTR_SHORT_PACKET);
 
 	/* Start the hc with large(64B) packet FSBR */
@@ -295,7 +297,9 @@
 	while(1) {
 		uint16_t status = pio_read_16(&instance->registers->usbsts);
+		usb_log_debug("UHCI status: %x.\n", status);
+		status |= 1;
 		uhci_interrupt(instance, status);
 		pio_write_16(&instance->registers->usbsts, 0x1f);
-		async_usleep(UHCI_CLEANER_TIMEOUT);
+		async_usleep(UHCI_CLEANER_TIMEOUT * 1000);
 	}
 	return EOK;
@@ -313,5 +317,6 @@
 		    cmd, sts, intr);
 
-		uintptr_t frame_list = pio_read_32(&instance->registers->flbaseadd);
+		uintptr_t frame_list =
+		    pio_read_32(&instance->registers->flbaseadd) & ~0xfff;
 		if (frame_list != addr_to_phys(instance->frame_list)) {
 			usb_log_debug("Framelist address: %p vs. %p.\n",
Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision 2d33eb54c27914c803bff6fd654a15c5b185b47e)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision cabda7fa84338525e6aef7099f419d2e4e636e1c)
@@ -69,16 +69,4 @@
 		instance->next, instance->status, instance->device,
 	  instance->buffer_ptr, buffer);
-#if 0
-	if (size) {
-		unsigned char * buff = buffer;
-		uhci_print_verbose("TD Buffer dump(%p-%dB): ", buffer, size);
-		unsigned i = 0;
-		/* TODO: Verbose? */
-		for (; i < size; ++i) {
-			printf((i & 1) ? "%x " : "%x", buff[i]);
-		}
-		printf("\n");
-	}
-#endif
 }
 /*----------------------------------------------------------------------------*/
