Index: uspace/drv/bus/usb/uhcirh/main.c
===================================================================
--- uspace/drv/bus/usb/uhcirh/main.c	(revision 89e061d9f31606953b441ebe4215e1a3c68c804b)
+++ uspace/drv/bus/usb/uhcirh/main.c	(revision 67edca69a038665959589f23a2314f2ab2b74c4b)
@@ -48,5 +48,5 @@
 #define NAME "uhcirh"
 
-static int hc_get_my_registers(const ddf_dev_t *dev,
+static int hc_get_my_registers(ddf_dev_t *dev,
     uintptr_t *io_reg_address, size_t *io_reg_size);
 
@@ -88,5 +88,5 @@
 
 	usb_log_debug2("uhci_rh_dev_add(handle=%" PRIun ")\n",
-	    device->handle);
+	    ddf_dev_get_handle(device));
 
 	uintptr_t io_regs = 0;
@@ -98,6 +98,4 @@
 if (ret != EOK) { \
 	usb_log_error(message); \
-	if (rh) \
-		free(rh); \
 	return ret; \
 } else (void)0
@@ -109,5 +107,5 @@
 	    (void *) io_regs, io_size);
 
-	rh = malloc(sizeof(uhci_root_hub_t));
+	rh = ddf_dev_data_alloc(device, sizeof(uhci_root_hub_t));
 	ret = (rh == NULL) ? ENOMEM : EOK;
 	CHECK_RET_FREE_RH_RETURN(ret,
@@ -119,7 +117,6 @@
 	    ret, str_error(ret));
 
-	device->driver_data = rh;
 	usb_log_info("Controlling root hub '%s' (%" PRIun ").\n",
-	    device->name, device->handle);
+	    ddf_dev_get_name(device), ddf_dev_get_handle(device));
 	return EOK;
 }
@@ -133,11 +130,9 @@
  */
 int hc_get_my_registers(
-    const ddf_dev_t *dev, uintptr_t *io_reg_address, size_t *io_reg_size)
+    ddf_dev_t *dev, uintptr_t *io_reg_address, size_t *io_reg_size)
 {
-	assert(dev);
-
 	async_sess_t *parent_sess =
-	    devman_parent_device_connect(EXCHANGE_SERIALIZE, dev->handle,
-	    IPC_FLAG_BLOCKING);
+	    devman_parent_device_connect(EXCHANGE_SERIALIZE,
+	    ddf_dev_get_handle(dev), IPC_FLAG_BLOCKING);
 	if (!parent_sess)
 		return ENOMEM;
