Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision d3dce3f407f64daa8fb10b187f625b83f8602820)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision 275f5292c04445b3d6aa69f11b56f74b81bcb074)
@@ -360,12 +360,31 @@
 int hc_schedule(xhci_hc_t *hc, usb_transfer_batch_t *batch)
 {
-	// TODO: This function currently contains cmd ring testing
-	//       stuff, remove it.
-	xhci_cmd_t *cmd = xhci_alloc_command();
-	xhci_send_no_op_command(hc, cmd);
-	xhci_wait_for_command(cmd, 1000000);
-	xhci_free_command(cmd);
-
-	return EOK;
+	assert(batch);
+
+	usb_log_debug2("EP(%d:%d) started %s transfer of size %lu.",
+		batch->ep->address, batch->ep->endpoint,
+		usb_str_transfer_type(batch->ep->transfer_type),
+		batch->buffer_size);
+
+	switch (batch->ep->transfer_type) {
+	case USB_TRANSFER_CONTROL:
+		/* TODO: Send setup stage TRB. */
+		/* TODO: Optionally, send data stage TRB followed by zero or
+			 more normal TRB's. */
+		/* TODO: Send status stage TRB. */
+		/* TODO: Ring the appropriate doorbell. */
+		break;
+	case USB_TRANSFER_ISOCHRONOUS:
+		/* TODO: Implement me. */
+		break;
+	case USB_TRANSFER_BULK:
+		/* TODO: Implement me. */
+		break;
+	case USB_TRANSFER_INTERRUPT:
+		/* TODO: Implement me. */
+		break;
+	}
+
+	return ENAK;
 }
 
@@ -456,5 +475,5 @@
 		usb_log_error("Port change detected. Not implemented yet!");
 	}
-	
+
 	if (status & XHCI_REG_MASK(XHCI_OP_SRE)) {
 		usb_log_error("Save/Restore error occured. WTF, S/R mechanism not implemented!");
