Index: uspace/drv/hid/usbhid/main.c
===================================================================
--- uspace/drv/hid/usbhid/main.c	(revision 53b9f2c3825e0a362ac71ad50183265aa5d20115)
+++ uspace/drv/hid/usbhid/main.c	(revision e76c0ea8f951c2e63efa8e948fc849e59dec918b)
@@ -95,5 +95,5 @@
 	   usb_hid_polling_callback,
 	   /* How much data to request. */
-	   hid_dev->poll_pipe_mapping->pipe.max_packet_size,
+	   hid_dev->poll_pipe_mapping->pipe.desc.max_packet_size,
 	   /* Delay */
 	   -1,
@@ -124,7 +124,13 @@
 static int usb_hid_device_rem(usb_device_t *dev)
 {
-	// TODO: Stop device polling
-	// TODO: Call deinit (stops autorepeat too)
-	return ENOTSUP;
+	assert(dev);
+	usb_hid_dev_t *hid_dev = usb_device_data_get(dev);
+	assert(hid_dev);
+
+	/* TODO: Stop device polling prior to deinit. Now it fails on endpoint error. */
+
+	usb_hid_deinit(hid_dev);
+	usb_log_debug2("%s destruction complete.\n", usb_device_get_name(dev));
+	return EOK;
 }
 
