Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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 Diff line number Diff line
@@ -30,6 +30,7 @@ config SUPERH32
	select HAVE_DYNAMIC_FTRACE
	select HAVE_ARCH_KGDB
	select ARCH_HIBERNATION_POSSIBLE if MMU
	select RTC_LIB

config SUPERH64
	def_bool ARCH = "sh64"
+11 −0
Original line number Diff line number Diff line
@@ -6,6 +6,17 @@ extern void (*board_time_init)(void);
extern void (*rtc_sh_get_time)(struct timespec *);
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)

struct sh_rtc_platform_info {
+23 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <linux/mc146818rtc.h>	/* for rtc_lock */
#include <linux/platform_device.h>
#include <linux/smp.h>
#include <linux/rtc.h>
#include <asm/clock.h>
#include <asm/rtc.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;
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
void do_gettimeofday(struct timeval *tv)
{
+1 −1
Original line number Diff line number Diff line
@@ -692,7 +692,7 @@ config RTC_DRV_GENERIC
	tristate "Generic RTC support"
	# Please consider writing a new RTC driver instead of using the generic
	# RTC abstraction
	depends on PARISC || M68K || PPC
	depends on PARISC || M68K || PPC || SUPERH32
	help
	  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