Index: uspace/drv/bus/usb/ohci/endpoint_list.c
===================================================================
--- uspace/drv/bus/usb/ohci/endpoint_list.c	(revision 48ae3ef60beee610cc95a4e34ea78d76a44715e0)
+++ uspace/drv/bus/usb/ohci/endpoint_list.c	(revision 57e06ef438456990c2fdcdff3e56ebd1b0fa0c97)
@@ -73,5 +73,6 @@
  * Does not check whether this replaces an existing list.
  */
-void endpoint_list_set_next(endpoint_list_t *instance, endpoint_list_t *next)
+void endpoint_list_set_next(
+    const endpoint_list_t *instance, const endpoint_list_t *next)
 {
 	assert(instance);
Index: uspace/drv/bus/usb/ohci/endpoint_list.h
===================================================================
--- uspace/drv/bus/usb/ohci/endpoint_list.h	(revision 48ae3ef60beee610cc95a4e34ea78d76a44715e0)
+++ uspace/drv/bus/usb/ohci/endpoint_list.h	(revision 57e06ef438456990c2fdcdff3e56ebd1b0fa0c97)
@@ -68,5 +68,6 @@
 
 int endpoint_list_init(endpoint_list_t *instance, const char *name);
-void endpoint_list_set_next(endpoint_list_t *instance, endpoint_list_t *next);
+void endpoint_list_set_next(
+    const endpoint_list_t *instance, const endpoint_list_t *next);
 void endpoint_list_add_ep(endpoint_list_t *instance, ohci_endpoint_t *ep);
 void endpoint_list_remove_ep(endpoint_list_t *instance, ohci_endpoint_t *ep);
Index: uspace/drv/bus/usb/ohci/hc.c
===================================================================
--- uspace/drv/bus/usb/ohci/hc.c	(revision 48ae3ef60beee610cc95a4e34ea78d76a44715e0)
+++ uspace/drv/bus/usb/ohci/hc.c	(revision 57e06ef438456990c2fdcdff3e56ebd1b0fa0c97)
@@ -221,8 +221,14 @@
 }
 /*----------------------------------------------------------------------------*/
-void hc_enqueue_endpoint(hc_t *instance, endpoint_t *ep)
-{
+void hc_enqueue_endpoint(hc_t *instance, const endpoint_t *ep)
+{
+	assert(instance);
+	assert(ep);
+
 	endpoint_list_t *list = &instance->lists[ep->transfer_type];
 	ohci_endpoint_t *ohci_ep = ohci_endpoint_get(ep);
+	assert(list);
+	assert(ohci_ep);
+
 	/* Enqueue ep */
 	switch (ep->transfer_type) {
@@ -247,9 +253,15 @@
 }
 /*----------------------------------------------------------------------------*/
-void hc_dequeue_endpoint(hc_t *instance, endpoint_t *ep)
-{
+void hc_dequeue_endpoint(hc_t *instance, const endpoint_t *ep)
+{
+	assert(instance);
+	assert(ep);
+
 	/* Dequeue ep */
 	endpoint_list_t *list = &instance->lists[ep->transfer_type];
 	ohci_endpoint_t *ohci_ep = ohci_endpoint_get(ep);
+
+	assert(list);
+	assert(ohci_ep);
 	switch (ep->transfer_type) {
 	case USB_TRANSFER_CONTROL:
Index: uspace/drv/bus/usb/ohci/hc.h
===================================================================
--- uspace/drv/bus/usb/ohci/hc.h	(revision 48ae3ef60beee610cc95a4e34ea78d76a44715e0)
+++ uspace/drv/bus/usb/ohci/hc.h	(revision 57e06ef438456990c2fdcdff3e56ebd1b0fa0c97)
@@ -86,6 +86,6 @@
 static inline void hc_fini(hc_t *instance) { /* TODO: implement*/ };
 
-void hc_enqueue_endpoint(hc_t *instance, endpoint_t *ep);
-void hc_dequeue_endpoint(hc_t *instance, endpoint_t *ep);
+void hc_enqueue_endpoint(hc_t *instance, const endpoint_t *ep);
+void hc_dequeue_endpoint(hc_t *instance, const endpoint_t *ep);
 
 void hc_interrupt(hc_t *instance, uint32_t status);
Index: uspace/drv/bus/usb/ohci/ohci_endpoint.c
===================================================================
--- uspace/drv/bus/usb/ohci/ohci_endpoint.c	(revision 48ae3ef60beee610cc95a4e34ea78d76a44715e0)
+++ uspace/drv/bus/usb/ohci/ohci_endpoint.c	(revision 57e06ef438456990c2fdcdff3e56ebd1b0fa0c97)
@@ -65,5 +65,5 @@
  *
  * @param[in] ep USBD endpoint structure
- * @return pointer to a new hcd endpoint structure, NULL on failure.
+ * @return Error code.
  */
 int ohci_endpoint_init(hcd_t *hcd, endpoint_t *ep)
@@ -90,5 +90,4 @@
 	endpoint_set_hc_data(
 	    ep, ohci_ep, ohci_ep_toggle_get, ohci_ep_toggle_set);
-	ohci_ep->hcd = hcd;
 	hc_enqueue_endpoint(hcd->private_data, ep);
 	return EOK;
@@ -97,5 +96,6 @@
 /** Disposes hcd endpoint structure
  *
- * @param[in] hcd_ep endpoint structure
+ * @param[in] hcd driver using this instance.
+ * @param[in] ep endpoint structure.
  */
 void ohci_endpoint_fini(hcd_t *hcd, endpoint_t *ep)
Index: uspace/drv/bus/usb/ohci/ohci_endpoint.h
===================================================================
--- uspace/drv/bus/usb/ohci/ohci_endpoint.h	(revision 48ae3ef60beee610cc95a4e34ea78d76a44715e0)
+++ uspace/drv/bus/usb/ohci/ohci_endpoint.h	(revision 57e06ef438456990c2fdcdff3e56ebd1b0fa0c97)
@@ -51,6 +51,4 @@
 	/** Linked list used by driver software */
 	link_t link;
-	/** Device using this ep */
-	hcd_t *hcd;
 } ohci_endpoint_t;
 
@@ -62,5 +60,5 @@
  * @return Pointer to assigned hcd endpoint structure
  */
-static inline ohci_endpoint_t * ohci_endpoint_get(endpoint_t *ep)
+static inline ohci_endpoint_t * ohci_endpoint_get(const endpoint_t *ep)
 {
 	assert(ep);
