Index: uspace/lib/drv/generic/driver.c
===================================================================
--- uspace/lib/drv/generic/driver.c	(revision f7a55f9d235500fd64bf6b070ec2c559e7f9d1aa)
+++ uspace/lib/drv/generic/driver.c	(revision 38c9505b89604cf985448cc6a31261adcb01ff59)
@@ -314,4 +314,10 @@
 		    " %" PRIun " was found.\n", driver->name, handle);
 		async_answer_0(iid, ENOENT);
+		return;
+	}
+	
+	if (fun->conn_handler != NULL) {
+		/* Driver has a custom connection handler. */
+		(*fun->conn_handler)(iid, icall, (void *)fun);
 		return;
 	}
Index: uspace/lib/drv/include/ddf/driver.h
===================================================================
--- uspace/lib/drv/include/ddf/driver.h	(revision f7a55f9d235500fd64bf6b070ec2c559e7f9d1aa)
+++ uspace/lib/drv/include/ddf/driver.h	(revision 38c9505b89604cf985448cc6a31261adcb01ff59)
@@ -118,4 +118,6 @@
 	/** Implementation of operations provided by this function */
 	ddf_dev_ops_t *ops;
+	/** Connection handler or @c NULL to use the DDF default handler. */
+	async_client_conn_t conn_handler;
 	
 	/** Link in the list of functions handled by the driver */
