Index: uspace/drv/bus/usb/usbhub/usbhub.c
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.c	(revision 7dddd7b475f6a4be64132bca0625d4514f8c8872)
+++ uspace/drv/bus/usb/usbhub/usbhub.c	(revision 71f211f6909eb71f441da24a2ff90c3ecefd18fd)
@@ -164,5 +164,5 @@
 
 	/* Start hub operation. */
-	const usb_device_auto_polling_t auto_polling = {
+	const usb_device_polling_config_t config = {
 		.debug = 1,
 		.auto_clear_halt = true,
@@ -178,6 +178,6 @@
 	    usb_device_get_mapped_ep_desc(hub_dev->usb_device,
 	    &hub_status_change_endpoint_description);
-	opResult = usb_device_auto_polling(hub_dev->usb_device, epm,
-	    &auto_polling, ((hub_dev->port_count + 1 + 7) / 8));
+	opResult = usb_device_poll(hub_dev->usb_device, epm, &config,
+	    ((hub_dev->port_count + 1 + 7) / 8), &hub_dev->polling);
 	
 	if (opResult != EOK) {
Index: uspace/drv/bus/usb/usbhub/usbhub.h
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.h	(revision 7dddd7b475f6a4be64132bca0625d4514f8c8872)
+++ uspace/drv/bus/usb/usbhub/usbhub.h	(revision 71f211f6909eb71f441da24a2ff90c3ecefd18fd)
@@ -44,4 +44,5 @@
 #include <usb/dev/pipes.h>
 #include <usb/dev/driver.h>
+#include <usb/dev/poll.h>
 
 #include <fibril_synch.h>
@@ -59,5 +60,6 @@
 	/** Generic usb device data*/
 	usb_device_t *usb_device;
-
+	/** Data polling handle. */
+	usb_device_polling_t *polling;
 	/** Number of pending operations on the mutex to prevent shooting
 	 * ourselves in the foot.
Index: uspace/drv/hid/usbhid/main.c
===================================================================
--- uspace/drv/hid/usbhid/main.c	(revision 7dddd7b475f6a4be64132bca0625d4514f8c8872)
+++ uspace/drv/hid/usbhid/main.c	(revision 71f211f6909eb71f441da24a2ff90c3ecefd18fd)
@@ -90,5 +90,5 @@
 	 * This will create a separate fibril that will query the device
 	 * for the data continuously. */
-	const usb_device_auto_polling_t auto_polling = {
+	const usb_device_polling_config_t config = {
 		.debug = 1,
 		.auto_clear_halt = true,
@@ -101,6 +101,6 @@
 	};
 
-	rc = usb_device_auto_polling(dev, hid_dev->poll_pipe_mapping,
-	    &auto_polling, hid_dev->poll_pipe_mapping->pipe.desc.max_transfer_size);
+	rc = usb_device_poll(dev, hid_dev->poll_pipe_mapping, &config,
+	    hid_dev->poll_pipe_mapping->pipe.desc.max_transfer_size, &hid_dev->polling);
 
 	if (rc != EOK) {
Index: uspace/drv/hid/usbhid/usbhid.h
===================================================================
--- uspace/drv/hid/usbhid/usbhid.h	(revision 7dddd7b475f6a4be64132bca0625d4514f8c8872)
+++ uspace/drv/hid/usbhid/usbhid.h	(revision 71f211f6909eb71f441da24a2ff90c3ecefd18fd)
@@ -43,4 +43,5 @@
 #include <usb/dev/pipes.h>
 #include <usb/dev/driver.h>
+#include <usb/dev/poll.h>
 #include <usb/hid/hid.h>
 #include <stdbool.h>
@@ -107,4 +108,7 @@
 	usb_endpoint_mapping_t *poll_pipe_mapping;
 
+	/** Device polling handle. */
+	usb_device_polling_t *polling;
+
 	/** Subdrivers. */
 	usb_hid_subdriver_t *subdrivers;
