Index: uspace/drv/bus/usb/ehci/hc.c
===================================================================
--- uspace/drv/bus/usb/ehci/hc.c	(revision e26a9d95636fe7d9900d09ea304b6ff01e76cfb7)
+++ uspace/drv/bus/usb/ehci/hc.c	(revision 3e2007362d836bf325d886faec0dfc231c162014)
@@ -92,5 +92,4 @@
 static void hc_start(hc_t *instance);
 static int hc_init_memory(hc_t *instance);
-static int interrupt_emulator(hc_t *instance);
 
 /** Generate IRQ code.
@@ -191,10 +190,4 @@
 	hc_gain_control(instance);
 
-	if (!interrupts) {
-		instance->interrupt_emulator =
-		    fibril_create((int(*)(void*))interrupt_emulator, instance);
-		fibril_add_ready(instance->interrupt_emulator);
-	}
-
 	ehci_rh_init(
 	    &instance->rh, instance->caps, instance->registers, "ehci rh");
@@ -256,22 +249,4 @@
 }
 
-/** Check status register regularly
- *
- * @param[in] instance EHCI hc driver structure.
- * @return Error code
- */
-int interrupt_emulator(hc_t *instance)
-{
-	assert(instance);
-	usb_log_info("Started interrupt emulator.\n");
-	while (1) {
-//		const uint32_t status = instance->registers->interrupt_status;
-//		instance->registers->interrupt_status = status;
-//		hc_interrupt(instance, status);
-		async_usleep(10000);
-	}
-	return EOK;
-}
-
 /** Turn off any (BIOS)driver that might be in control of the device.
  *
Index: uspace/drv/bus/usb/ehci/hc.h
===================================================================
--- uspace/drv/bus/usb/ehci/hc.h	(revision e26a9d95636fe7d9900d09ea304b6ff01e76cfb7)
+++ uspace/drv/bus/usb/ehci/hc.h	(revision 3e2007362d836bf325d886faec0dfc231c162014)
@@ -64,7 +64,4 @@
 	list_t pending_batches;
 
-	/** Fibril for periodic checks if interrupts can't be used */
-	fid_t interrupt_emulator;
-
 	/** Guards schedule and endpoint manipulation */
 	fibril_mutex_t guard;
Index: uspace/drv/bus/usb/ohci/hc.c
===================================================================
--- uspace/drv/bus/usb/ohci/hc.c	(revision e26a9d95636fe7d9900d09ea304b6ff01e76cfb7)
+++ uspace/drv/bus/usb/ohci/hc.c	(revision 3e2007362d836bf325d886faec0dfc231c162014)
@@ -93,5 +93,4 @@
 static int hc_init_transfer_lists(hc_t *instance);
 static int hc_init_memory(hc_t *instance);
-static int interrupt_emulator(hc_t *instance);
 
 /** Generate IRQ code.
@@ -182,10 +181,4 @@
 
 	hc_gain_control(instance);
-
-	if (!interrupts) {
-		instance->interrupt_emulator =
-		    fibril_create((int(*)(void*))interrupt_emulator, instance);
-		fibril_add_ready(instance->interrupt_emulator);
-	}
 
 	ohci_rh_init(&instance->rh, instance->registers, "ohci rh");
@@ -280,5 +273,4 @@
 	assert(instance);
 
-	async_usleep(10000);
 	if (instance->registers){
 		*status = OHCI_RD(instance->registers->interrupt_status);
@@ -373,22 +365,4 @@
 	}
 
-}
-
-/** Check status register regularly
- *
- * @param[in] instance OHCI hc driver structure.
- * @return Error code
- */
-int interrupt_emulator(hc_t *instance)
-{
-	assert(instance);
-	usb_log_info("Started interrupt emulator.\n");
-	while (1) {
-		const uint32_t status = instance->registers->interrupt_status;
-		instance->registers->interrupt_status = status;
-		hc_interrupt(instance, status);
-		async_usleep(10000);
-	}
-	return EOK;
 }
 
Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision e26a9d95636fe7d9900d09ea304b6ff01e76cfb7)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision 3e2007362d836bf325d886faec0dfc231c162014)
@@ -96,5 +96,4 @@
 static int hc_init_transfer_lists(hc_t *instance);
 
-static int hc_interrupt_emulator(void *arg);
 static int hc_debug_checker(void *arg);
 
@@ -245,9 +244,4 @@
 
 	hc_init_hw(instance);
-	if (!interrupts) {
-		instance->interrupt_emulator =
-		    fibril_create(hc_interrupt_emulator, instance);
-		fibril_add_ready(instance->interrupt_emulator);
-	}
 	(void)hc_debug_checker;
 
@@ -460,27 +454,4 @@
 }
 
-/** Polling function, emulates interrupts.
- *
- * @param[in] arg UHCI hc structure to use.
- * @return EOK (should never return)
- */
-int hc_interrupt_emulator(void* arg)
-{
-	usb_log_debug("Started interrupt emulator.\n");
-	hc_t *instance = arg;
-	assert(instance);
-
-	while (1) {
-		/* Read and clear status register */
-		uint16_t status = pio_read_16(&instance->registers->usbsts);
-		pio_write_16(&instance->registers->usbsts, status);
-		if (status != 0)
-			usb_log_debug2("UHCI status: %x.\n", status);
-		hc_interrupt(instance, status);
-		async_usleep(UHCI_INT_EMULATOR_TIMEOUT);
-	}
-	return EOK;
-}
-
 /** Debug function, checks consistency of memory structures.
  *
Index: uspace/drv/bus/usb/uhci/hc.h
===================================================================
--- uspace/drv/bus/usb/uhci/hc.h	(revision e26a9d95636fe7d9900d09ea304b6ff01e76cfb7)
+++ uspace/drv/bus/usb/uhci/hc.h	(revision 3e2007362d836bf325d886faec0dfc231c162014)
@@ -93,8 +93,6 @@
 
 #define UHCI_FRAME_LIST_COUNT 1024
-#define UHCI_INT_EMULATOR_TIMEOUT 10000
 #define UHCI_DEBUGER_TIMEOUT 5000000
 #define UHCI_ALLOWED_HW_FAIL 5
-#define UHCI_NEEDED_IRQ_COMMANDS 5
 
 /** Main UHCI driver structure */
@@ -118,6 +116,4 @@
 	/** Pointer table to the above lists, helps during scheduling */
 	transfer_list_t *transfers[2][4];
-	/** Fibril periodically checking status register*/
-	fid_t interrupt_emulator;
 	/** Indicator of hw interrupts availability */
 	bool hw_interrupts;
