void aica_time_init(void)
{
- rtc_get_time = aica_rtc_gettimeofday;
- rtc_set_time = aica_rtc_settimeofday;
+ rtc_sh_get_time = aica_rtc_gettimeofday;
+ rtc_sh_set_time = aica_rtc_settimeofday;
}
#include <linux/time.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
+#include <linux/bcd.h>
+#include <asm/rtc.h>
-#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;
extern void
return retval;
}
-
void landisk_time_init(void)
{
- rtc_get_time = landisk_rtc_gettimeofday;
- rtc_set_time = landisk_rtc_settimeofday;
+ rtc_sh_get_time = landisk_rtc_gettimeofday;
+ rtc_sh_set_time = landisk_rtc_settimeofday;
}
void mpc1211_time_init(void)
{
- rtc_get_time = mpc1211_rtc_gettimeofday;
- rtc_set_time = mpc1211_rtc_settimeofday;
+ rtc_sh_get_time = mpc1211_rtc_gettimeofday;
+ rtc_sh_set_time = mpc1211_rtc_settimeofday;
}
#include <linux/sched.h>
#include <linux/time.h>
#include <linux/bcd.h>
-#include <asm/io.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
-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)
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;
}
}
if (use_ds1302) {
- rtc_get_time = snapgear_rtc_gettimeofday;
- rtc_set_time = snapgear_rtc_settimeofday;
+ rtc_sh_get_time = snapgear_rtc_gettimeofday;
+ rtc_sh_set_time = snapgear_rtc_settimeofday;
} else {
- rtc_get_time = sh_rtc_gettimeofday;
- rtc_set_time = sh_rtc_settimeofday;
+ rtc_sh_get_time = sh_rtc_gettimeofday;
+ rtc_sh_set_time = sh_rtc_settimeofday;
}
printk("SnapGear RTC: using %s rtc.\n", use_ds1302 ? "ds1302" : "internal");
/* XXX: Can we initialize this in a routine somewhere? Dreamcast doesn't want
* these routines anywhere... */
#ifdef CONFIG_SH_RTC
-void (*rtc_get_time)(struct timespec *) = sh_rtc_gettimeofday;
-int (*rtc_set_time)(const time_t) = sh_rtc_settimeofday;
+void (*rtc_sh_get_time)(struct timespec *) = sh_rtc_gettimeofday;
+int (*rtc_sh_set_time)(const time_t) = sh_rtc_settimeofday;
#else
-void (*rtc_get_time)(struct timespec *);
-int (*rtc_set_time)(const time_t);
+void (*rtc_sh_get_time)(struct timespec *);
+int (*rtc_sh_set_time)(const time_t);
#endif
/*
xtime.tv_sec > last_rtc_update + 660 &&
(xtime.tv_nsec / 1000) >= 500000 - ((unsigned) TICK_SIZE) / 2 &&
(xtime.tv_nsec / 1000) <= 500000 + ((unsigned) TICK_SIZE) / 2) {
- if (rtc_set_time(xtime.tv_sec) == 0)
+ if (rtc_sh_set_time(xtime.tv_sec) == 0)
last_rtc_update = xtime.tv_sec;
else
/* do it again in 60s */
clk_init();
- if (rtc_get_time) {
- rtc_get_time(&xtime);
+ if (rtc_sh_get_time) {
+ rtc_sh_get_time(&xtime);
} else {
xtime.tv_sec = mktime(2000, 1, 1, 0, 0, 0);
xtime.tv_nsec = 0;
ctrl_outl(0xffffffff, TMU0_TCOR);
ctrl_outl(0xffffffff, TMU0_TCNT);
- rtc_get_time(&ts2);
+ rtc_sh_get_time(&ts2);
do {
- rtc_get_time(&ts1);
+ rtc_sh_get_time(&ts1);
} while (ts1.tv_nsec == ts2.tv_nsec && ts1.tv_sec == ts2.tv_sec);
/* actually start the timer */
ctrl_outb(TMU_TSTR_INIT, TMU_TSTR);
do {
- rtc_get_time(&ts2);
+ rtc_sh_get_time(&ts2);
} while (ts1.tv_nsec == ts2.tv_nsec && ts1.tv_sec == ts2.tv_sec);
freq = 0xffffffff - ctrl_inl(TMU0_TCNT);
extern void sh_rtc_gettimeofday(struct timespec *ts);
extern int sh_rtc_settimeofday(const time_t secs);
extern void (*board_time_init)(void);
-extern void (*rtc_get_time)(struct timespec *);
-extern int (*rtc_set_time)(const time_t);
+extern void (*rtc_sh_get_time)(struct timespec *);
+extern int (*rtc_sh_set_time)(const time_t);
/* RCR1 Bits */
#define RCR1_CF 0x80 /* Carry Flag */