sh: rtc-generic support.
This adds rtc-generic support for SUPERH32. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
@@ -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);
|
|||||||
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 @@
|
|||||||
#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)
|
|||||||
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
|
|||||||
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
|
||||||
|
Reference in New Issue
Block a user