Index: uspace/drv/bus/usb/xhci/endpoint.c
===================================================================
--- uspace/drv/bus/usb/xhci/endpoint.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
+++ uspace/drv/bus/usb/xhci/endpoint.c	(revision 398a94cfe18545f6449beb18a88233caea44a22e)
@@ -65,7 +65,15 @@
 	endpoint_init(ep, dev, desc);
 
-	xhci_ep->max_streams = 1 << (USB_SSC_MAX_STREAMS(desc->companion));
 	xhci_ep->max_burst = desc->companion.max_burst + 1;
-	xhci_ep->mult = USB_SSC_MULT(desc->companion) + 1;
+
+	if (ep->transfer_type == USB_TRANSFER_BULK)
+		xhci_ep->max_streams = 1 << (USB_SSC_MAX_STREAMS(desc->companion));
+	else
+		xhci_ep->max_streams = 1;
+
+	if (ep->transfer_type == USB_TRANSFER_ISOCHRONOUS)
+		xhci_ep->mult = USB_SSC_MULT(desc->companion) + 1;
+	else
+		xhci_ep->mult = 1;
 
 	/* In USB 3, the semantics of wMaxPacketSize changed. Now the number of
@@ -314,5 +322,6 @@
 	}
 
-	isoch_fini(xhci_ep);
+	if (xhci_ep->base.transfer_type == USB_TRANSFER_ISOCHRONOUS)
+		isoch_fini(xhci_ep);
 }
 
Index: uspace/drv/bus/usb/xhci/isoch.c
===================================================================
--- uspace/drv/bus/usb/xhci/isoch.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
+++ uspace/drv/bus/usb/xhci/isoch.c	(revision 398a94cfe18545f6449beb18a88233caea44a22e)
@@ -54,8 +54,4 @@
 	fibril_condvar_initialize(&isoch->avail);
 
-	isoch->max_size = desc->companion.bytes_per_interval
-		? desc->companion.bytes_per_interval
-		: ep->base.max_transfer_size;
-
 	const xhci_hc_t *hc = bus_to_xhci_bus(ep->base.device->bus)->hc;
 
@@ -122,5 +118,5 @@
 	for (size_t i = 0; i < isoch->buffer_count; ++i) {
 		xhci_isoch_transfer_t *transfer = &isoch->transfers[i];
-		if (dma_buffer_alloc(&transfer->data, isoch->max_size)) {
+		if (dma_buffer_alloc(&transfer->data, ep->base.max_transfer_size)) {
 			goto err;
 		}
@@ -276,5 +272,5 @@
 			fibril_timer_set_locked(isoch->feeding_timer, delay,
 			    isoch_feed_out_timer, ep);
-			break;
+			goto out;
 		}
 
@@ -305,4 +301,5 @@
 		}
 	}
+out:
 
 	if (fed) {
@@ -345,5 +342,5 @@
 		/* IN buffers are "filled" with free space */
 		if (it->state == ISOCH_EMPTY) {
-			it->size = isoch->max_size;
+			it->size = ep->base.max_transfer_size;
 			it->state = ISOCH_FILLED;
 			calc_next_mfindex(ep, it);
@@ -361,5 +358,5 @@
 			fibril_timer_set_locked(isoch->feeding_timer, delay,
 			    isoch_feed_in_timer, ep);
-			break;
+			goto out;
 		}
 
@@ -391,4 +388,5 @@
 		}
 	}
+out:
 
 	if (fed) {
@@ -422,5 +420,5 @@
 	xhci_isoch_t * const isoch = ep->isoch;
 
-	if (transfer->batch.buffer_size > isoch->max_size) {
+	if (transfer->batch.buffer_size > ep->base.max_transfer_size) {
 		usb_log_error("Cannot schedule an oversized isochronous transfer.");
 		return ELIMIT;
@@ -487,5 +485,5 @@
 	xhci_isoch_t * const isoch = ep->isoch;
 
-	if (transfer->batch.buffer_size < isoch->max_size) {
+	if (transfer->batch.buffer_size < ep->base.max_transfer_size) {
 		usb_log_error("Cannot schedule an undersized isochronous transfer.");
 		return ELIMIT;
Index: uspace/drv/bus/usb/xhci/main.c
===================================================================
--- uspace/drv/bus/usb/xhci/main.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
+++ uspace/drv/bus/usb/xhci/main.c	(revision 398a94cfe18545f6449beb18a88233caea44a22e)
@@ -115,5 +115,5 @@
 {
 	log_init(NAME);
-	logctl_set_log_level(NAME, LVL_NOTE);
+	logctl_set_log_level(NAME, LVL_DEBUG);
 	return hc_driver_main(&xhci_driver);
 }
