fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / sh / boards / sh03 / rtc.c
index cbeca70..0a9266b 100644 (file)
@@ -9,9 +9,11 @@
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/time.h>
-#include <asm/io.h>
+#include <linux/bcd.h>
 #include <linux/rtc.h>
 #include <linux/spinlock.h>
+#include <asm/io.h>
+#include <asm/rtc.h>
 
 #define RTC_BASE       0xb0000000
 #define RTC_SEC1       (RTC_BASE + 0)
 #define RTC_BUSY       1
 #define RTC_STOP       2
 
-#ifndef BCD_TO_BIN
-#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
-#endif
-
-#ifndef BIN_TO_BCD
-#define BIN_TO_BCD(val)        ((val)=(((val)/10)<<4) + (val)%10)
-#endif
-
-extern void (*rtc_get_time)(struct timespec *);
-extern int (*rtc_set_time)(const time_t);
 extern spinlock_t rtc_lock;
 
 unsigned long get_cmos_time(void)
 {
        unsigned int year, mon, day, hour, min, sec;
-       int i;
 
        spin_lock(&rtc_lock);
  again:
-       for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */
-               if (!(ctrl_inb(RTC_CTL) & RTC_BUSY))
-                       break;
        do {
                sec  = (ctrl_inb(RTC_SEC1) & 0xf) + (ctrl_inb(RTC_SEC10) & 0x7) * 10;
                min  = (ctrl_inb(RTC_MIN1) & 0xf) + (ctrl_inb(RTC_MIN10) & 0xf) * 10;
@@ -139,6 +127,6 @@ int sh03_rtc_settimeofday(const time_t secs)
 
 void sh03_time_init(void)
 {
-       rtc_get_time = sh03_rtc_gettimeofday;
-       rtc_set_time = sh03_rtc_settimeofday;
+       rtc_sh_get_time = sh03_rtc_gettimeofday;
+       rtc_sh_set_time = sh03_rtc_settimeofday;
 }