Index: uspace/drv/time/cmos-rtc/cmos-rtc.c
===================================================================
--- uspace/drv/time/cmos-rtc/cmos-rtc.c	(revision 78ca12bb873f31215de96124a91ff88bc6fde8c7)
+++ uspace/drv/time/cmos-rtc/cmos-rtc.c	(revision 917797f1cec4a09619bf92bcb7aaec9ac4de9839)
@@ -46,8 +46,8 @@
 #include <ddf/log.h>
 #include <ops/clock_dev.h>
+#include <ops/battery_dev.h>
 #include <fibril_synch.h>
 #include <device/hw_res.h>
 #include <macros.h>
-#include <ipc/clock_ctl.h>
 #include <time.h>
 
@@ -94,6 +94,4 @@
 static unsigned bcd2bin(unsigned bcd);
 static unsigned bin2bcd(unsigned binary);
-static void rtc_default_handler(ddf_fun_t *fun,
-    ipc_callid_t callid, ipc_call_t *call);
 static int rtc_dev_remove(ddf_dev_t *dev);
 static void rtc_register_write(rtc_t *rtc, int reg, int data);
@@ -120,4 +118,10 @@
 };
 
+/** Battery powered device interface */
+static battery_dev_ops_t rtc_battery_dev_ops = {
+	.battery_status_get = NULL,
+	.battery_charge_level_get = NULL,
+};
+
 /** Obtain soft state structure from device node */
 static rtc_t *
@@ -144,5 +148,6 @@
 
 	rtc_dev_ops.interfaces[CLOCK_DEV_IFACE] = &rtc_clock_dev_ops;
-	rtc_dev_ops.default_handler = &rtc_default_handler;
+	rtc_dev_ops.interfaces[BATTERY_DEV_IFACE] = &rtc_battery_dev_ops;
+	rtc_dev_ops.default_handler = NULL;
 }
 
@@ -597,26 +602,4 @@
 }
 
-/** Default handler for client requests not handled
- *  by the standard interface
- */
-static void
-rtc_default_handler(ddf_fun_t *fun, ipc_callid_t callid, ipc_call_t *call)
-{
-	sysarg_t method = IPC_GET_IMETHOD(*call);
-	rtc_t *rtc = fun_rtc(fun);
-	bool batt_ok;
-
-	switch (method) {
-	case CLOCK_GET_BATTERY_STATUS:
-		/* Get the RTC battery status */
-		batt_ok = rtc_register_read(rtc, RTC_STATUS_D) &
-		    RTC_D_BATTERY_OK;
-		async_answer_1(callid, EOK, batt_ok);
-		break;
-	default:
-		async_answer_0(callid, ENOTSUP);
-	}
-}
-
 /** Open the device
  *
