Index: uspace/drv/bus/usb/usbhub/usbhub.c
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.c	(revision 1ed3eb446a3e26cd5f83359306aa7e05b1fc14ad)
+++ uspace/drv/bus/usb/usbhub/usbhub.c	(revision 7dddd7b475f6a4be64132bca0625d4514f8c8872)
@@ -164,9 +164,21 @@
 
 	/* Start hub operation. */
-	opResult = usb_device_auto_poll_desc(hub_dev->usb_device,
-	    &hub_status_change_endpoint_description,
-	    hub_port_changes_callback, ((hub_dev->port_count + 1 + 7) / 8),
-	    -1, usb_hub_polling_error_callback,
-	    usb_hub_polling_terminated_callback, hub_dev);
+	const usb_device_auto_polling_t auto_polling = {
+		.debug = 1,
+		.auto_clear_halt = true,
+		.delay = -1,
+		.max_failures = 3,
+		.on_data = hub_port_changes_callback,
+		.on_polling_end = usb_hub_polling_terminated_callback,
+		.on_error = usb_hub_polling_error_callback,
+		.arg = hub_dev,
+	};
+
+	usb_endpoint_mapping_t *epm =
+	    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));
+	
 	if (opResult != EOK) {
 		/* Function is already bound */
Index: uspace/drv/hid/usbhid/main.c
===================================================================
--- uspace/drv/hid/usbhid/main.c	(revision 1ed3eb446a3e26cd5f83359306aa7e05b1fc14ad)
+++ uspace/drv/hid/usbhid/main.c	(revision 7dddd7b475f6a4be64132bca0625d4514f8c8872)
@@ -90,19 +90,17 @@
 	 * This will create a separate fibril that will query the device
 	 * for the data continuously. */
-	rc = usb_device_auto_poll_desc(dev,
-	   /* Index of the polling pipe. */
-	   hid_dev->poll_pipe_mapping->description,
-	   /* Callback when data arrives. */
-	   usb_hid_polling_callback,
-	   /* How much data to request. */
-	   hid_dev->poll_pipe_mapping->pipe.desc.max_transfer_size,
-	   /* Delay */
-	   -1,
-	   /* Callback when the polling fails. */
-	   usb_hid_polling_error_callback,
-	   /* Callback when the polling ends. */
-	   usb_hid_polling_ended_callback,
-	   /* Custom argument. */
-	   hid_dev);
+	const usb_device_auto_polling_t auto_polling = {
+		.debug = 1,
+		.auto_clear_halt = true,
+		.delay = -1,
+		.max_failures = 3,
+		.on_data = usb_hid_polling_callback,
+		.on_polling_end = usb_hid_polling_ended_callback,
+		.on_error = usb_hid_polling_error_callback,
+		.arg = hid_dev,
+	};
+
+	rc = usb_device_auto_polling(dev, hid_dev->poll_pipe_mapping,
+	    &auto_polling, hid_dev->poll_pipe_mapping->pipe.desc.max_transfer_size);
 
 	if (rc != EOK) {
