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

sh: rtc-generic support.



This adds rtc-generic support for SUPERH32.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 5be7c0a4
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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"
+11 −0
Original line number Original line Diff line number Diff line
@@ -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 {
+23 −0
Original line number Original line Diff line number Diff line
@@ -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)
{
{
+1 −1
Original line number Original line Diff line number Diff line
@@ -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