Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision c5b93dc5dcb245abfa09800d3728758f1839755f)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c	(revision 40a5d40dcbcbedcbd434dd13acde0004d1bc729e)
@@ -39,8 +39,9 @@
 
 void td_init(td_t *instance, int err_count, size_t size, bool toggle, bool iso,
-    bool low_speed, usb_target_t target, int pid, void *buffer, td_t *next)
+    bool low_speed, usb_target_t target, usb_packet_id pid, void *buffer, td_t *next)
 {
 	assert(instance);
 	assert(size < 1024);
+	assert((pid == USB_PID_SETUP) || (pid == USB_PID_IN) || (pid == USB_PID_OUT));
 
 	instance->next = 0
@@ -53,4 +54,8 @@
 	    | (iso ? TD_STATUS_ISOCHRONOUS_FLAG : 0)
 	    | TD_STATUS_ERROR_ACTIVE;
+
+	if (pid == USB_PID_IN && !iso) {
+		instance->status |= TD_STATUS_SPD_FLAG;
+	}
 
 	instance->device = 0
Index: uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h
===================================================================
--- uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h	(revision c5b93dc5dcb245abfa09800d3728758f1839755f)
+++ uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.h	(revision 40a5d40dcbcbedcbd434dd13acde0004d1bc729e)
@@ -92,5 +92,6 @@
 
 void td_init(td_t *instance, int error_count, size_t size, bool toggle, bool iso,
-    bool low_speed, usb_target_t target, int pid, void *buffer, td_t * next);
+    bool low_speed, usb_target_t target, usb_packet_id pid, void *buffer,
+    td_t *next);
 
 int td_status(td_t *instance);
