Index: uspace/lib/drv/generic/driver.c
===================================================================
--- uspace/lib/drv/generic/driver.c	(revision f787c8e603e6091f428e7d4b79342b95a4fc26f4)
+++ uspace/lib/drv/generic/driver.c	(revision 498ced18a4f90fe1c9eee028e354d61b39de484d)
@@ -578,5 +578,5 @@
 static void dev_add_ref(ddf_dev_t *dev)
 {
-	atomic_inc(&dev->refcnt);
+	refcount_up(&dev->refcnt);
 }
 
@@ -587,5 +587,5 @@
 static void dev_del_ref(ddf_dev_t *dev)
 {
-	if (atomic_predec(&dev->refcnt) == 0)
+	if (refcount_down(&dev->refcnt))
 		delete_device(dev);
 }
@@ -600,5 +600,5 @@
 {
 	dev_add_ref(fun->dev);
-	atomic_inc(&fun->refcnt);
+	refcount_up(&fun->refcnt);
 }
 
@@ -611,5 +611,5 @@
 	ddf_dev_t *dev = fun->dev;
 
-	if (atomic_predec(&fun->refcnt) == 0)
+	if (refcount_down(&fun->refcnt))
 		delete_function(fun);
 
Index: uspace/lib/drv/generic/private/driver.h
===================================================================
--- uspace/lib/drv/generic/private/driver.h	(revision f787c8e603e6091f428e7d4b79342b95a4fc26f4)
+++ uspace/lib/drv/generic/private/driver.h	(revision 498ced18a4f90fe1c9eee028e354d61b39de484d)
@@ -38,4 +38,5 @@
 
 #include <async.h>
+#include <refcount.h>
 #include <ipc/devman.h>
 #include <ipc/dev_iface.h>
@@ -51,5 +52,5 @@
 
 	/** Reference count */
-	atomic_t refcnt;
+	atomic_refcount_t refcnt;
 
 	/** Session with the parent device driver */
@@ -75,5 +76,5 @@
 
 	/** Reference count */
-	atomic_t refcnt;
+	atomic_refcount_t refcnt;
 
 	/** Device which this function belogs to */
