Index: uspace/drv/char/ns8250/ns8250.c
===================================================================
--- uspace/drv/char/ns8250/ns8250.c	(revision 1dc4a5e441cc195a33bd958ea4994dcd59141df0)
+++ uspace/drv/char/ns8250/ns8250.c	(revision c1a04886f6fc4fd68787bad7a58a1e5f594797ce)
@@ -112,30 +112,4 @@
 	fibril_mutex_t mutex;
 } ns8250_t;
-
-/** Create per-device soft-state structure.
- *
- * @return	Pointer to soft-state structure.
- */
-static ns8250_t *ns8250_new(void)
-{
-	ns8250_t *ns;
-	
-	ns = (ns8250_t *) calloc(1, sizeof(ns8250_t));
-	if (ns == NULL)
-		return NULL;
-	
-	fibril_mutex_initialize(&ns->mutex);
-	return ns;
-}
-
-/** Delete soft-state structure.
- *
- * @param ns	The driver data structure.
- */
-static void ns8250_delete(ns8250_t *ns)
-{
-	assert(ns != NULL);
-	free(ns);
-}
 
 /** Find out if there is some incomming data available on the serial port.
@@ -721,5 +695,5 @@
 	
 	/* Allocate soft-state for the device */
-	ns = ns8250_new();
+	ns = ddf_dev_data_alloc(dev, sizeof(ns8250_t));
 	if (ns == NULL) {
 		rc = ENOMEM;
@@ -727,6 +701,6 @@
 	}
 	
+	fibril_mutex_initialize(&ns->mutex);
 	ns->dev = dev;
-	dev->driver_data = ns;
 	
 	rc = ns8250_dev_initialize(ns);
@@ -792,6 +766,4 @@
 	if (need_cleanup)
 		ns8250_dev_cleanup(ns);
-	if (ns != NULL)
-		ns8250_delete(ns);
 	return rc;
 }
