Commit 47c8a08b authored by Paul Mundt's avatar Paul Mundt

sh: rtc-generic support.

This adds rtc-generic support for SUPERH32.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 5be7c0a4
...@@ -30,6 +30,7 @@ config SUPERH32 ...@@ -30,6 +30,7 @@ config SUPERH32
select HAVE_DYNAMIC_FTRACE select HAVE_DYNAMIC_FTRACE
select HAVE_ARCH_KGDB select HAVE_ARCH_KGDB
select ARCH_HIBERNATION_POSSIBLE if MMU select ARCH_HIBERNATION_POSSIBLE if MMU
select RTC_LIB
config SUPERH64 config SUPERH64
def_bool ARCH = "sh64" def_bool ARCH = "sh64"
......
...@@ -6,6 +6,17 @@ extern void (*board_time_init)(void); ...@@ -6,6 +6,17 @@ extern void (*board_time_init)(void);
extern void (*rtc_sh_get_time)(struct timespec *); extern void (*rtc_sh_get_time)(struct timespec *);
extern int (*rtc_sh_set_time)(const time_t); extern int (*rtc_sh_set_time)(const time_t);
/* some dummy definitions */
#define RTC_BATT_BAD 0x100 /* battery bad */
#define RTC_SQWE 0x08 /* enable square-wave output */
#define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */
#define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */
#define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */
struct rtc_time;
unsigned int get_rtc_time(struct rtc_time *);
int set_rtc_time(struct rtc_time *);
#define RTC_CAP_4_DIGIT_YEAR (1 << 0) #define RTC_CAP_4_DIGIT_YEAR (1 << 0)
struct sh_rtc_platform_info { struct sh_rtc_platform_info {
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/mc146818rtc.h> /* for rtc_lock */ #include <linux/mc146818rtc.h> /* for rtc_lock */
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/rtc.h>
#include <asm/clock.h> #include <asm/clock.h>
#include <asm/rtc.h> #include <asm/rtc.h>
#include <asm/timer.h> #include <asm/timer.h>
...@@ -45,6 +46,28 @@ static int null_rtc_set_time(const time_t secs) ...@@ -45,6 +46,28 @@ static int null_rtc_set_time(const time_t secs)
void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time;
int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time;
unsigned int get_rtc_time(struct rtc_time *tm)
{
if (rtc_sh_get_time != null_rtc_get_time) {
struct timespec tv;
rtc_sh_get_time(&tv);
rtc_time_to_tm(tv.tv_sec, tm);
}
return RTC_24H;
}
EXPORT_SYMBOL(get_rtc_time);
int set_rtc_time(struct rtc_time *tm)
{
unsigned long secs;
rtc_tm_to_time(tm, &secs);
return rtc_sh_set_time(secs);
}
EXPORT_SYMBOL(set_rtc_time);
#ifndef CONFIG_GENERIC_TIME #ifndef CONFIG_GENERIC_TIME
void do_gettimeofday(struct timeval *tv) void do_gettimeofday(struct timeval *tv)
{ {
......
...@@ -692,7 +692,7 @@ config RTC_DRV_GENERIC ...@@ -692,7 +692,7 @@ config RTC_DRV_GENERIC
tristate "Generic RTC support" tristate "Generic RTC support"
# Please consider writing a new RTC driver instead of using the generic # Please consider writing a new RTC driver instead of using the generic
# RTC abstraction # RTC abstraction
depends on PARISC || M68K || PPC depends on PARISC || M68K || PPC || SUPERH32
help help
Say Y or M here to enable RTC support on systems using the generic Say Y or M here to enable RTC support on systems using the generic
RTC abstraction. If you do not know what you are doing, you should RTC abstraction. If you do not know what you are doing, you should
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment