Index: uspace/drv/bus/usb/uhcirh/port.c
===================================================================
--- uspace/drv/bus/usb/uhcirh/port.c	(revision d8cdf39e69c66f24413ec8870e82b1e544433085)
+++ uspace/drv/bus/usb/uhcirh/port.c	(revision db8b7ca0bcbe43621eabcff64193795eab10a1c6)
@@ -266,6 +266,5 @@
 		ret = usb_hc_new_device_wrapper(port->rh, &port->hc_connection,
 		    speed, uhci_port_reset_enable, port,
-		    &port->attached_device.address, NULL, NULL,
-		    &port->attached_device.fun);
+		    &port->attached_device.address, &port->attached_device.fun);
 	} while (ret != EOK && count-- > 0);
 
Index: uspace/drv/bus/usb/usbhub/port.c
===================================================================
--- uspace/drv/bus/usb/usbhub/port.c	(revision d8cdf39e69c66f24413ec8870e82b1e544433085)
+++ uspace/drv/bus/usb/usbhub/port.c	(revision db8b7ca0bcbe43621eabcff64193795eab10a1c6)
@@ -426,5 +426,5 @@
 	const int rc = usb_hc_new_device_wrapper(data->hub->usb_device->ddf_dev,
 	    &data->hub->usb_device->hc_conn, data->speed, enable_port_callback,
-	    data->port, &new_address, NULL, NULL, &child_fun);
+	    data->port, &new_address, &child_fun);
 
 	if (rc == EOK) {
Index: uspace/lib/usbdev/include/usb/dev/hub.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/hub.h	(revision d8cdf39e69c66f24413ec8870e82b1e544433085)
+++ uspace/lib/usbdev/include/usb/dev/hub.h	(revision db8b7ca0bcbe43621eabcff64193795eab10a1c6)
@@ -44,7 +44,6 @@
 #include <usb/hc.h>
 
-extern int usb_hc_new_device_wrapper(ddf_dev_t *, usb_hc_connection_t *, usb_speed_t,
-    int (*)(void *), void *, usb_address_t *, ddf_dev_ops_t *, void *,
-    ddf_fun_t **);
+extern int usb_hc_new_device_wrapper(ddf_dev_t *, usb_hc_connection_t *,
+    usb_speed_t, int (*)(void *), void *, usb_address_t *, ddf_fun_t **);
 
 /** Info about device attached to host controller.
Index: uspace/lib/usbdev/include/usb/dev/recognise.h
===================================================================
--- uspace/lib/usbdev/include/usb/dev/recognise.h	(revision d8cdf39e69c66f24413ec8870e82b1e544433085)
+++ uspace/lib/usbdev/include/usb/dev/recognise.h	(revision db8b7ca0bcbe43621eabcff64193795eab10a1c6)
@@ -52,5 +52,5 @@
 
 extern int usb_device_register_child_in_devman(usb_pipe_t *ctrl_pipe,
-    ddf_dev_t *, ddf_dev_ops_t *, void *, ddf_fun_t **);
+    ddf_dev_t *, ddf_fun_t **);
 
 #endif
Index: uspace/lib/usbdev/src/hub.c
===================================================================
--- uspace/lib/usbdev/src/hub.c	(revision d8cdf39e69c66f24413ec8870e82b1e544433085)
+++ uspace/lib/usbdev/src/hub.c	(revision db8b7ca0bcbe43621eabcff64193795eab10a1c6)
@@ -158,5 +158,5 @@
     usb_hc_connection_t *hc_conn, usb_speed_t dev_speed,
     int (*enable_port)(void *arg), void *arg, usb_address_t *assigned_address,
-    ddf_dev_ops_t *dev_ops, void *new_dev_data, ddf_fun_t **new_fun)
+    ddf_fun_t **new_fun)
 {
 	if ((new_fun == NULL) || (hc_conn == NULL))
@@ -273,5 +273,5 @@
 	ddf_fun_t *child_fun;
 	rc = usb_device_register_child_in_devman(&ctrl_pipe,
-	    parent, dev_ops, new_dev_data, &child_fun);
+	    parent, &child_fun);
 	if (rc != EOK) {
 		goto leave_release_free_address;
Index: uspace/lib/usbdev/src/recognise.c
===================================================================
--- uspace/lib/usbdev/src/recognise.c	(revision d8cdf39e69c66f24413ec8870e82b1e544433085)
+++ uspace/lib/usbdev/src/recognise.c	(revision db8b7ca0bcbe43621eabcff64193795eab10a1c6)
@@ -33,7 +33,4 @@
  * Functions for recognition of attached devices.
  */
-
-/** XXX Fix this */
-#define _DDF_DATA_IMPLANT
 
 #include <sys/types.h>
@@ -318,14 +315,8 @@
  */
 int usb_device_register_child_in_devman(usb_pipe_t *ctrl_pipe,
-    ddf_dev_t *parent, ddf_dev_ops_t *dev_ops, void *dev_data,
-    ddf_fun_t **child_fun)
+    ddf_dev_t *parent, ddf_fun_t **child_fun)
 {
 	if (child_fun == NULL || ctrl_pipe == NULL)
 		return EINVAL;
-	
-	if (!dev_ops && dev_data) {
-		usb_log_warning("Using standard fun ops with arbitrary "
-		    "driver data. This does not have to work.\n");
-	}
 	
 	/** Index to append after device name for uniqueness. */
@@ -354,26 +345,18 @@
 	}
 	
-	if (dev_ops != NULL)
-		ddf_fun_set_ops(child, dev_ops);
-	else
-		ddf_fun_set_ops(child, &child_ops);
-	
-	ddf_fun_data_implant(child, dev_data);
-	
+	ddf_fun_set_ops(child, &child_ops);
 	/*
 	 * Store the attached device in fun
 	 * driver data if there is no other data
 	 */
-	if (!dev_data) {
-		usb_hub_attached_device_t *new_device = ddf_fun_data_alloc(
-		    child, sizeof(usb_hub_attached_device_t));
-		if (!new_device) {
-			rc = ENOMEM;
-			goto failure;
-		}
-		
-		new_device->address = ctrl_pipe->wire->address;
-		new_device->fun = child;
-	}
+	usb_hub_attached_device_t *new_device = ddf_fun_data_alloc(
+	    child, sizeof(usb_hub_attached_device_t));
+	if (!new_device) {
+		rc = ENOMEM;
+		goto failure;
+	}
+	
+	new_device->address = ctrl_pipe->wire->address;
+	new_device->fun = child;
 	
 	match_id_list_t match_ids;
