parisc: Improve error return codes when setting rtc time
authorHelge Deller <deller@gmx.de>
Sat, 17 Oct 2020 18:13:06 +0000 (20:13 +0200)
committerHelge Deller <deller@gmx.de>
Thu, 22 Oct 2020 20:44:27 +0000 (22:44 +0200)
The HP 730 machine returned strange errors when I tried setting the rtc
time.  Add some debug code to improve the possibility to trace errors
and document that hppa probably has as Y2k38 problem.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/time.c

index 0450815..13d94f0 100644 (file)
@@ -180,9 +180,16 @@ static int rtc_generic_get_time(struct device *dev, struct rtc_time *tm)
 static int rtc_generic_set_time(struct device *dev, struct rtc_time *tm)
 {
        time64_t secs = rtc_tm_to_time64(tm);
-
-       if (pdc_tod_set(secs, 0) < 0)
+       int ret;
+
+       /* hppa has Y2K38 problem: pdc_tod_set() takes an u32 value! */
+       ret = pdc_tod_set(secs, 0);
+       if (ret != 0) {
+               pr_warn("pdc_tod_set(%lld) returned error %d\n", secs, ret);
+               if (ret == PDC_INVALID_ARG)
+                       return -EINVAL;
                return -EOPNOTSUPP;
+       }
 
        return 0;
 }