patch-2.4.18 linux/arch/sh/kernel/rtc.c
Next file: linux/arch/sh/kernel/sh_ksyms.c
Previous file: linux/arch/sh/kernel/pci-7751se.c
Back to the patch index
Back to the overall index
- Lines: 44
- Date:
Fri Dec 21 18:00:38 2001
- Orig file:
linux.orig/arch/sh/kernel/rtc.c
- Orig date:
Mon Feb 18 20:18:39 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/arch/sh/kernel/rtc.c linux/arch/sh/kernel/rtc.c
@@ -46,7 +46,7 @@
} while ((ctrl_inb(RCR1) & RCR1_CF) != 0);
#if RTC_BIT_INVERTED != 0
- /* Work around to avoid reading correct value. */
+ /* Work around to avoid reading incorrect value. */
if (sec128 == RTC_BIT_INVERTED) {
schedule_timeout(1);
goto again;
@@ -81,12 +81,18 @@
goto again;
}
+#if RTC_BIT_INVERTED != 0
+ if ((sec128 & RTC_BIT_INVERTED))
+ sec--;
+#endif
+
tv->tv_sec = mktime(yr100 * 100 + yr, mon, day, hr, min, sec);
- tv->tv_usec = ((sec128 ^ RTC_BIT_INVERTED) * 1000000) / 128;
+ tv->tv_usec = (sec128 * 1000000) / 128;
}
-static int set_rtc_time(unsigned long nowtime)
+int sh_rtc_settimeofday(const struct timeval *tv)
{
+ unsigned long nowtime = tv->tv_sec;
int retval = 0;
int real_seconds, real_minutes, cmos_minutes;
@@ -122,13 +128,4 @@
ctrl_outb(RCR2_RTCEN|RCR2_START, RCR2); /* Start RTC */
return retval;
-}
-
-int sh_rtc_settimeofday(const struct timeval *tv)
-{
-#if RTC_BIT_INVERTED != 0
- /* This is not accurate, but better than nothing. */
- schedule_timeout(HZ/2);
-#endif
- return set_rtc_time(tv->tv_sec);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)