Index: uspace/drv/time/cmos-rtc/cmos-rtc.c
===================================================================
--- uspace/drv/time/cmos-rtc/cmos-rtc.c	(revision 0a586f4c9bfafe682793df920734f321031dad5a)
+++ uspace/drv/time/cmos-rtc/cmos-rtc.c	(revision b801f2d6becda84795177e84564a610b886dbea0)
@@ -100,4 +100,6 @@
 static time_t uptime_get(void);
 static bool is_battery_ok(rtc_t *rtc);
+static int  rtc_fun_online(ddf_fun_t *fun);
+static int  rtc_fun_offline(ddf_fun_t *fun);
 
 static ddf_dev_ops_t rtc_dev_ops;
@@ -107,4 +109,6 @@
 	.dev_add = rtc_dev_add,
 	.dev_remove = rtc_dev_remove,
+	.fun_online = rtc_fun_online,
+	.fun_offline = rtc_fun_offline,
 };
 
@@ -638,4 +642,10 @@
 	fibril_mutex_unlock(&rtc->mutex);
 
+	rc = rtc_fun_offline(rtc->fun);
+	if (rc != EOK) {
+		ddf_msg(LVL_ERROR, "Failed to offline function");
+		return rc;
+	}
+
 	rc = ddf_fun_unbind(rtc->fun);
 	if (rc != EOK) {
@@ -726,4 +736,18 @@
 }
 
+static int
+rtc_fun_online(ddf_fun_t *fun)
+{
+	ddf_msg(LVL_DEBUG, "rtc_fun_online()");
+	return ddf_fun_online(fun);
+}
+
+static int
+rtc_fun_offline(ddf_fun_t *fun)
+{
+	ddf_msg(LVL_DEBUG, "rtc_fun_offline()");
+	return ddf_fun_offline(fun);
+}
+
 int
 main(int argc, char **argv)
