Merge tag 'sh-for-4.8' of git://git.libc.org/linux-sh
[deliverable/linux.git] / arch / sh / kernel / time.c
index bfe1de98d003f7f377b4a3013d4c7469b6c885c2..fcd5e41977d176709c3c8d14d89e32e31b4791c8 100644 (file)
@@ -49,27 +49,31 @@ int update_persistent_clock(struct timespec now)
 }
 #endif
 
-unsigned int get_rtc_time(struct rtc_time *tm)
+static int rtc_generic_get_time(struct device *dev, struct rtc_time *tm)
 {
-       if (rtc_sh_get_time != null_rtc_get_time) {
-               struct timespec tv;
+       struct timespec tv;
 
-               rtc_sh_get_time(&tv);
-               rtc_time_to_tm(tv.tv_sec, tm);
-       }
-
-       return RTC_24H;
+       rtc_sh_get_time(&tv);
+       rtc_time_to_tm(tv.tv_sec, tm);
+       return 0;
 }
-EXPORT_SYMBOL(get_rtc_time);
 
-int set_rtc_time(struct rtc_time *tm)
+static int rtc_generic_set_time(struct device *dev, struct rtc_time *tm)
 {
        unsigned long secs;
 
        rtc_tm_to_time(tm, &secs);
-       return rtc_sh_set_time(secs);
+       if ((rtc_sh_set_time == null_rtc_set_time) ||
+           (rtc_sh_set_time(secs) < 0))
+               return -EOPNOTSUPP;
+
+       return 0;
 }
-EXPORT_SYMBOL(set_rtc_time);
+
+static const struct rtc_class_ops rtc_generic_ops = {
+       .read_time = rtc_generic_get_time,
+       .set_time = rtc_generic_set_time,
+};
 
 static int __init rtc_generic_init(void)
 {
@@ -78,7 +82,10 @@ static int __init rtc_generic_init(void)
        if (rtc_sh_get_time == null_rtc_get_time)
                return -ENODEV;
 
-       pdev = platform_device_register_simple("rtc-generic", -1, NULL, 0);
+       pdev = platform_device_register_data(NULL, "rtc-generic", -1,
+                                            &rtc_generic_ops,
+                                            sizeof(rtc_generic_ops));
+
 
        return PTR_ERR_OR_ZERO(pdev);
 }
This page took 0.048796 seconds and 5 git commands to generate.